2014-07-20 5 views
-2
ignore

j'ai créé un login et système inscription avec des fichiers comme: register.php action pour la forme est do_register.php login.php action pour la forme est do_login.php et je ne veux pas l'utilisateur d'accéder au do_register.php ou do_login.php uniquement s'ils sont redirigés par register.php ou login.php. donc je bien à propos bloking accès par HTTP_REFERER voici les lignes:PHP est mon HTTP_REFERER

$refer=$_SERVER ['HTTP_REFERER']; 
if($refer!= "http://www.example.com/register.php") 
{ 
header("location:index.php"); 
} 

mais le problème qu'il ne bloque pas l'accès.

+0

Quelle est la valeur de 'refer' de $? – tjati

+0

$ refer = $ _ SERVER ['HTTP_REFERER']; – user3857672

+2

Stop. Vous ne pouvez pas dépendre de 'referer'. Jetez ce code et utilisez la protection CSRF nonce à la place. – Quentin

Répondre

2

Vous ne pouvez pas utiliser le référent pour effectuer ce type de vérification. Faites plutôt une condition sur les champs POST. Je suppose que vous avez un bouton de soumission. Plutôt vérifier avec

if ($_POST['submitbutton_name']) 

C'est une manière très commune de faire ceci.

donc le code complet serait:

if(!$_POST['submitbutton_name']) { 
    header("location:index.php"); 
    exit(); 
} 
+1

et toujours faire 'die();' après avoir appelé l'en-tête avec l'argument de localisation –

+2

ou exit() ;;) Je finissais ma réponse mais bien sûr :) –

+0

Ouais c'est la solution, je l'utilisais déjà si l'action est sur le même fichier .. Merci. – user3857672

Questions connexes