2010-03-15 5 views
0

Pour une raison quelconque Ce script php echo ne sera pas ma variable cookie:Quel est le problème avec mes cookies?

<?php 
    require 'connection.php'; 
    require 'variables.php'; 

    $name = $_POST['name']; 
    $pass = $_POST['pass']; 

    if(($name == $admin_name) && ($pass == $admin_pass)){ 
     setcookie($forum_url."name",$name,time()+604800); 
     setcookie($forum_url."pass",$pass,time()+604800); 
    } 

    else 
     echo 'Failed'; 
?> 

Heres le code html qui est envoyé à admin_login.php

<form method=post action=admin_login.php> 
      <div id="formdiv"> 
       <div class="fieldtext1">Name</div> 
       <div class="fieldtext1">Pass</div> 
       <input type="text" name=name size=25 /> 
       <input type="password" name=pass size=25 /> 
      </div> 
      <input type=submit value="Submit" id="submitbutton"> 
     </form> 

est l'indice ici, où je veux l'info fait écho

<?php echo $_COOKIE[$forum_url."name"]; ?> 

Qu'est-ce que je fais mal?

+0

En supposant que sur votre page d'index vous incluez le fichier qui définit 'forum_url' $, et que vous avez déjà vérifié pour voir si les témoins sont en train d'être mis en place. – Matchu

+0

Oui, j'ai. .. – William

+7

Pas une réponse à votre question, mais ce que vous faites est très dangereux. Vous stockez le mot de passe de l'utilisateur en texte clair dans le cache de son navigateur. –

Répondre

0

Assurez-vous de définir le chemin du cookie.

Si vous définissez cookie dans un chemin, mais que vous essayez de l'obtenir à partir d'un chemin différent, cela ne fonctionnera pas.

Pouvez-vous me communiquer l'URL de l'index et l'emplacement de cookie?

+0

Aussi, sous-domaines. – Matchu

+0

ils sont définis dans le même domaine et sous-domaine – William

+0

que diriez-vous du chemin? – heisthedon

1

Avez-vous essayé var_dump($_COOKIE) au point où vous essayez de cracher une valeur de cookie spécifique? Est-il possible que $forum_url n'ait pas encore été défini au moment où vous définissez le cookie ou si vous tentez de répercuter sa valeur? Peut-être que le cookie a été mis à name et pass parce que $forum_url est vide.

0

Vérifiez également que les en-têtes n'ont pas déjà été envoyés lors de l'appel setcookie() en affirmant que headers_sent() renvoie false. Définir un cookie se produit dans l'en-tête HTTP, alors assurez-vous de le faire avant que toute sortie est générée.

Par exemple:

<?php require 'connection.php'; require 'variables.php'; ?> 
<h1>Hello world!</h1> 
<?php setcookie($forum_url."name",$name,time()+604800); ?> 

Est-ce pas travail, parce que la production a déjà été passé à travers le corps HTTP par le temps setcookie() est appelé.

0

En fait, j'ai mis en place un test rapide et trouvé que lorsqu'un cookie est stocké, il remplace les périodes avec des traits de soulignement. Donc, si vous avez un domaine comme www.test.comname, il devient www_test_comname. Donc, lorsque vous faites référence au cookie, vous devez faire quelque chose comme ceci:

<?php 
    $forum_url = preg_replace('/\./','_',$forum_url); 
    echo $_COOKIE[$forum_url."name"]; 
?> 



Est-il possible que PHP a un problème concaténer le "nom" FORUM_URL de $ et FORUM_URL de $ « .. passer " à temps pour que setcookie fonctionne correctement?

Essayez quelque chose comme ceci:

<?php 
    require 'connection.php'; 
    require 'variables.php'; 

    $name = $_POST['name']; 
    $pass = $_POST['pass']; 

    $tmp_name_path = $forum_url."name"; 
    $tmp_pass_path = $forum_url."pass" 

    if(($name == $admin_name) && ($pass == $admin_pass)){ 
     setcookie($tmp_name_path,$name,time()+604800); 
     setcookie($tmp_pass_path,$pass,time()+604800); 
    } 

    else 
     echo 'Failed'; 
?>