php - chrome中的PHP会话变量不同
问题描述
我从 session 变量开始在 index.php 中创建了登录表单。
session_start()
$_SESSION["token"] = rand(1000, 9999);
通过 ajax 发送表单数据和会话变量
$( "#login-button" ).click(function(e) {
e.preventDefault();
var form = $('form#login-form')[0];
var formData = new FormData(form);
formData.append("token", "<?php echo $_SESSION["token"]; ?>");
$.ajax({
type: 'POST',
url: 'user_login.php',
data: formData,
contentType: false,
cache: false,
processData:false,
beforeSend: function(){
},
success: function(data){
}
});
});
在 user_login.php 中,我检查了 post 令牌和 session 令牌,如果不同则抛出错误。
<?php
session_start()
if(!empty($_SESSION["token"]) && !empty($_POST["token"]) && $_SESSION["token"] == $_POST["token"])
{
//checking the formdata variables here for login
}
else {
echo "SESSION: " . $_SESSION["token"];
echo " TOKEN " . $_POST["token"];
}
?>
在火狐和边缘仍然工作。
为什么它在铬中有所不同?
解决方案
if(!isset($_SESSION)){session_start();}
这不是一件好事,因为session_start
必须首先输出(比如echo
或 html)。
检查是否session_start();
是第一个并写入:
<?php
session_start();
//your code.
推荐阅读
- python - python 中是否有与 Julia 的 eval(parse(String)) 等价的方法?
- arrays - 如何在 SAS 中转置表
- ios - Angular 4 网站 - 我们如何使用 apple-app-site-association
- swift - 使用条件时如何为swiftUI中“Text()”值的变化设置动画?
- java - 无法解析方法'订阅(匿名 io.reactivex.Observer
)' - c - 如何在 C 中声明 FILE?
- javascript - 使用java脚本删除二维数组中的列列表
- server - 我的服务器 FiveM 出现错误,我不知道如何修复它请任何人知道如何修复?
- php - 显示默认图像,如果它在 php 数据库中不存在
- reactjs - WebStorm 2020.3 - 如何启用 React 道具智能感知?