2011-07-15 9 views
0
//Check against CSFR here 
      $key = md5(uniqid(rand(), TRUE)); 
      //$key = "234"; //using this works but not the idea 
      $_SESSION['key'] = $key; 


//form 
<form method="post" action="<?php echo HTTPF; ?>/complete_reg"> 
     <p> 
      <label> 
       <b>Email address:</b><br /> 
       <input type="text" id="user_email" name="user_email" value="" class="register_email" onblur='$("#checkid").html("Please wait..."); $.get("er_checkuser.php",{ cmd: "check", check_key: $("#check_key").val(), user: $("#user_email").val() } ,function(data){ $("#checkid").html(data); });' /> 
      </label> 
      <input type="hidden" id="check_key" name="check_key" value="<?php echo $key; ?>" /> 
      <span style="color:red; font: bold 12px verdana; " id="checkid" ></span> 

     </p> 

//calling page 
//er_checkuser.php 
foreach($_GET as $key => $value) { 
    $get[$key] = filter($value); 
} 

//For some reasons I don't know why the values are not the same but they should be 
if ($get['check_key'] == $_SESSION['key']) 

{ 

    echo $_SESSION['key']; 
    echo "<br>"; 
    echo $get['check_key']; 
} 
+2

私はどこにでも... –

+0

は、ページ(図示せず) –

答えて

1

$ _SESSION配列を使用する前にsession_start()を呼び出していますか?

+0

を呼び出すことを確認し'のsession_start()の冒頭にsession_start()があります)(のsession_startを見ることができません'$ _SESSION'変数です。 –

2

ああ私は問題がどこにあるか知っていると思う:あなたはすべてのページに新しいキー新しいキーを作成する。したがって、フォームを送信するときに新しいキーを作成することもできます。あなたは何をすべき

は次のとおりです。

if(!isset($_GET['check_key']) { 
    $key = md5(uniqid(rand(), TRUE)); 
    $_SESSION['key'] = $key; 
} 
+0

これを行うと、$ get ['check_key']には呼び出しページに値がありません。 –

1

あなたのPHPスクリプトの先頭にsession_start()を呼び出す必要がありますか他の私は動作しません。

のsession_start()は、セッションを作成または にGETまたはPOST要求を介して渡されたセッション識別子をベースと現在のを再開し、または クッキーを介して渡されます。

これを見ると、セッションを使用するvideo from nettuts to learn how to create login systemと表示される場合があります。使用しようとしている各ページに `;

関連する問題