X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> защита от F5 (рефреш)
Craftsman_hb
Craftsman_hb
Topic Starter сообщение 22.4.2008, 11:35; Ответить: Craftsman_hb
Сообщение #1


привет. помогите со скриптом защиты от рефреша. т.е. нужно чтобы данные при обновлении страницы не передавались дважды в базу. самое логичное реквестить из базы последнюю запись и сравнивать ее с тем что посылается. можно ли это как то проще сделать? может можно как то обнулить чтоли содержимое $_post?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 22.4.2008, 12:07; Ответить: Webmaster_hb
Сообщение #2


Craftsman, создаете переменную в сессии на странице формы, на странице обработчике делаете проверку этой сессионной переменной и после проверки первым делом убиваете эту переменную а затем выполняете свой код
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Exterior
Exterior
сообщение 22.4.2008, 12:54; Ответить: Exterior
Сообщение #3


Craftsman, а что мешает сделать JavaScript, который после первого сабмита очищает поля и проверяет на их заполненность всех или определенных полей и, если пустые не разрешать сабмить форму вообще?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 22.4.2008, 13:13; Ответить: Webmaster_hb
Сообщение #4


Exterior, вопрос немного другой, человек заполнил форму, нажал сабмит и перешел на другую страницу так вот на ней и жмут F5 и POST заново отсылается

Craftsman, если страница обработчик будет отдельным скриптом в конце которого стоит редирект на страницу вывода результата - то вообще никаких защит делать не надо
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Craftsman_hb
Craftsman_hb
Topic Starter сообщение 22.4.2008, 14:16; Ответить: Craftsman_hb
Сообщение #5


Webmaster, стартуем сессию, потом по сабмиту если переменная сесси установлена то обрываем, если нет то обрабатываются данные и заносятся в бд и в конце обработчика мы устанавливаем перемнную сессии.

я правильно понял?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Craftsman_hb
Craftsman_hb
Topic Starter сообщение 22.4.2008, 14:19; Ответить: Craftsman_hb
Сообщение #6


т.е. получается что для каждой формы своя переменная сессии.
+ мне еще сказали вот примерно такой код будет работать echo '<meta http-equiv="refresh" content="0;url=index.php?id='.$_REQUEST['id'].'">';
exit;
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 22.4.2008, 15:07; Ответить: Webmaster_hb
Сообщение #7


Craftsman, в первом случае наоборот, устанавливаете сессию перед оптравкой данных
у скрипта приемника этих данных проверяете установлена ли сессия, если да то обрабатываете данные и сбрасываете сессию
есди нет - то не обрабатываете данные

во втором случае - это просто редирект, не понимаю к чему он тут вообще
я говорил просто о том что можно скрипт обработки данных разделить и тогда не надо никакой защиты
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Craftsman_hb
Craftsman_hb
Topic Starter сообщение 22.4.2008, 15:19; Ответить: Craftsman_hb
Сообщение #8


Webmaster, спасибо. Все стало ясно.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Craftsman_hb
Craftsman_hb
Topic Starter сообщение 23.4.2008, 0:40; Ответить: 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
DES_hb
сообщение 3.6.2008, 3:50; Ответить: DES_hb
Сообщение #10


Не используй сессии, для твоего случая это полный бред.
То что тебе предложили:
(Craftsman_hb @ 22.4.2008, 17:19) *
echo '<meta http-equiv="refresh" content="0;url=index.php?id='.$_REQUEST['id'].'">';
exit;

идеальный вариант. Этот кусок отвечает за обновление, но так как content содержит и ссылку, то пользователя сразу(0 - секунд) пере направится на index.php?id='.$_REQUEST['id'].
Сессии не стоит втыкать куда попало.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) WordPress: ускорение, защита, оптимизация
35 wp01 20036 9.11.2022, 14:24
автор: wp01
Горячая тема (нет новых ответов) WordPress: ускорение, защита, оптимизация
41 wp01 9600 21.9.2020, 16:44
автор: wp01
Открытая тема (нет новых ответов) Нужна защита сайта от парсинга
Сайт парсит WpGrabber, нужна защита
18 Limonadik 4973 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


 



RSS Текстовая версия Сейчас: 19.4.2024, 17:19
Дизайн