Переменная сессии PHP отличается в Chrome - PullRequest
0 голосов
/ 05 марта 2019

Я создал форму входа в 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 я проверяю почтовый токен и токен сеанса и, если они отличаются, выдает ошибку.

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

В Google Chrome я получаю следующее сообщение: enter image description here

в Firefox и Edge все еще работает.

Почему он отличается от Chrome?

Ответы [ 2 ]

1 голос
/ 05 марта 2019
if(!isset($_SESSION)){session_start();}

Это не очень хорошая вещь, потому что session_start должен в первую очередь выводить (например, echo или html).

Проверьте, является ли session_start(); первым, и напишите:

<?php
session_start();

//your code.

0 голосов
/ 05 марта 2019

Только что удалил правила перенаправления .htaccess, и теперь он работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...