La variable HTTP_REFERER

Je n'arrive pas l'afficher. J'ai écrit un script pour détecter mes 404, mais il me manque l'adresse de la page manquante.

echo $_SERVER['PHP_SELF'];
echo "
";
echo $_SERVER['SERVER_NAME'];
echo "
";
echo $_SERVER['HTTP_HOST'];
echo "
";
echo $_SERVER['HTTP_REFERER'];
echo "
";
echo $_SERVER['HTTP_USER_AGENT'];
echo "
";
echo $_SERVER['SCRIPT_NAME'];
?>

J'ai mis cela dans ma page 404.
Je saisis monsite.com/nimportekoi
Je suis redirigé vers ma page 404, et le script ci-dessus marche, sauf pour la variable HTTP_REFERER. Je ne comprends pas pourquoi…

voir tes variables server:
```text
echo "

\n";
print_r( $_SERVER );
echo "
\n";
```

Je crois que pour que HTTP_REFERER soit valorisée il faut que l'accès à ta page se fasse depuis une autre page source via un lien. Si tu saisis directement ta page dans le navigateur, elle n'est pas valorisée.
A vérifier.

Bonjour,

Cette variable sera initialisée via un rechargement de la page php après un post par exemple comme le dit ManuelD1.
Je n'ai jamais eu de problème avec cette variable Server !

Que c'est compliqué ! tu cherches une adresse manquante vérifie plutôt les url dans tes lignes de programme.

vérifier cette variable…
rien n'est précisé sur l'hébergement, il ne faut pas donc pas se contenter de son expérience d'un site


HTTPREFERER


Oui, bonne idée . J'ai testé le serveur.
Je trouve une liste de paramètres, mais HTTP_REFERER n'y est pas...
Mince !

quel est ton hébergement?
tu n'as pas une variable de remplacement?
tu as bien un Referer?

Oui, il y a un referer, mais il ne s'affiche pas si j'appelle la page toute seule, il faut qu'il y ait un lien, sans lien, même le nom de la variable ne s'affiche pas !
https://www.moteurnature.net/aaaa.php https://www.moteurnature.net/aaaa.php
Je viens de le découvrir ici, en testant le lien…

quel est ton offre d'hébergement?

il y a un schmil, php5.6 dans Server, 7.2 dans phpinfo()…

testé sur un hébergement perso qui semble ressembler à ton type d&#39;hébergement<br /><br />en http:<br />&#96;&#96;&#96;text<br />    [HTTP_DNT] &#61;&gt; 1<br />    [HTTP_REFERER] &#61;&gt; http://xxx.cluster026.hosting.ovh.net/<br />    [HTTP_ACCEPT_ENCODING] &#61;&gt; gzip, deflate<br />&#96;&#96;&#96;<br />en https:<br />&#96;&#96;&#96;text<br />    [HTTP_DNT] &#61;&gt; 1<br />    [HTTP_ACCEPT_ENCODING] &#61;&gt; gzip, deflate, br<br />&#96;&#96;&#96;<br />bug Ovh, on perd le referer en http **S**...<br />mais toi, https ou http, tu n&#39;a rien :(<br /><br />je n&#39;ai pas de cluster05 à tester sous la souris<br />quel est le contenu de ton &#96;.ovhconfig&#96; ?<br /><br />le mien:<br />&#96;&#96;&#96;text<br />app.engine&#61;php<br />app.engine.version&#61;7.2<br />http.firewall&#61;none<br />environment&#61;production<br />container.image&#61;stable<br />&#96;&#96;&#96;

Oui, il y a un referer, mais il ne s'affiche pas si j'appelle la page toute seule, il faut qu'il y ait un lien, sans lien, même le nom de la variable ne s'affiche pas !
https://www.moteurnature.net/aaaa.php
Je viens de le découvrir ici, en testant le lien...


C'est donc bien ce que j'indiquais plus haut.

> C'est donc bien ce que j'indiquais plus haut.

regarde mon test… la variable doit exister, mais si vide

Ce que souhaite @LaurentM8 c'est utiliser la valeur de cette variable, donc qu'elle soit présente, isset(…), et valorisée.
Voici mon expérience sur un hébergement Perf1, en HTTP et HTTPS (j'utilise la variable HTTP_REFERER depuis plusieurs années).
Si la page est appelée directement dans la barre d'adresse du navigateur alors $_SERVER['HTTPREFERER'] n'est pas présente (!isset(…) ou non valorisée (vide), peu importe le résultat est le même.
Si la page est appelée via un lien ou un formulaire, alors elle est présente et valorisée.
HTTP et/ou HTTPS

lis…
différence entre deux hébergements mutu ovh
différence entre deux protocoles
cette variabilité est anormale, mais on ne sait toujours l'hébergement utilisé ni la configuration

@kyodev il y a confusion, je ne m'adressais pas à toi mais à @LaurentM8

y'a pas confusion… tu affirmes sur 1 expé, la tienne sur ton hébergement

laurent s'étonne de son absence


Je n'arrive pas l'afficher


pas grave en soi, moi je teste et m'étonne aussi

Je suis en Perf1 avec php 7.2.
Je regarde pour php5.6 dans Server, je comprends pas là…

Je viens de passer en PHP 7.3…

> Je regarde pour php5.6 dans Server, je comprends pas là…

même si tu te mets en php7.3 je vois

je viens de tester, toujours sur le cluster26, mais avec un un perf2014x1
je n'ai pas de variable ` [PHP_VER]`, en php 7.2 ou 7.3

une particularité du cluster05 ou de ton `.ovhconfig`?

edit: idem sur un vieux premium 2010 (équivalent à un vieux Perf) sur le cluster11, pas de `` [PHP_VER]`

Bonjour,

Pour information cette variable c'est le navigateur qui la transmet lors de la requête et seulement si on viens d'une autre page.
Certains navigateur peuvent ne pas la renseigner dans certains cas (ouverture d'une pop-up par exemple).

Et enfin cette variable est généralementnon transmise en HTTPS.

Sources :
- https://www.php.net/manual/fr/reserved.variables.server.php
- https://stackoverflow.com/questions/36240145/how-to-use-serverhttp-referer-correctly-in-php
- https://stackoverflow.com/questions/6880659/in-what-cases-will-http-referer-be-empty
- https://developer.mozilla.org/fr/docs/Web/Security/Referer_header:_privacy_and_security_concerns

Cordialement, janus57