Подтвердить что ты не робот

Undefined variable: _SESSION при отправке переменных через сообщение через триггер JavaScript

В моем файле index.php я вызываю session_start() и устанавливаю пару переменных сеанса. Во втором PHP файле я хотел бы получить доступ к этим переменным сеанса.

Дело в том, что этот PHP файл является чисто бэкэнд script и отправляется после запуска функции JavaScript. Когда вызов POST пытается вызвать script во втором PHP файле, журнал ошибок сообщает, что:

_SESSION является переменной undefined.

Я пробовал вызывать start_session() и session_regenerate_id() в верхней части второго PHP файла, но проблема сохранилась.

Я предполагаю, что происходит, потому что в POST этот PHP файл находится в своем собственном сеансе, так как я все еще способен сделать это $_COOKIE[ini_get('session.name')].

Информация, которую я пытаюсь передать во второй файл PHP, не является чем-то, что нужно защитить, но было бы неплохо узнать в будущем, как это сделать: вызвать файл PHP через POST и все еще иметь мои переменные сеанса.

4b9b3361

Ответ 1

Нет ничего особенного в запросах и сеансах POST.
Вам просто нужно вызвать session_start в верхней части каждого <<забавного > файла запроса, с которым вы хотите использовать сеансы, в том, что он.

Попробуйте еще раз с этим, он должен работать.

Ответ 2

session_start();  

является ответом на большинство подобных тем. я боролся с этой проблемой, и я решил свою проблему с этим кодом.

    if (version_compare(PHP_VERSION, '5.4.0', '<')) {
        if(session_id() == '') {session_start();}
    } else  {
       if (session_status() == PHP_SESSION_NONE) {session_start();}
    }

Ответ 3

вы должны включить

<?php session_start();?>

в начале вашего документа, это запустит SESSION ENGINE и позволит вам установить переменные сеанса (ie. $_SESSION['var1'], $_SESSION['var2'], etc)

Если вы хотите получить значения из $_POST, вы можете связать их вместе:

$_SESSION['var1'] = $_POST['answer1']

Ответ 4

Я столкнулся с этой проблемой, и, попробовав много вещей, я включил session_start() во второй script, и он сработал.

Ответ 5

Недавно я столкнулся с той же проблемой. Я не смог получить доступ к содержимому переменной $_SESSION.

1) Это было связано с попыткой доступа к переменной $_SESSION до объявления session_start();. В моем собственном случае я уже начал сеанс в файле header.php. Но я обращался к переменной $_SESSION перед оператором include. Пример

<?php
 $username = $_SESSION['username'];
 //do some logical operation!!!
?> 
<?php include("header.php");?>

вместо того, чтобы делать что-то вроде этого

<?php include("header.php");?>
<?php
 $username = $_SESSION['username'];
 //do some logical operation!!!
?> 

2) Еще одна вещь, которая может вызвать эту проблему, возможно, не запускает сеанс в верхней части всех файлов, которым может потребоваться доступ к переменной $_SESSION, используя

session_start();

Надеюсь, это поможет любому, кто наткнулся на ту же проблему. Хотя это происходит в поздний час.

Ответ 6

session_start() - ответ. И вот еще один способ обойти это:

<?php 
if (session_id() == "") 
    session_start();    ?>

Это гарантирует, что новый сеанс будет запущен, только если у вас уже нет текущего сеанса. И, конечно, как говорили другие, обязательно разместите это в верхней части html.

Ответ 7

Добавьте следующий файл в файл browse.php:

error_reporting( error_reporting() & ~E_NOTICE );
if( ! ini_get('date.timezone') )
{
    date_default_timezone_set('GMT');
}
if (version_compare(PHP_VERSION, '5.4.0', '<')) {
    if(session_id() == '') {session_start();}
} else  {
   if (session_status() == PHP_SESSION_NONE) {session_start();}
}   

Он будет работать нормально.