![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Drkwv |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Сабж. Пробовал ставить редирект при помощи headers 301 303 и т.п., в ie все работало на ура, однако... браузер для мобильного телефона нокИя
Отсюда вопрос - как грамотно организовать блокировку повторных POST запросов на логическом уровне? Наверняка с этой проблемой кто-либо сталкивался и не раз... Проблема в том, что запросы, одинаковые по содержанию, в принципе, могут и не являться "повторными". А регистрация времени отправки запроса и последующее сравнение будет давать сбои при большом количестве пользователей. Спасибо. Это сообщение отредактировал(а) Drkwv - 20.8.2006, 18:02 |
|||
|
||||
| alergi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 14.8.2006 Где: МОСКВА Репутация: нет Всего: нет |
phpclub.ru/faq/ProblemsLocations
|
|||
|
||||
| Drkwv |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Ха! не все браузеры одинаково полезны. На предложение пойти в Location: телефонный браузер перенаправляет POST - запрос в этот самый Location. Я же говорю - они все ненормальные, эти разработчики.. там такая муть творится.... Добавлено @ 19:32 А можно еще два раза по кнопке сабмита стукнуть и тогда Location не поможет (и скрипты еще отключить, чтобы disabled не сработал) |
|||
|
||||
| alergi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 14.8.2006 Где: МОСКВА Репутация: нет Всего: нет |
Drkwv, и что? Пускай отправляет свой запрос на скрипт, на который он переправлен. Главное что он еще отправляет POST запрос на скрипт прописанный в action.
Главная цель избежать случайной повторной отправки, header-location прекрасно с этим справляется. А если пользователь задасться целью специально повторно отправить данные, то ты его никак не остановишь |
|||
|
||||
| Darhazer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 28.9.2005 Где: HellCity (Sofia, Bulgaria) Репутация: 7 Всего: 29 |
А мы делаем так
Запрос перенаправляем на dispatcher.php, dispatcher.php записиваеть $_POST в $_SESSION['post'] и перенаправливаеть скрипт куда эму надо. И там уже нету POST-запроса, так что далнейшая работа вполне безопасная -------------------- I'm a wheel, I'm a wheel, I can roll, I can feel But you can't stop me turning 'Cause I'm the sun, I'm the sun, I can move, I can run But you'll never stom me burning |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Всегда помогал header( "Location: ..." ); exit;...
Или я не совсем верно задау понял. |
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 1 Всего: 6 |
Mal Hack, ага. Человек же как раз об этом и говорит, что браузер плевал на хедер локейшн и вместе с редиректом отдает пост-данные... Интересный случай... Ща подумаем... -------------------- |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Что за браузер у нокиа? Ссылку на сайт дайте.
|
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 1 Всего: 6 |
Э... ну эт смотря какая нокия...
В последних моделях они заюзали вебкит вебкит - "яблочный"(apple) движок для браузеров сафари. Основан на KHTML из KDE(популярный *nix WinManager) + свои патчи... -------------------- |
|||
|
||||
| Drkwv |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
[HTTP_USER_AGENT] => Nokia6030/2.0 (y3.44) Profile/MIDP-2.0 Configuration/CLDC-1.1 На сайте нокиа об этом ничего не упоминается, видимо им стыдно Подумал что надо хешировать мессагу или ее часть, сливая хеш с timestamp'ом подло записанным в hidden input и когда-нибудь, когда полтора миллиарда китайцев одновременно зайдет на сайт и че-нить односложное напишет, процентов 70 из них отфильтруется. Поэтому надо еще проверять ip и не дай бог они станут заходить через proxy %) задача решения не имеет до тех пор пока невозможно абсолютно точно идентифицировать пользователя Впрочем, можно для проверки использовать session_id и записывать туда содержимое POST с timestamp и тогда все будет совсем зашибись, правда мне запускать сессию для всех подряд зашедших пользователей не нравится и поисковики беситься будут, но это мелочи а cookies можно отключить поэтому их использовать нельзя. решение задачи жутко некрасивое )) Это сообщение отредактировал(а) Drkwv - 21.8.2006, 22:03 |
|||
|
||||
| alergi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 14.8.2006 Где: МОСКВА Репутация: нет Всего: нет |
Drkwv, опиши подробнее, что делает эта Нокиа.
|
|||
|
||||
| Drkwv |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
при перенаправлении - неважно с каким заголовком, переносит содержимое POST запроса на перенаправляемый скрипт. При нажатии кнопки "назад" делает то же самое. |
|||
|
||||
| alergi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 14.8.2006 Где: МОСКВА Репутация: нет Всего: нет |
т.е. у нас есть страница с формой form.php, из формы данные отсылаются на action.php, и затем происходит перенаправление на redirect.php
А нокия отправляет данные на action.php, а потом ещё на redirect.php. Я правильно понял? |
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 1 Всего: 6 |
Предлагаю решение:
Шаг 1 : В сессию пишем переменную-хеш от таймстампа+session_id (тут как фантазия подскажет) и её же дописываем в форму, в хайден поле. выводим форму. Шаг 2 : Нам пришел POST? проверяем его хайден с нашей переменной из сессии, если совпало, выполняем че надо и сносим в сесси переменную -------------------- |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |