2009-03-03 10 views
6

Je crée un site Web et sur une page particulière, je veux renvoyer l'utilisateur à la page précédente. Je suis relativement nouveau en PHP/HTML et j'utilise du code existant pour des idées et de l'aide.php/html - http_referer

Le code existant utilise la méthode suivante:

if (! empty($HTTP_REFERER)) 
{ 
    header("Location: $HTTP_REFERER"); 
} else 
{ 
    header("Location: $CFG->wwwroot"); 
} 

Cependant, lorsque j'utilise ce code, le HTTP_Referer est toujours traité comme vide et l'utilisateur redirigé vers la page racine. Des failles évidentes dans ce code?

Répondre

13

Vous devez utiliser:

$_SERVER['HTTP_REFERER'] 
0

Notez également que l'en-tête Referer peut être vide ou manquant de toute façon, vous ne devriez pas compter sur du tout ..

14

Ne comptez pas sur le référent HTTP étant un champ valide ou même non vide. Les gens peuvent choisir de ne pas avoir cet ensemble en laissant des contrôles pour cette variable allant au côté vide de la clause IF-ELSE.

Vous pouvez vous prémunir contre cela en envoyant un paramètre dans les paramètres URL ou POST qui contiendraient une valeur que vous pouvez utiliser pour rediriger l'utilisateur vers.

+3

+1. Les référents sont intrinsèquement peu fiables. Utilisez un paramètre pour indiquer à l'utilisateur où vous voulez aller après le formulaire. – bobince

0

Vous devez utiliser

$_SERVER['HTTP_REFERER'] 

regarder cependant à la configuration register_globals dans le php.ini, il doit être désactivé pour des raisons de sécurité. Vous pouvez lire plus sur PHP Manual site.

1

isset ($ _ SERVER ['HTTP_REFERER'])? $ _SERVER ['HTTP_REFERER']: '';

Questions connexes