【问题标题】:form token not matching表单标记不匹配
【发布时间】:2016-10-25 16:55:31
【问题描述】:

使用 $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)2) 都不是你真实代码的一部分;是吗?
  • 不,他们不是
  • 好的,我稍微修改了一下;那么请看下面的答案。

标签: php forms session token


【解决方案1】:

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

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

试试

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

另外,您可能是第一次通过,因为 _SESSION 令牌是空的。让我们确保也对此进行测试:

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

【讨论】:

    猜你喜欢
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    相关资源
    最近更新 更多