表单令牌不匹配

时间:2016-10-25 16:55:31

标签: php forms session token

当使用$ token#1提交表单时,令牌匹配,但是当使用$ token#2提交令牌时,不匹配获取" redir" 我有点困惑,为什么会发生这种情况并且不确定我在这里做错了什么

<?php

session_start();
if(isset($_SESSION['token'])){

    if ($_POST['token'] == $_SESSION['token']) {

          echo "login ";        
     }
     else
     {

       echo "redir " ;
     }

}

// 1st test
 // $token  = time();

// 2nd test
 $token  = md5(time().$_SERVER['REMOTE_ADDR']);
 $_SESSION['token'] = $token;

?>                       





      <form action="" method="post">

     <input type="hidden" name="token" value=" <?php echo $token ?> ">
     <input type="text" name="usr">
     <input type="text" name="pass">
     <input type="submit" name="submit" value="send">



</form>







 </body>
 </html>

1 个答案:

答案 0 :(得分:0)

您可以尝试删除引号和令牌回显之间的空格:

<input type="hidden" name="token" value=" <?php echo $token ?> ">

<input type="hidden" name="token" value="<?php echo $token ?>">

另外,您可能第一次遇到因为_SESSION令牌为空。让我们也一定要测试一下:

if (! empty($_SESSION['token'])) {