2016-04-11 2 views
0

Я использую следующий код:модификаторы сессии

session_set_cookie_params(-1,'/','myAwesomeDomain.com',true,true); 

обеспечить PHPSESSID печенье.

Проблема заключается в том, что я не могу изменить имя куки где-нибудь еще с этим:

session_name('_uid'); 

Мой вопрос: Как получить эти два метода, чтобы работать друг с другом? Кроме того, существует ли способ ссылаться на «Когда сеанс просмотра заканчивается» по первому параметру первого метода?

PS: Там в файле session_start(): D

EDIT: Я даже принимаю методы мастерить с файлом php.ini.

EDIT v2: Файл, который содержит это, является отдельным от каждого другого, и не имеет значения, сколько строк кода мне нужно сделать. Использование include_once().

EDIT v3: Это смешно. PHP ставит точку перед доменом: sumPhpCookies
Теперь я полностью потерял, почему это так. (Я даже не используя session_name здесь.)

EDIT v4: Код:

<?php 
// Somehow rename PHPSESSID cookie 
session_set_cookie_params(-1,'/','www.forcemagic.xyz',true,true); 
session_start(); ?> 
+0

Браузер на стороне клиента. К сожалению, нет способа узнать, закрыл ли кто-нибудь свой браузер или нет, поскольку он ничего не сообщает об этом на сервере (и это то, где находится PHP). Сессии просто отмирают после того, как пользователь не перезагрузил страницу в течение указанного срока службы. - Решение javascript также очень неточно. (поверьте, я пробовал) – NoobishPro

+0

Хорошо, я понимаю :) Тогда, если можете, просто помогите с первым вопросом. Уже редактировалось: D – ForceMagic

+0

Не знаете, почему вы чувствуете 'session_set_cookie_params'. Конечно, все может быть сделано из простого 'setcookie' – RiggsFolly

ответ

1
session_name('_uid') 

As the manual says, имя должно содержать буквенно-цифровых символов (букв, цифр), и не может состоять только из цифр, оно должно содержать хотя бы одну букву.

Так, чтобы подчеркивание было на самом деле проблемой.

0

session_name на самом деле должен быть объявлен перед темsession_set_cookie_params.

http://php.net/manual/en/function.session-set-cookie-params.php см замечание "Brandan, bildumgsroman.org"

браузер на стороне клиента. К сожалению, нет способа узнать, закрыл ли кто-нибудь свой браузер или нет, поскольку он ничего не сообщает об этом на сервере (и это то, где находится PHP). Сессии просто отмирают после того, как пользователь не перезагрузил страницу в течение указанного срока службы. - Решение javascript также очень неточно. (поверьте, я пробовал)

Существует, однако, один из способов определить, был ли браузер закрыт или нет. Однако я бы не рекомендовал его;

Вы можете создать повторяющийся вызов ajax, который хранит простую временную метку в базе данных, в которой пользователь с определенным сеансом находится в сети. Затем вы можете запустить cronjob на PHP, проверяя эту базу данных для временных меток keepalive с большей разницей между now и последним (2) пингом (s), а затем cronjob будет знать, что просмотр остановлен.

+2

** Из руководства * * _Настроить параметры файла cookie, определенные в файле php.ini. Эффект этой функции сохраняется только в течение срока действия скрипта. Таким образом, вам нужно вызвать session_set_cookie_params() для каждого запроса и до вызова session_start() – RiggsFolly

+0

Это не работает: c BTW, я уже пробовал это. – ForceMagic

+0

@RiggsFolly вы говорите, что лучше использовать его в ini-файле? И как его установить?/ Извините, но я начинаю заниматься обработкой сессии: P/ – ForceMagic

Смежные вопросы