| imho.ws |
![]() |
|
|
|
# 1 |
|
Guest
Сообщения: n/a
|
Помогите с сайтом
У меня такая проблема:
Есть что-то на подобие сайта. На этом сайте размещено несколько страниц. Дык вот, как сделать так, чтобы одна из страниц загружалась только одним пользователям, другим в это время должно быть предложено попробовать позже? |
|
|
# 2 |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
На php полагаю? Если работа с БД идет, то можно просто блокировать полностью (и на чтение) таблицу, с которой работает эта страница, а при обращении проверять блокировку, и посылать ("предлагать попробовать позже").
Если без БД, то можно при обращении просто файлик определенный создавать, а в конце его удалять (ну или записывать в него что-то и читать), и по этому тое в скрипте судить используется страница в данный момент времени или нет. P.S. А зачем такое может вдруг потребоваться на сайте, если не секрет?
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|
|
# 6 |
|
Full Member
Регистрация: 29.05.2002
Сообщения: 544
![]() ![]() ![]() ![]() ![]() |
когда-то писал такую штуку(довольно давно), алгоритм там прост как две копейки.
задается expired-период, т.е. время через которое человек считается покинувший сайт. при заходе на страницу: 1. каждый раз записывается время и идентификатор человека, если он где-то кликает, то время обновляется(если идентификатор уже есть). 2. удаляются expired-пользователи. т.е. чье последнее время+expired-период меньше чем время сейчас. минусы: не дает 100% гарантии что человек именно закрыл браузер. технологии: данные можно хранить в бд или в обычном файле. в качестве идентификатора может служить например: ip адрес cookie можно привлечь сюда сессии. вариантов море
__________________
убрано по просьбе администратора
|
|
|
|
|
# 7 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
А вообще не проще ли просто каждому выдать уникальный логин/пароль и не мучаться? Тоесть заведомо разрешить доступ только одному авторизованному пользователю, тем самым исключить других!?
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|
|
|
# 8 |
|
::VIP::
Регистрация: 06.03.2003
Адрес: DZ, LBP, Moscow
Пол: Male
Сообщения: 633
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Если речь идет об одной странице, то можно обойтись текстовым файлом. В любом случае прийдется возится со скриптами. Perl или PHP - решай сам.
Самый тупой способ - привязывать страницу к IP-адресу зашедшего. А лучше прописывать инфу ему в куки.
__________________
Меня многие спрашивают, как я живу с тремя головами... На самом деле, я триедин, как Великие Бобы! |
|
|
|
|
# 9 | ||
|
Junior Member
Регистрация: 20.04.2005
Сообщения: 95
![]() |
Цитата:
может есть какой нить источник... Цитата:
|
||
|
|
|
|
# 10 |
|
Junior Member
Регистрация: 30.03.2003
Адрес: СПб
Сообщения: 162
![]() ![]() ![]() |
Можно сделать так:
У нас есть файл в котором хранится некое уникальное число(зачем? сейчас расскажу ) + дата последнего обращения к странице(timestamp).Когда человек обращается к странице происходит проверка даты последнего обращения. Если, например, разница больше заданного интервала (скажем, минута), то генерится новое случайное число, записывается в куку пришедшему + перезаписывается файл с новой датой и случайным числом. Иначе если разница меньше интервала, то читаем из куки клиента число и если оно совпадает, то обновляем дату в файле (можно ещё новое число сгенерить и послать клиенту); иначе отказываем в доступе ![]() На PHP делается элементарно. Смотри функции time, rand, fopen/fclose, fwrite/fread, setcookie/$_COOKIES['']. Всё доступно на http://www.php.net/ ![]()
__________________
640Kbytes should be enough for everything! (c) Bill Gates, 1981. Все "спасибо" в репутацию
|
|
|
|
|
# 11 |
|
Junior Member
Регистрация: 22.03.2004
Сообщения: 123
![]() ![]() |
ИМХО: Hubbitus предложил вариант, котор на 100% подходит под условие - создавать файл-блокиратор пока кто-то работает со страницей. Нет смысла городить излишества с куками, базами и др
Последний раз редактировалось Ale; 21.04.2005 в 01:37. |
|
|
|
|
# 13 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
А теперь о таймауте - когда человек загрузил страницу - он может часами ее смотреть и больше ничего не делать, и никакой возможности на сервере узнать закрыл ли он браузер или нет не может быть и речи, поэтому, и нужно ввести этот таймаут. Скажем после 5 минут неактивности (не загружают другие страницы, не тыркают ссылки и т.д.), тоесть когда нет возможности узнать что делает юзверь - будем считать что он ушел, в таком случае другому можно разрешить зайти. И если этот все-таки действительно оказался таким тормозом, и так долго читал пассивно страницу, то теперь ему покажут что типа "занято". Однако, если это не подходит, то можно и еще один подход применить: На JS создаешь iframe в этой странице, и скажем каждые 5 секунд его обновляешь, тгда можно будет с уверенностью судить о нахождении человека на странице и необрыве соединения...
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|
|
|
# 15 | |
|
Junior Member
Регистрация: 30.03.2003
Адрес: СПб
Сообщения: 162
![]() ![]() ![]() |
Если уж стали раскручиваьть этот вариант:
Цитата:
![]() Когда пользователь заходит на страницу (при проверке timeout). Ещё можно создать ссылку на странице (типа Logout), при обращении к которой файл будет удалён принудительно. 2 All: может кому будет не лень примерчик ему написать, а то тут уже написано текста раза в три больше, чем сам скрипт займёт
__________________
640Kbytes should be enough for everything! (c) Bill Gates, 1981. Все "спасибо" в репутацию
Последний раз редактировалось Al-x; 24.04.2005 в 15:08. Причина: и нафига я на кнопку транслита нажал :) |
|
|
|
|
|
# 16 | |
|
Junior Member
Регистрация: 20.04.2005
Сообщения: 95
![]() |
Цитата:
Но если кто примерчик кинет будет супер... |
|
|
|
|
|
# 17 | ||
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Цитата:
PHP код:
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
||
|
|
|
|
# 18 | |
|
Junior Member
Регистрация: 20.04.2005
Сообщения: 95
![]() |
При загрузке страницы скрипт выдает мне:
Цитата:
|
|
|
|
|
|
# 19 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|
|
|
# 20 |
|
Junior Member
Регистрация: 30.03.2003
Адрес: СПб
Сообщения: 162
![]() ![]() ![]() |
Вообще какие-нибудь скрипты пробовал на сервере запускать?
А то такое ощущение, что версия PHP - никакая (если скрипт просто в браузере открыть - это и получим).
__________________
640Kbytes should be enough for everything! (c) Bill Gates, 1981. Все "спасибо" в репутацию
|
|
|