PHP会话变量在chrome中是不同的

问题描述 投票:-2回答:2

我在index.php中创建了登录表单,从session变量开始。

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中我检查发布标记和会话令牌,如果它不同则抛出错误。

<?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"];
}
?>

在谷歌浏览器中我得到这个消息:enter image description here

在Firefox和边缘仍在工作。

为什么铬不同?

php session
2个回答
1
投票
if(!isset($_SESSION)){session_start();}

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

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

<?php
session_start();

//your code.


0
投票

刚删除了.htaccess重定向规则,它现在运行正常。

© www.soinside.com 2019 - 2024. All rights reserved.