【发布时间】:2016-02-10 16:57:17
【问题描述】:
我有一个 Token 类和方法来获取和检查令牌。
如果我在链接中吐出一个新令牌:
<td><a href="users.php?delete=<?=$user['id'].'&token='.Token::generate();?>
这是类中的函数:
public static function generate(){
return $_SESSION['token'] = base64_encode(openssl_random_pseudo_bytes(32));
}
如果就在该表的下方,我回显 $_SESSION['token'] 它会显示与链接中的完全不同的令牌。我很困惑。
编辑:这是页面的整个部分,显示了初始令牌的创建和回显:
<td><a href="users.php?delete=<?=$user['id'].'&token='.Token::generate();?>" class="btn btn-sm btn-default<?=(($user['id'] == $user_data['id'])?' disabled':'');?>" data-toggle="tooltip" title="delete user"><span class="glyphicon glyphicon-remove"</a></td>
<td><?=$user['full_name'];?></td>
<td><?=$user['email'];?></td>
<td><?=clean_date($user['join_date']);?></td>
<td><?php
if (new DateTime($user['last_login']) < new DateTime("2015-05-15 16:00:00")) {
echo 'Never';
} else {
echo clean_date($user['last_login']);
};?></td>
<td><?=$user['permissions'];?></td>
</tr>
<?php endwhile ;?>
</tbody>
</table>
<?=$_SESSION['token'];?>
还有here's a screenshot showing the two values are completely different
【问题讨论】:
-
我们需要查看更多代码。
-
你可能也在其他地方打电话给
generate。 -
@Flosculus 查看我的编辑
-
您在 while 循环中调用
generate。因此,在每次迭代中,会话都会被覆盖。 -
哦,哇,我是个大白痴。谢谢你……对不起!
标签: php