Как создать постоянные сеансы в PHP?

Я использовал session_start() чтобы инициировать сеанс в PHP, но когда мой браузер закрывается, сеанс исчез.

Как использовать PHP для создания постоянных сеансов, которые заканчиваются в браузере?

См. Значение php.ini session.cookie_lifetime .

Значение по умолчанию 0 означает завершение сеанса при закрытии браузера.

Вы можете переопределить это значение либо непосредственно в php.ini либо установить его в своем приложении до начала сеанса с помощью ini_set . Установка его на что-то большее, чем 0 приведет к тому, что сеанс будет жить в течение этой продолжительности.

Например

 ini_set('session.cookie_lifetime', 60 * 60 * 24 * 7); // 7 day cookie lifetime session_start(); 

Вышеприведенный пример заставляет cookie сеанса устанавливаться с истечением 7 дней с момента запуска сеанса.

Примечание. Если вы запустите сеанс для всех своих веб-страниц из одного и того же фрагмента кода, это не приведет к продлению срока действия сеанса каждый раз, когда session_start() вызов session_start() . Время жизни cookie устанавливается с момента начала сеанса, а не последующих запросов. Если вы хотите продлить срок службы сеанса за 7 дней с текущего времени, см. Также session_regenerate_id () .

Также Примечание. Если ваше значение session.gc_maxlifetime установлено на меньшее, чем длина файла cookie сеанса, вы можете иметь ситуацию, когда пользователь не посещает сайт в течение 5 дней, а когда они возвращаются, cookie сеанса больше недействителен потому что данные на сервере были удалены. Чтобы исправить это, вы также должны установить срок службы данных сеанса как минимум на столько же, сколько и срок жизни вашего файла cookie. Как указано в руководстве, может потребоваться использование настраиваемого параметра session.save_path для данных сеанса, которые вы хотите сохранить дольше, чем значение по умолчанию. Поэтому ваш скрипт может выглядеть так:

 ini_set('session.cookie_lifetime', 60 * 60 * 24 * 7); ini_set('session.gc_maxlifetime', 60 * 60 * 24 * 7); ini_set('session.save_path', '/home/yoursite/sessions'); session_start(); 

Используйте cookie. Например, этот учебник .

Сеансы разработаны таким образом, что они основаны на «сессии». Другими словами, если вы закроете свой браузер (который, по сути, ваш сеанс), он должен уйти.

Вы можете попытаться сохранить данные сеанса в базе данных, а не в файле. Сохраните идентификатор сеанса и данные сеанса в таблице. Затем вызовите идентификатор сеанса из файла cookie PHPSESSID (по умолчанию) и найдите данные сеанса из своей базы данных.

Я бы рекомендовал использовать файлы cookie и базу данных, если вам нужен постоянный сеанс. Мы сохраняем идентификатор клиента (случайное 32-битное буквенно-цифровое значение) в файле cookie, а затем ссылаемся на то, чтобы загрузить информацию о своих клиентах.

Вы можете начать сеанс без ввода session_start() и вы можете запустить его с помощью файла cookie

 setcookie('PHPSESSID','any id' , any time); 

это можно сделать, потому что, когда вы вводите session_start() а затем пытаетесь просмотреть cookie как это

 print_r($_COOKIE); 

то аут будет:

 Array ( [PHPSESSID] => c0voj7h0b4aesddkc17a6jk7c3 ) 

просто попробуйте сами