$ _SESSION PHP не распознается на одном сервере в разных URL - PullRequest
0 голосов
/ 29 мая 2018

У меня есть файл check_session.php, который проверяет, был ли сеанс пользователя запущен после входа в систему, что происходит следующим образом:

Есть два URL:

https://www.website.com/control/user/

А внутри есть ссылка, которая ведет на другой URL:

https://www.website.com/b2b/user/

В начале каждой страницы у вас даже есть код:

<?php
if( !session_id() ) {
    session_start();
}
header('Access-Control-Allow-Origin: https://www.website.com');
?>

Файл check_session.php одинаков для обеих сред, однако при открытии ссылки в target = "_ blank" другой URL-адрес проходит через файл verify.php, а $ _SESSION ['user'] не распознается и пересылаетпользователь вне среды, но вкладка источника не теряет сеанс:

<?php
if( !isset($_SESSION['user']) ) {
    session_regenerate_id(true);
    unset($_SESSION['user']);
    session_destroy();
    session_start();
    echo "<script>window.alert('Unauthorized access [SECTION OFF]!');</script>";
    echo "<script>parent.location.href='home/';</script>";
    exit();
}
?>

Учитывая, что целевой URL-вызов выполняется как через тег, так и в Jquery .ajax ();

Замечательно, спасибо!

1 Ответ

0 голосов
/ 29 мая 2018

Это может произойти в 2 случаях: во-первых, это разные доменные имена.Вы сказали, что они одинаковы.

Тогда, скорее всего, вы не инициировали сеанс с использованием verify.php

Header Access-Control-Allow-Origin, когда вам нужно загрузить данные с другого сайта.Вам не нужен этот заголовок в том же домене.И вам не нужно проверять session_id перед началом сеанса.

Так что первый фрагмент кода может выглядеть так:

<?php session_start(); ?>

Во втором фрагменте кода, если $_SESSION['user'] не были установлены, то нет смысла unset($_SESSION['user']);.

Если вы уничтожаете сеанс, нет необходимости session_regenerate_id(true);.

Если вы воссоздаете сеанс только из-за $_SESSION['user'] ивесь этот код находится в этом файле,

, тогда второй фрагмент кода может выглядеть следующим образом:

<?php
session_start();
if(!isset($_SESSION['user']) ) {
    echo "<script>window.alert('Unauthorized access [SECTION OFF]!');</script>";
    echo "<script>parent.location.href='home/';</script>";
}

Если вы воссоздаете сеанс по другой причине, то второй фрагмент может выглядеть следующим образом:

<?php
session_start();
if( !isset($_SESSION['user']) ) {
    session_destroy();
    session_start();
    echo "<script>window.alert('Unauthorized access [SECTION OFF]!');</script>";
    echo "<script>parent.location.href='home/';</script>";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...