Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2011, 18:42   #1
KLAXON
Пользователь
 
Регистрация: 17.06.2010
Сообщений: 50
По умолчанию Как определить где юзер закрыл браузер

есть вот такая схема работы сайта:



index.php ничего не содержит для отображения, просто решает, какой редирект пользователю нужен.

если юзер не авторизован - посылает на страницу авторизации, если куки сидит - отправляет на страницу, которую посещал в последний раз. с впервые авторизовавшимися - все ясно: там редирект на первую страницу, а вот как быть с теми, кто уже посещал страницы a.php, b.php, c.php?

в связи с чем вопрос: как реализовать это самое 'определение последнего посещения?'. полагаю, это делается с помощью куки, и, каждая из страниц, будет вносить какие-то изменения в setcookie (), но, если можно, на пальцах, что конкретно надо и где менять, чтобы я понял, как это работает?

или, если я не прав в своей догадке - направьте в нужное русло.
заранее спасибо.
KLAXON вне форума Ответить с цитированием
Старый 10.02.2011, 18:55   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

а если я в одной закладке открою a.php, в другой b.php а в третьей c.php, а потом выключу комп? Имхо, задача лишена особого смысла.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 10.02.2011, 19:28   #3
KLAXON
Пользователь
 
Регистрация: 17.06.2010
Сообщений: 50
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
а если я в одной закладке открою a.php, в другой b.php а в третьей c.php, а потом выключу комп? Имхо, задача лишена особого смысла.
при заходе на следующую страницу можно удалять куки предыдущей или переписывать указывая, что последняя открытая была "вот эта".

в этом случае можно проверять наличие всех куки и если их было больше одного - отправлять на последний.
KLAXON вне форума Ответить с цитированием
Старый 10.02.2011, 20:18   #4
kpachbiu
взагрузке.рф
Форумчанин
 
Аватар для kpachbiu
 
Регистрация: 13.06.2010
Сообщений: 117
По умолчанию

Пользователь авторизован, значит есть запись о нем в MySQL

Предлогаю создать еще поле last_page, куда можно записать последнюю страницу на которую перешел пользователь.
Взагрузке.рф - Файлы для людей
Ищу художника или веб-дизайнера для создания браузерной онлайн игры! icq 340-289-851
kpachbiu вне форума Ответить с цитированием
Старый 11.02.2011, 00:04   #5
KLAXON
Пользователь
 
Регистрация: 17.06.2010
Сообщений: 50
По умолчанию

Цитата:
Сообщение от kpachbiu Посмотреть сообщение
Пользователь авторизован, значит есть запись о нем в MySQL

Предлогаю создать еще поле last_page, куда можно записать последнюю страницу на которую перешел пользователь.
хм, а скажите мне такую вещь, $_SERVER['PHP_SELF'] - панацея?

скажем вот так:

PHP код:
$url $_SERVER['PHP_SELF'];
setcookie ("url"$urltime() + 3600 24 7); 
KLAXON вне форума Ответить с цитированием
Старый 11.02.2011, 00:13   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от KLAXON Посмотреть сообщение
хм, а скажите мне такую вещь, $_SERVER['PHP_SELF'] - панацея?
Почему бы просто не записывать имя файла(a.php, b.php, c.php):
Цитата:
setcookie ("url", "a.php", time() + 3600 * 24 * 7);
Andkorol вне форума Ответить с цитированием
Старый 11.02.2011, 00:15   #7
KLAXON
Пользователь
 
Регистрация: 17.06.2010
Сообщений: 50
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Почему бы просто не записывать имя файла(a.php, b.php, c.php):
в таком случае, либо мое понимание работы куки пока еще достаточно ограничено, либо мы получим 3 куки, каждый из которых будет содержать имя файла и как узнать, какой из этих куки был последним?
KLAXON вне форума Ответить с цитированием
Старый 11.02.2011, 00:39   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от KLAXON Посмотреть сообщение
в таком случае, либо мое понимание работы куки пока еще достаточно ограничено, либо мы получим 3 куки, каждый из которых будет содержать имя файла и как узнать, какой из этих куки был последним?
Это с чего бы мы получим 3 куки..?
Куки - это обычные переменные,хранящиеся у клиента.
Имя-то у нас одно("url") - просто при загрузке новой страницы мы обновляем значение, и всё...

Почитайте про куки.
Andkorol вне форума Ответить с цитированием
Старый 11.02.2011, 00:39   #9
KLAXON
Пользователь
 
Регистрация: 17.06.2010
Сообщений: 50
По умолчанию Нашел решение

помимо куки 'authorized', которое проверяет index.php, и, в случае его отсутствия - отправляет на страницу авторизации, ввожу еще вот это

PHP код:
$_COOKIE['last_visited'] = setcookie('last_visited''a.php'time() + 3600 *24 *7); 
при открытии следующей страницы, например b.php, значение $_COOKIE['last_visited'] будет переписано, соответственно вот так:

PHP код:
$_COOKIE['last_visited'] = setcookie('last_visited''b.php'time() + 3600 *24 *7); 
таким образом, даже при открытии нескольких страниц одновременно, какую-то из них вы открываете последней, а значит и значение $_COOKIE['last_visited'] будет тем, которое мы можем обработать на index.php и отправить юзера на последнюю, открытую им страницу.

вот так выглядит проверка:

PHP код:
if ($authorized != null)
{
    if (
$last_visited != null)
    {
        
header ("Location: $last_visited");
    }
    else
    {
        
header ("Location: a.php");
        exit();
    }
}
else 
{
    
header ("Location: auth.php");
    exit();


Последний раз редактировалось KLAXON; 11.02.2011 в 00:41.
KLAXON вне форума Ответить с цитированием
Старый 11.02.2011, 00:42   #10
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от KLAXON Посмотреть сообщение
помимо куки 'authorized', которое проверяет index.php, и, в случае его отсутствия - отправляет на страницу авторизации
Данные об авторизации лучше хранить в сессиях(надёжнее).
Всё что лежит у клиента - чужое, небезопасное.
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить где курсор Electron Общие вопросы C/C++ 4 27.07.2010 21:32
Как на JavaScript узнать, что пользователь закрыл окно? Laziz JavaScript, Ajax 1 22.02.2009 21:16
Как определить индекс линии Memo, где стоит курсор? yaver Общие вопросы Delphi 2 16.11.2008 17:29
Определить обязательно настоящий браузер и IP-адрес. v01umE PHP 3 14.07.2008 10:46
Как узнать под каким именем залогинился юзер? =LeonZone= Win Api 12 11.11.2007 16:03