FAQ PHPConsultez toutes les FAQ

Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 29 juillet 2013 

 
OuvrirSommaireConcepts fréquentsProtocole HTTP

Le rôle des en-têtes est d'échanger des méta-informations (informations à propos des informations échangées que sont les pages html générées ou non dynamiquement à partir de PHP) entre le serveur et le client.

Exemples d'en-têtesServer: Apache/1.3.9 (Unix) Debian/GNU qui renseigne le client sur la nature du serveur distant
Last-Modified: Sun, 07 Apr 2002 14:30:30 GMT qui donne la date de dernière modification du document

Envoyer des en-têtes La commande header() du PHP permet l'envoi d'en-têtes personnalisés.
Par exemple :

 
Sélectionnez
header("Location: home2.php3");

pour rediriger le navigateur sur la page "home2.php3"

Les en-têtes peuvent servir à la redirection, à l'authentification, à l'envoi d'images au navigateur...

Mis à jour le 3 août 2008  par Cyberzoide

Lien : Le Protocole HTTP

Pour effectuer une authentification HTTP, vous pouvez utiliser un fichier .htaccess, mais vous pouvez également le faire au travers d'un script PHP en renvoyant au navigateur les en-têtes HTTP adéquats

 
Sélectionnez
<?php
  if(!isset($_SERVER['PHP_AUTH_USER'])) {
    Header("WWW-Authenticate: Basic realm=\"mon domaine\"");
    Header("HTTP/1.0 401 Unauthorized");
    echo "dommage\n";
    exit;
  } else {
    echo "salut " . $_SERVER['PHP_AUTH_USER'] . "<br />";
    echo "ton mot de passe est : " . $_SERVER['PHP_AUTH_PW'] ;
  }
?>

La fonction header() envoie des en-têtes HTTP au navigateur.
Ce dernier, en voyant "WWW-Authenticate", va afficher une petite boite de dialogue pour la saisie du login et du mot de passe qui seront mis respectivement dans les variables d'environnement de PHP : $_SERVER['PHP_AUTH_USER'] et $_SERVER['PHP_AUTH_PW'].

Une fois les login et mot de passe du visiteur récupérés, il faut les controler (avec une base de données par exemple).
Si l'authentification a échoué (l'utilisateur n'est pas dans la base par exemple), il y a plusieurs choix possibles :
le rediriger à l'aide la fonction header() :

 
Sélectionnez
header("Location: pagerefus.php");

arrêter le script à l'aide de la fonction die() :

 
Sélectionnez
die("stop ! espèce d'intrus!");
Mis à jour le 3 août 2008  par Cyberzoide

Toutes les informations concernant le navigateur utilisé par l'internaute se trouvent dans l'élément HTTP_USER_AGENT du tableau $_SERVER (register_globals = Off dans le php.ini) ou dans la variable $HTTP_USER_AGENT (register_globals = On).

A vous ensuite d'utiliser les fonctions de manipulation des chaînes de caractères pour extraire les infos qui vous intéressent.

Mis à jour le 3 août 2008  par Jérôme
 
Sélectionnez
<?php
$user_agent = getenv("HTTP_USER_AGENT");

if ((strpos($user_agent, "Nav") !== FALSE) || (strpos($user_agent, "Gold") !== FALSE) ||
(strpos($user_agent, "X11") !== FALSE) || (strpos($user_agent, "Mozilla") !== FALSE) ||
(strpos($user_agent, "Netscape") !== FALSE)
AND (!strpos($user_agent, "MSIE") !== FALSE) 
AND (!strpos($user_agent, "Konqueror") !== FALSE)
AND (!strpos($user_agent, "Firefox") !== FALSE)
AND (!strpos($user_agent, "Safari") !== FALSE))
        $browser = "Netscape";
elseif (strpos($user_agent, "Opera") !== FALSE)
        $browser = "Opera";
elseif (strpos($user_agent, "MSIE") !== FALSE)
        $browser = "MSIE";
elseif (strpos($user_agent, "Lynx") !== FALSE)
        $browser = "Lynx";
elseif (strpos($user_agent, "WebTV") !== FALSE)
        $browser = "WebTV";
elseif (strpos($user_agent, "Konqueror") !== FALSE)
        $browser = "Konqueror";
elseif (strpos($user_agent, "Safari") !== FALSE)
        $browser = "Safari";
elseif (strpos($user_agent, "Firefox") !== FALSE)
        $browser = "Firefox";
elseif ((stripos($user_agent, "bot") !== FALSE) || (strpos($user_agent, "Google") !== FALSE) ||
(strpos($user_agent, "Slurp") !== FALSE) || (strpos($user_agent, "Scooter") !== FALSE) ||
(stripos($user_agent, "Spider") !== FALSE) || (stripos($user_agent, "Infoseek") !== FALSE))
        $browser = "Bot";
else
        $browser = "Autre";

/* ** Affichage par exemple du navigateur
* ou insertion dans base de données pour statistiques
* */
echo $browser;

Je pense que c'est assez explicite, cette méthode de procéder est beaucoup plus sûre que d'employer la fonction get_browser() qui a besoin du fichier browscap.ini (son gros problème est qu'elle ne reconnaît pas le navigateur si plusieurs sont installés sur le système !).

Mis à jour le 3 août 2008  par Julp, Husqvarna, Guillaume Rossolini
 
Sélectionnez
<?php
$user_agent = getenv("HTTP_USER_AGENT");

if (strpos($user_agent, "Win") !== FALSE)
    $os = "Windows";
elseif ((strpos($user_agent, "Mac") !== FALSE) || (strpos($user_agent, "PPC") !== FALSE))
    $os = "Mac";
elseif (strpos($user_agent, "Linux") !== FALSE)
    $os = "Linux";
elseif (strpos($user_agent, "FreeBSD") !== FALSE)
    $os = "FreeBSD";
elseif (strpos($user_agent, "SunOS") !== FALSE)
    $os = "SunOS";
elseif (strpos($user_agent, "IRIX") !== FALSE)
    $os = "IRIX";
elseif (strpos($user_agent, "BeOS") !== FALSE)
    $os = "BeOS";
elseif (strpos($user_agent, "OS/2") !== FALSE)
    $os = "OS/2";
elseif (strpos($user_agent, "AIX") !== FALSE)
    $os = "AIX";
else
    $os = "Autre";
/*** Après on fait ce qu'on souhaite de l'information :
* affichage, stockage dans une base de données ...
**/
echo $os;

Pour savoir quel système d'exploitation est utilisé par le visiteur, il faut tester les différents systèmes d'exploitation grâce à la fonction ereg() sur la variable $HTTP_USER_AGENT qui renvoie plusieurs informations sur le client.

Mis à jour le 3 août 2008  par Julp
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2003 Developpez.com Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.