FAQ PHP

FAQ PHPConsultez toutes les FAQ
Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 18 septembre 2021
Sommaire→Concepts fréquents→Protocole HTTPLe 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 :
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...
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
<?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() :
header("Location: pagerefus.php");arrêter le script à l'aide de la fonction die() :
die("stop ! espèce d'intrus!");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.
<?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 !).
<?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.



