Проверьте, является ли сеанс новым в PHP - PullRequest
2 голосов
/ 18 января 2012

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

Согласно документации PHP:

session_start () создает сеанс или возобновляет текущий сеанс на основе идентификатор сеанса, переданный через запрос GET или POST, или переданный через печенье.

Так есть ли способ узнать, создается ли сеанс или возобновляется?

Или это ситуация, когда мне приходится проверять текущий идентификатор сеанса по списку, который я веду на сервере, чтобы проверить, был ли он зарегистрирован ранее? Если да, то требует ли это записи в базу данных или есть менее громоздкий способ сделать это в памяти?

Ответы [ 3 ]

8 голосов
/ 18 января 2012
<?php
session_start();
if(empty($_SESSION['exists'])){
    //handle completely new session here
}
$_SESSION['exists'] = true;
.... //continue on with normal request
4 голосов
/ 18 января 2012

Все задокументированные способы проверки «новизны» сеанса не давали мне результатов в прошлом, поэтому я склонен делать

$_SESSION['existing']=true;

при запуске сеанса, а затем просто тестировать

if (isset($_SESSION['existing'])) ...
2 голосов
/ 18 января 2012

Проверьте, определено ли $_COOKIE['PHPSESSID'] (или какое-либо имя файла cookie, если вы изменили его по умолчанию.

Если файл cookie не существует, сеанс только что создан.

...