Помощник
|
защита от F5 (рефреш) |
Craftsman_hb
|
Сообщение
#1
|
||
|
|
||
|
|||
Webmaster_hb |
22.4.2008, 12:07;
Ответить: Webmaster_hb
Сообщение
#2
|
|
Craftsman, создаете переменную в сессии на странице формы, на странице обработчике делаете проверку этой сессионной переменной и после проверки первым делом убиваете эту переменную а затем выполняете свой код
|
|
|
Exterior |
22.4.2008, 12:54;
Ответить: Exterior
Сообщение
#3
|
|
Craftsman, а что мешает сделать JavaScript, который после первого сабмита очищает поля и проверяет на их заполненность всех или определенных полей и, если пустые не разрешать сабмить форму вообще?
|
|
|
Webmaster_hb |
22.4.2008, 13:13;
Ответить: Webmaster_hb
Сообщение
#4
|
|
Exterior, вопрос немного другой, человек заполнил форму, нажал сабмит и перешел на другую страницу так вот на ней и жмут F5 и POST заново отсылается
Craftsman, если страница обработчик будет отдельным скриптом в конце которого стоит редирект на страницу вывода результата - то вообще никаких защит делать не надо |
|
|
Craftsman_hb
|
Сообщение
#5
|
|
Webmaster, стартуем сессию, потом по сабмиту если переменная сесси установлена то обрываем, если нет то обрабатываются данные и заносятся в бд и в конце обработчика мы устанавливаем перемнную сессии.
я правильно понял? |
|
|
Craftsman_hb
|
Сообщение
#6
|
|
т.е. получается что для каждой формы своя переменная сессии.
+ мне еще сказали вот примерно такой код будет работать echo '<meta http-equiv="refresh" content="0;url=index.php?id='.$_REQUEST['id'].'">'; exit; |
|
|
Webmaster_hb |
22.4.2008, 15:07;
Ответить: Webmaster_hb
Сообщение
#7
|
|
Craftsman, в первом случае наоборот, устанавливаете сессию перед оптравкой данных
у скрипта приемника этих данных проверяете установлена ли сессия, если да то обрабатываете данные и сбрасываете сессию есди нет - то не обрабатываете данные во втором случае - это просто редирект, не понимаю к чему он тут вообще я говорил просто о том что можно скрипт обработки данных разделить и тогда не надо никакой защиты |
|
|
Craftsman_hb
|
Сообщение
#8
|
|
Webmaster, спасибо. Все стало ясно.
|
|
|
Craftsman_hb
|
Сообщение
#9
|
|
[php]
<body> <form method="POST" action=""> <input type="text" name="name"><br /> <textarea name="text"></textarea><br /> <input type="submit" value="sumit" name="submit"> </form> <?php include'config.php'; session_start(); if (isset($_POST)) { if (isset($_SESSION["myform"])) { echo "Вы уже заполнили эту форму"; } else { $name = $_POST["name"]; $text = $_POST["text"]; $addtocart = "INSERT INTO `refresh` (`id`, `name`, `text`) VALUES ('','$name' ,'$text')"; mysql_query($addtocart,$dbcnx)or die("no result"); $_SESSION["myform"] = "myform"; } } [/php] Да, действительно все работает. |
|
|
DES_hb |
3.6.2008, 3:50;
Ответить: DES_hb
Сообщение
#10
|
|
Не используй сессии, для твоего случая это полный бред.
То что тебе предложили: echo '<meta http-equiv="refresh" content="0;url=index.php?id='.$_REQUEST['id'].'">'; exit; идеальный вариант. Этот кусок отвечает за обновление, но так как content содержит и ссылку, то пользователя сразу(0 - секунд) пере направится на index.php?id='.$_REQUEST['id']. Сессии не стоит втыкать куда попало. |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
WordPress: ускорение, защита, оптимизация | 35 | wp01 | 20049 | 9.11.2022, 14:24 автор: wp01 |
|
WordPress: ускорение, защита, оптимизация | 41 | wp01 | 9610 | 21.9.2020, 16:44 автор: wp01 |
|
Нужна защита сайта от парсинга Сайт парсит WpGrabber, нужна защита |
18 | Limonadik | 4975 | 20.5.2020, 0:18 автор: pyaterka |
|
Удаление вирусов с сайтов, хостинга и серверов. Защита от взлома и устранение уязвимостей | 0 | vixan | 2368 | 3.11.2018, 20:40 автор: vixan |
|
Защита WEB-сайтов от взлома и атак хакеров | Anti DDos | 0 | webitproff | 1484 | 30.10.2017, 16:19 автор: webitproff |
Текстовая версия | Сейчас: 23.4.2024, 13:03 |