脚本不能在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