Правильное использование session_set_cookie_params

Я пытаюсь внедрить систему входа в систему с функцией «запомнить меня». Это моя моя страница входа в систему: http://pastebin.com/q6iK0Mgy . В этом я пытаюсь продлить срок действия cookie сеанса (PHPSESSIONID), используя session_set_cookie_params (). Но это не работает.

Соответствующая часть кода: в этом выполняется внутренний цикл if (), но session_set_cookie_params ('3600') не оказывает никакого эффекта. Я вызываю session_name (), так как это должно быть требование для session_set_cookie_params () (согласно одному из комментариев к руководству php)

if ( isset($_POST["submit"]) ) { session_name() ; echo "calling before checked " ; if ( $_POST["remember"] == "on") { // extend expiration date of cookie session_set_cookie_params('3600'); echo "<br/>calling after sessions_set_cookie_params" ; } } require_once("includes/session.php"); //session start ?> 

Надеюсь, я смог объяснить, что я хочу делать. В основном то, что я пытаюсь сделать, это продлить срок действия session_cookie. мой способ делать совершенно неправильно? есть ли другой способ добиться того же?

благодаря

Никогда не слишком старый для ответа?

Итак, PHP немой . Как и в, он не делает то, что, по вашему мнению, имеет смысл.

session_set_cookie_param ничего не сделает до того момента, когда вы вызовете session_start. Поэтому, если вы задали параметры cookie после начала сеанса сеанса, слишком поздно. Если вы зададите параметры cookie, но затем не вызываете session_start, ничего не происходит.

session_start – тоже забавный зверь. Он только считывает данные cookie в первый раз, когда он называется, – это так, если … вы не заставляете его писать, или нет cookie для начала. Поэтому, если нет cookie, он записывает данные cookie, и клиент сохраняет вашу сессию. ура! Но когда cookie существует уже, как мы вынуждаем его писать, и, следовательно, обновляем нашу новую дату истечения срока действия?

Таким образом, у нас есть этот нечетный эффект, игнорируя все ваши вызовы session_set_cookie_param, если cookie уже существует на клиенте. Еще лучше, если вы явно вызываете setcookie (session_name (), blah blah blah ), php будет STILL не выпустить cookie.

Итак, давайте заставить php испускать cookie.

Опция 1

Это работает, вызывая session_id с единственным значением, которое не будет сжимать ваш существующий сеанс. В документации по адресу http://php.net/session_id указано, что

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

 session_id($_COOKIE[session_name()]); 

Так что в любом случае это 6 утра, и я еще не спал, и вы, вероятно, подумали об этом несколько месяцев, если не много лет назад, но какого черта, может быть, я спасу кого-то еще за 2 или 3 часа своей жизни, я никогда не буду вернуться. ха-ха.

Из документации:

Вам нужно вызвать session_set_cookie_params () для каждого запроса и до вызова session_start ().

Также проверьте http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime