В моем файле index.php я вызываю session_start()
и устанавливаю пару переменных сеанса. Во втором PHP-файле я хотел бы получить доступ к этим переменным сеанса.
Дело в том, что этот PHP-файл является чисто внутренним скриптом и POSTED, когда запускается функция JavaScript. Когда вызов POST пытается вызвать скрипт во втором PHP-файле, журнал ошибок сообщает, что:
_SESSION
– неопределенная переменная.
Я попытался вызвать start_session()
и session_regenerate_id()
в верхней части второго PHP-файла, но проблема сохранилась.
Я предполагаю, что происходит, потому что в POST этот PHP-файл находится в своем собственном сеансе, так как я все еще могу сделать это $_COOKIE[ini_get('session.name')]
.
Информация, которую я пытаюсь передать во второй файл PHP, не является чем-то, что нужно защитить, но было бы неплохо узнать в будущем, как это сделать: вызвать файл PHP через POST и по-прежнему иметь мои переменные сеанса ,
В POST-запросах и сеансах нет ничего особенного.
Вам просто нужно вызвать session_start
в верхней части каждого запроса файла, в который вы хотите использовать сеансы, вот и все.
Повторите попытку с этим, это должно сработать.
session_start();
является ответом на большинство вопросов, подобных этому. я боролся с этой проблемой, и я решил свою проблему с этим кодом
if (version_compare(PHP_VERSION, '5.4.0', '<')) { if(session_id() == '') {session_start();} } else { if (session_status() == PHP_SESSION_NONE) {session_start();} }
вы должны включить
<?php session_start();?>
в начале вашего документа это запустит SESSION ENGINE и позволит вам установить переменные сеанса (ie. $_SESSION['var1'], $_SESSION['var2'], etc)
Если вы хотите получать значения из $ _POST, вы можете связать их вместе:
$_SESSION['var1'] = $_POST['answer1']
Я столкнулся с этой проблемой, и, попробовав много вещей, я включил session_start () во второй скрипт, и это сработало.
Недавно я столкнулся с той же проблемой. Я не смог получить доступ к содержимому переменной $ _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();
Надеюсь, это поможет любому, кто наткнулся на ту же проблему. Хотя это происходит в поздний час.
session_start () – ответ. И вот еще один способ:
<?php if (session_id() == "") session_start(); ?>
Это обеспечит запуск нового сеанса, только если у вас уже нет текущего сеанса. И, конечно, как говорили другие, обязательно разместите это в верхней части html.
Добавьте следующий файл в файл 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();} }
Он будет работать нормально.