![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| godvinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 4.4.2008 Где: possibility of mo ving to Kyiv Репутация: нет Всего: 1 |
Можно ли запретить пользователю перегружать определенную страницу *?
|
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
контроль над ctrl+f5? имхо, нет. всёё равно ведь сможет закрыть и зайти заново
помятуя о предыдущем вопросе с тестом, могу предположить, что это продолжение. однозначным решением здесь будет авторизация и контроль, может по ip |
|||
|
||||
| godvinn |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 4.4.2008 Где: possibility of mo ving to Kyiv Репутация: нет Всего: 1 |
bars80080, да это все тот же вопрос по тестированию
извиняюсь за флуд, но у меня вопрос по поводу того что вы говорили мне вчера, что нужно в сессию записать начальное время и потом сравнить его с конечным. с чего придумался вопрос... вот как я делаю с предложениями с сессией: есть у меня в базе вопросы я подсчитываю количество вопросов и вывожу общее время на данный тест:
допустим у меня в базе 4 вопроса я для них вывел что нужно 240000(мил.с) потом передаю эту сумму в скрипт по которому определяться если пользователь не вкладывается во время то автоматически отправляются на сервер данные, но тут стало несколько критических вопросов 1. Если отключен JavaScript 2. Если пользователь перегружает страницу то время начинается сначала переделал с сессиями, но если я записываю в сессию начальное время то есть
в конце теста проверяю время окончания и время $time_ но тут тоже проблемка функция time() возращает постоянно новое время и в сессии будет постоянно меняться значение при обновлении страницы, вот после этого всего возник такой глупый вопрос. или может можно как то сделать чтобы записывалось значение $time_ только раз не реагируя на обновление страницы? |
||||
|
|||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Что мешает сделать так:
А вообще, задавать этот вопрос стоит в соответствующем форуме, а не здесь. Модератор: Пожалуйста, один топик - один вопрос. |
|||
|
||||
| bars80080 |
|
||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
много не понятного, я б сделал так
некая страница: вы хотите пройти тест? и кнопка далее на страницу с тестом при переходе на страницу с тестом следует соответствующая авторизация. какая, зависит от целей. либо это может быть зарегестрированный посетитель сайта, что сильно упрощает, либо просто пользователь стартуем сессию:
далее у пользователя просто выводятся часы на javascript, показывающие сколько у него осталось времени на странице форма, в которой пользователь заполняет ответы, по нажатию кнопки отправить - форма отправляется скрипту-обработчику если же время выходит, то форма принудительно по таймеру отправляется обработчику и даже если время выходит, а javascript отключён и не может отправить форму, но через некоторое время пользователь отправляет форму обработчику - ничего страшного скрипт-обработчик:
|
||||
|
|||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
bars80080, в твоей модели пользователь не отправив теста может нажать обновить и у него выставится новое время. А это не правильно, поэтому нужно делать как написал я, постом выше - если сесия не установлена, устанавливаем. Таким образом она установится только 1 раз.
|
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
что верно, то верно
|
|||
|
||||
| godvinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 4.4.2008 Где: possibility of mo ving to Kyiv Репутация: нет Всего: 1 |
Aliance,
да этот код создаст только одну копию времени, но тут несколько есть погрешностей ну это на мое мнение потому что у меня немного не такая ситуация тест у меня привязывается конкретно до id лекции, у меня не просто тест один у меня их много то есть пользователь кликает на линк "тест" Попадает на страницу там по твоему примеру кода создается только одна копия (чтобы при обновлении не было погрешности времени) и тут вся загвоздка в том, что когда пользователь нажмет кнопку назад, и перейдет к другой лекции копия сессии остается прежней то есть нужно ее как то удалять но как ? То есть копия времени в памяти висит. может как то можно привязаться к id - лекции id тоже храним в сессии и проверять на его создание и на наличие времени в сессии if (если нет в памяти таких данных ) { сессия[начало теста] = текущее время(); } вообщем на этом я запутался * помогите разобраться Извините если тема не соответствует содержимому, если можно то перенесите ее в пхп раздел, спасибо за понимание. Это сообщение отредактировал(а) godvinn - 26.5.2009, 00:14 |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
нет-нет, слишком надумано. на каждом этапе мы сохраняем в сессии номер этапа, и когда человек откатывается назад, то он просто получит ошибку или тот же кусок, с которого пытался откатиться. если выполнить всё в одном скрипте, разбитом на этапы условиями, то вообще везде будет грузиться одна и та же страница, отсылкой разных пост-переменных
в общем, много теории, когда надо просто сделать, а потом уже смотреть, что не получается и где сессия удаляется просто session_destroy() |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
Что мешает хранить в сессии массив, где ключом будет ID лекции?
|
|||
|
||||
| godvinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 4.4.2008 Где: possibility of mo ving to Kyiv Репутация: нет Всего: 1 |
bars80080,
и когда человек откатывается назад, то он просто получит ошибку или тот же кусок для того чтобы пользователь получил уже созданный кусок я реализовал а вот как сделать чтобы ему выводилась ошибка при попытке откатиться *? чтобы пока он не сдаст тест он был на этой странице. А перед прохождением просто написать предупреждение что тест доступно сдавать только один раз. а удалять уже сессию чтобы ее не было в памяте после прохождения теста, у меня все равно проверяется с базы результатов - проходил этот пользователь тест или нет. Это сообщение отредактировал(а) godvinn - 26.5.2009, 09:26 |
|||
|
||||
| bars80080 |
|
||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
разница будет только в полученных пост-данных |
||||
|
|||||
| godvinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 4.4.2008 Где: possibility of mo ving to Kyiv Репутация: нет Всего: 1 |
разница будет только в полученных пост-данных
то есть *? |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 44 Всего: 315 |
ну смотри
некий этап теста на странице script.php: <form action="script.php" method="post"> или вообще без action этот адрес в форме всегда будет один и тот же, значит браузер будет воспринимать страницу как одну и ту же, просто к ним будут уходить данные формы при обработке данных в скрипте для того чтобы избежать повторной отправки данных при нажатии кнопки "назад" в браузере, надо сделать перезагрузку:
в итоге страница всегда одна, "назад" будет ссылаться на неё же и будет грузить только текущий этап. селектор этапов $_SESSION['step'], как видишь никоим образом клиенту не отправляется, а следовательно подделан быть не может |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
bars80080, а если пользователь закроет браузер?
Кроме того, если не ошибаюсь, внутренние редиректы должны содержать относительные пути |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |