Переменная сеанса недоступна в обработчике ajax (скрипт php) - PullRequest
1 голос
/ 08 марта 2020

Моя структура каталогов выглядит следующим образом:

public_html
    |_ ajax
        |_ test_handler.php
    |_ test.php

Мой тест. php выглядит так:

session_start();
if(isset($_SESSION["tested"]) && $_SESSION["tested"] == "NO"){
    //unset the session array and destroy current session
    destroyActiveSession();

    //start a new session
    session_start();

    $_SESSION["test_var"] = "Hello world!"
    $_SESSION["tested"] = "YES"
}

test_handler. php имеет следующий код (упрощенно):

session_start();
exit($_SESSION["test_var"]);

Использование локальной среды (XAMPP) и выполнение на Google Crome

На test.php странице $_SESSION["test_var"] работает нормально, но в test_handler.php я получить Undefined index: test_var ошибку. Что я делаю не так ???

Ответы [ 3 ]

1 голос
/ 08 марта 2020

Мне кажется, что вам нужно установить значение изначально, чтобы убедиться, что тест logi c работает правильно

<?php
    #test.php

    session_start();
    /*
        In the original code the session variable was not set before 
        any form of testing.. set an initial value
    */
    if( !isset( $_SESSION["tested"] ) ) $_SESSION["tested"]='NO';


    if( isset( $_SESSION["tested"] ) && $_SESSION["tested"] == "NO" ){
        destroyActiveSession();

        session_start();

        $_SESSION["test_var"] = "Hello world!"
        $_SESSION["tested"] = "YES"
    }
?>

, и имеет смысл проверить это при попытке позднего вывода значения через ajax

<?php
    #test_handler.php
    session_start();
    $var=isset( $_SESSION["test_var"] ) ? $_SESSION["test_var"] : 'bogus';
    exit( $var );
?>
0 голосов
/ 08 марта 2020

Итак, если кто-то столкнулся с этой проблемой, вот что решило мою проблему: Новый test.php:

session_start();
if(isset($_SESSION["tested"]) && $_SESSION["tested"] == "NO"){

    //unset the session array 
    $_SESSION = array();

    $_SESSION["test_var"] = "Hello world!"
    $_SESSION["tested"] = "YES"
}

И новый test_handler.php:

<?php
    session_start();
    exit( $_SESSION["test_var"] );
?>
0 голосов
/ 08 марта 2020

Похоже, что ваше условие "Если" неверно в: $ _SESSION ["test"] = "NO"

Попробуйте:

session_start();
if(isset($_SESSION["tested"]) && $_SESSION["tested"] == "NO"){
    //unset the session array and destroy current session
    destroyActiveSession();

    //start a new session
    session_start();

    $_SESSION["test_var"] = "Hello world!"
    $_SESSION["tested"] = "YES"
}
...