По какой-то причине мой сеанс идентификатора поста не переносится на мою страницу скрипта классификации. Я извлекаю post_id из URL-адреса постов на своей странице постов и превращаю его в $ _ SESSION
, чтобы перенести его на страницу скрипта оценки. Моя $ _ SESSION
, содержащая идентификатор пользователя, вошедшего в систему $ _ SESSION ['user_id']
, если вошел в систему, переносится в сценарий оценки, но не в пост $ _ SESSION
, Как я могу перенести идентификатор своих сообщений на страницу моего сценария оценки?
У меня есть session_start ();
вверху обеих моих страниц.
$_SESSION['post_id'] = $_GET['pid'];
До начала сеанса у вас могут быть некоторые выходные данные. В этом случае сеанс может быть установлен неправильно. Включите режим отладки и найдите ошибку, связанную с функцией session_start():
ini_set('display_errors', 'on');
error_reporting(E_ALL);
Или проверьте error_log, если не можете включить отладку.
Ошибка может выглядеть так:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\phptests\test.php:1) in C:\xampp\htdocs\phptests\test.php on line 4
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\phptests\test.php:1) in C:\xampp\htdocs\phptests\test.php on line 4
Самая распространенная причина проблем с сеансами php заключается в том, что сценарий php выводит что-то до запуска сеанса.
Хорошо, у вас может не быть никаких эхо-операторов, или у вас может не быть НИКАКОГО php-кода, кроме чтения сеанса... но найдите время, чтобы проверить, что происходит, ДО того, как ваш код даже начнется.
Например, давайте поиграем в поиске разницы: (будет работать только один код)
<?php
session_start();
$_SESSION["test"] = "hello";
if($_SESSION["test"] == "hello";
{
echo "Session is working!";
}
else
{
echo "Session is NOT working!";
}
?>
и...
<?php
session_start();
$_SESSION["test"] = "hello";
if($_SESSION["test"] == "hello";
{
echo "Session is working!";
}
else
{
echo "Session is NOT working!";
}
?>
Разница в том, что перед открытием ЛЮБЫХ данных стоит один пробел перед тем, как session_start() остановит скрипт с работы.
Я был там - наличие случайного пробела или пустой строки в верхней части документа создаст серьезные проблемы, но включение вывода ошибок php должно показать вам, где вы ошибаетесь, если это так.