web-dev-qa-db-fra.com

Résultat de $ _SERVER ['HTTP_REFERER'], lorsque l'en-tête du référent n'est pas envoyé au serveur

Lorsque le navigateur envoie des informations d’en-tête au serveur, $_SERVER['HTTP_REFERER'] devrait nous indiquer l’URL de la page précédente, non?

Que renvoie de $_SERVER['HTTP_REFERER'], lorsque les informations d'en-tête ne sont pas envoyées au serveur? chaîne vide? faux? nul? ou... ?

13
OTAR

Si l'en-tête de demande de référent HTTP n'est pas envoyé, le $_SERVER['HTTP_REFERER'] n'est probablement pas défini, bien qu'il puisse s'agir d'une chaîne vide. Que ce soit défini ou non dans ce cas pourrait dépendre du serveur.

Comme pour tous les en-têtes de requête HTTP, vérifiez son existence en lisant:

$httpReferer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;
12
MrWhite

$_SERVER['HTTP_REFERER'] n'est pas vraiment fiable car un paramètre particulier sur le navigateur de l'utilisateur pourrait le casser. Mais oui, il devrait contenir l'URL précédente et il renverra une chaîne vide ou NULL lorsque les en-têtes ne sont pas envoyés, en fonction de la configuration du serveur.

4
Shoe

$ _SERVER est une variable de tableau globale et la valeur du référent est un élément du tableau avec la clé HTTP_REFERER. Si aucun en-tête n'est envoyé par le navigateur, l'élément est simplement absent du tableau. Vous pouvez vérifier si un tableau a un élément avec array_key_exists ; dans ce cas:

array_key_exists('HTTP_REFERER', $_SERVER)

0
wau