PHP 令牌确认很奇怪
Strange thing with PHP token confirmation
在提交表单之前,我检查令牌是否匹配,如下所示:
if (empty($_SESSION['token'])) {
$_SESSION['token'] = bin2hex(random_bytes(32));
};
if($request->token==$_SESSION['token']){
..some code..
}else{
echo "Token confirmation error!";
}
HTML:
<input class="mt-1 mb-1" type="hidden" name="token" value="<?php if($_SESSION['token']){echo $_SESSION['token'];}else{echo '';}; ?>">
并且由于某种原因,else
总是被触发,尽管理论上应该在发送数据时进行检查。可能是什么问题?
UPD.And 此外,错误文本始终显示在页面顶部,尽管我使用 responseText(ajax request)
和 bootstrap toasts
.
显示所有通知
问题已通过添加 $request 是否存在的检查解决。
if($request){//This one
if($request->token==$_SESSION['token']){
...some code...
}else{
echo "Token confirmation error!";
};
};
在提交表单之前,我检查令牌是否匹配,如下所示:
if (empty($_SESSION['token'])) {
$_SESSION['token'] = bin2hex(random_bytes(32));
};
if($request->token==$_SESSION['token']){
..some code..
}else{
echo "Token confirmation error!";
}
HTML:
<input class="mt-1 mb-1" type="hidden" name="token" value="<?php if($_SESSION['token']){echo $_SESSION['token'];}else{echo '';}; ?>">
并且由于某种原因,else
总是被触发,尽管理论上应该在发送数据时进行检查。可能是什么问题?
UPD.And 此外,错误文本始终显示在页面顶部,尽管我使用 responseText(ajax request)
和 bootstrap toasts
.
问题已通过添加 $request 是否存在的检查解决。
if($request){//This one
if($request->token==$_SESSION['token']){
...some code...
}else{
echo "Token confirmation error!";
};
};