PHP

Можно ли узнать, открыт ли сайт в браузере пользователя? можно ли задать событие при закрытии сайта (удаление cookies)?

Нужно сделать так, чтобы на стороне клиента улавливался момент закрытия сайта и удалялись его файлы Cookies. Я читал, что это можно сделать через сессии, но ведь они работают на стороне сервера и теоретически не могут отследить окончание работы с сайтом. Может есть какой-нибудь способ? И раз уж начал про сессии, то еще вопрос: насколько я знаю, в адресной строке будет приписываться название сессии. Так вот: можно ли название сессии замаскировать? Можно ли вообще подкорректировать URL адрес страницы сайта? чтобы было скажем не RandomHost/Index.php, а например как в контакте http://vk.com/friends?
Для установки Cookies используется функция SetCookie(). Для этой функции можно указать шесть параметров, один из которых является обязательным:

name - задает имя (строк), закрепленное за Cookie;
value - определяет значение переменной (строка);
expire - время "жизни" переменной (целое число). Если данный параметр не указать, то Cookie будут "жить" до конца сессии, то есть до закрытия браузера. Если время указано, то, когда оно наступит, Cookie самоуничтожится.
path - путь к Cookie (строка);
domain - домен (строка). В качестве значения устанавливается имя хоста, с которого Cookie был установлен;
secure - передача Cookie через защищенное HTTPS-соединение.

>не могут отследить окончание работы с сайтом
JS периодически отсылай что сайт открыт
Бакыт Тойчубеков
Бакыт Тойчубеков
68 637
Лучший ответ
Можно конечно отслеживать событие выгрузки (unload, onbeforeunload), но это не поможет если браузер аварийно закрылся или у пользователя пропал инет в момент работы. Потому надежнее будет, если ты средствами Ajax будешь отправлять на сервер с некой периодичностью сигнал keepalive, подтверждающий актуальность сессии: не пришел сигнал своевременно - считаем сессию устаревшей.

Преобразования url производятся с помощью htaccess (htaccess.net.ru).
Иосиф Герман
Иосиф Герман
96 019
"Нужно сделать так, чтобы на стороне клиента улавливался момент закрытия сайта и удалялись его файлы Cookies"
-js тебе в помощь. С его помощью и отследить закрытие можно, и куки удалить.

" Я читал, что это можно сделать через сессии, но ведь они работают на стороне сервера и теоретически не могут отследить окончание работы с сайтом"
-без теоретически. НЕ могут и всё. Можно поизвращаться и проверять когда сессия сдохнет. Но это бред. Повторюсь - JS.

"насколько я знаю, в адресной строке будет приписываться название сессии. "
-С чего оно должно там прописываться?? Название сессии хранится в куки.

"Можно ли вообще подкорректировать URL адрес страницы сайта? чтобы было скажем не RandomHost/Index.php, а например как в контакте http://vk.com/friends?"

Можно.
- почитай об .htaccess, есть и другие варианты, но в твоём случае этот лучший.