首页 > 解决方案 > 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"];
}
?>

在谷歌浏览器中我得到这个消息: 在此处输入图像描述

在火狐和边缘仍然工作。

为什么它在铬中有所不同?

标签: phpsession

解决方案


if(!isset($_SESSION)){session_start();}

这不是一件好事,因为session_start必须首先输出(比如echo或 html)。

检查是否session_start();是第一个并写入:

<?php
session_start();

//your code.


推荐阅读