FAQ PHP
FAQ PHPConsultez toutes les FAQ
Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 18 septembre 2021
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 :
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.