该脚本不能在php中使用令牌验证



脚本不能在php中使用令牌验证:

<?php
session_start();
if (empty($_SESSION['token'])) {
$_SESSION['token'] = bin2hex(random_bytes(32));
};
if($_POST['token']==$_SESSION['token']){
session_destroy();
header('location: ../index.php');
};
?>
<form action="configs/logout.php" method="POST">
<input type="hidden" name="token" value="<?php $_SESSION['token']; ?>">
<button class="nav-link" type="submit">LogOut</button>
</form>

但是如果我删除令牌验证,一切都可以工作。在我看来,这是由于session_destroy在触发令牌检查之前被触发。

注销时需要令牌验证吗?Laravel为所有表单添加了它,所以我决定也这么做。

乌利希期刊指南。我也试过这样做(使用unset),但在第一种情况下,它只是转到configs/logout.php选项卡,什么也没发生:

<?php
session_start();
if(empty($_SESSION['token'])) {
$_SESSION['token'] = bin2hex(random_bytes(32));
};
if($_POST['token']==$_SESSION['token']){
unset($_SESSION['user']);
header('location: ../index.php');
};
?>

$_SESSION['user']-用户授权时出现。

将表单中的value="<?php $_SESSION['token']; ?>"更改为:

value="<?php echo $_SESSION['token']; ?>"

如果你忘记添加echo

相关内容

  • 没有找到相关文章

最新更新