Php сессии не работают - PullRequest
       7

Php сессии не работают

1 голос
/ 12 января 2011

Я новичок в php и очень новичок в сессиях, поэтому я понятия не имею, что я делаю неправильно. Я следовал руководству по tizag и разместил этот код на своем сайте:

<?php

session_start();

echo SID . "<br><br>";

if(isset($_SESSION['views'])) {
    $_SESSION['views'] = $_SESSION['views'] + 1;
} else {
    $_SESSION['views'] = 1;
    echo "views = ". $_SESSION['views']; 
}

?>

SID меняется всякий раз, когда я обновляюсь, и номер не считается.

Обновление: URL: http://121.73.150.105/PIA/

ИСПРАВЛЕНО: Помещение session_start () перед моим типом документа, названием и т. Д.

Ответы [ 6 ]

1 голос
/ 12 января 2011

Включены ли куки в вашем браузере? phpsessid хранится в виде cookie, вы можете установить для него различные параметры, один из которых может оказаться полезным в вашем случае: session_get_cookie_params () , и посмотреть, совпадает ли everithing с параметрами cookie сеанса.

Если что-то не так, например, дата истечения срока действия, вы можете установить параметры с помощью session_set_cookie_params ()

0 голосов
/ 12 января 2011

ini_set("session.use_cookies",1);<br/> ini_set("session.use_only_cookies",1);

эти два параметра должны быть установлены в gether, если вы хотите, чтобы он работал

0 голосов
/ 12 января 2011

в вашем коде, если вы не можете увидеть идентификатор сессии, которую вы можете написать session_id() вместо SID.

0 голосов
/ 12 января 2011

либо вы выводите что-либо в браузер перед началом сеанса, либо у вас отключены куки

0 голосов
/ 12 января 2011

Возможно, ваша настройка PHP настроена так, чтобы не сохранять сеансы в файлах cookie.

Чтобы проверить, так ли это, вы можете посмотреть session.use_cookies в вашем php.ini или использовать ini_get , например:

<?php echo ini_get('session.use-cookies'); ?>

Вы также можете исправить это во время выполнения, используя ini_set , например:

<?php ini_set('session.use-cookies', '1'); ?>
0 голосов
/ 12 января 2011

Вы не выводите $_SESSION['view'] после оператора if.Я думаю, поэтому он не меняется.

Попробуйте:

<?php

session_start();

echo SID . "<br><br>";

if(isset($_SESSION['views'])) {
    $_SESSION['views'] = $_SESSION['views'] + 1;
} else {
    $_SESSION['views'] = 1;
}

echo "views = ". $_SESSION['views'];     

?>

Таким образом, вы всегда выводите новое значение $_SESSION['views'].

РЕДАКТИРОВАТЬ: Я думаю, что правильноОтвет: сеанс не установлен.Но мне любопытно, как код может всегда выводить "view = 1"?Могу ли я открыть новый вопрос по этому вопросу или просто обсудить его здесь?

...