2010-10-29 3 views
0

Итак, я сегодня играл с сессиями в PHP, и после откладывания на то, должен ли я использовать сеансы или нет, так как я начал PHP около 6 месяцев назад (это выглядело страшно), я нашел это будет довольно просто. Но я использую time() как идентификатор сеанса, я объясню, почему ...Использование сеансов PHP

Я нашел страницу на странице справки сессии на веб-сайте php.net, и один из примеров кода использует это для управления сеансами:

session_start(); 

if(!isset($_SESSION['last_access']) || (time() - $_SESSION['last_access']) > 60) 
$_SESSION['last_access'] = time(); 

Однако это заканчивается очень быстро. Конечно, я могу изменить 60 на очень большое число, но это для веб-сайта, где клиенты будут тратить в среднем, 3 - 4 часа, просто добавляя продукты в корзину покупок, поэтому я не могу заканчивать сеансы, если они не закрывают стр.

Как перенести один и тот же идентификатор сеанса на все страницы нашего сайта, независимо от времени(). Я не хочу использовать время для управления идентификаторами сеанса.

Я СДЕЛАЛ использовать константу SID в URL, как это:

<?php echo '<a href="theotherpage.php?sessid='.SID.'">go to another page</a>'; ?> однако, используя константу, как советует сайт PHP, не работает.

Может кто-нибудь, пожалуйста, помогите мне сохранить один и тот же идентификатор сеанса, независимо от времени, по всему сайту?

Ваша помощь очень ценится, и спасибо! :)

+2

Вы не понимаете, что этот код делает. Я просто сохраняю последнее время доступа, обновляемое в сеансе через 60 секунд. Он не заканчивает сеанс, а идентификатор сеанса - это нечто совершенно другое. – deceze

+0

Как мне получить идентификатор сеанса? И это уникально для каждого посетителя сайта? – 2010-10-29 07:19:18

+1

session_id() получит его –

ответ

2

Я думаю, что у вас может быть непонимание сессий. Предполагая, что их файлы cookie включены, вам никогда не понадобится использовать идентификатор сеанса. Сам идентификатор сеанса хранится в файле cookie. Если вы хотите сохранить сеанс дольше, просто используйте ini_set ('session.gc_maxlifetime', 20); и измените 20 на количество минут, на которые вы хотели бы жить.

Обратите внимание: вы должны использовать start_session(); в самом верху каждого файла, чтобы убедиться, что определенный файл использует сеансы. (Это было бы хорошей причиной для того, чтобы иметь 1 основной файл конфигурации в верхней части php-файлов, поэтому вы можете легко добавить это в 1 файл и добавляться ко всем страницам)

+0

Когда пользователи добавляют продукты в корзину, я использую идентификатор сеанса как идентификатор для конкретного посетителя в базе данных, поэтому я сделал это таким образом. И я тоже не говорю об этом, мне приказано сделать это, к сожалению. – 2010-10-29 07:17:02

+0

Упс. Я использую session_start(), я просто забыл вставить его в вопрос. – 2010-10-29 07:18:23

+1

Я никогда не использовал это, но вы можете получить идентификатор сеанса своего текущего сеанса, вызвав session_id(). Опять же, предполагая, что у них есть файлы cookie, способ u держать сессию открытой, пока вы хотите, с помощью функции ini_set. Это позволяет вам говорить об этом, чтобы сеанс был открыт, пока вы не захотите его закрыть. –