Проблема PHP $ _SESSION

По какой-то причине мой сеанс идентификатора поста не переносится на мою страницу скрипта классификации. Я извлекаю post_id из URL-адреса постов на своей странице постов и превращаю его в $ _ SESSION , чтобы перенести его на страницу скрипта оценки. Моя $ _ SESSION , содержащая идентификатор пользователя, вошедшего в систему $ _ SESSION ['user_id'] , если вошел в систему, переносится в сценарий оценки, но не в пост $ _ SESSION , Как я могу перенести идентификатор своих сообщений на страницу моего сценария оценки?

У меня есть session_start (); вверху обеих моих страниц.

$_SESSION['post_id'] = $_GET['pid'];
1
задан aatteot 31 August 2010 в 13:37
поделиться

2 ответа

До начала сеанса у вас могут быть некоторые выходные данные. В этом случае сеанс может быть установлен неправильно. Включите режим отладки и найдите ошибку, связанную с функцией 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
2
ответ дан 2 September 2019 в 21:41
поделиться

Самая распространенная причина проблем с сеансами 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 должно показать вам, где вы ошибаетесь, если это так.

0
ответ дан 2 September 2019 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: