mJournal
· Форум · Участники · Журналы · Случайный журнал ·
Главная -> Журналы -> Игорь_Vasinsky -> 16 марта 2010 -> Комментарии
PHP во сне и на яву
 
16 марта 2010
  13:40   Зашита от F5 (повторная передача данных))
#1 Зашита от F5 (повторная передача данных))

Ранне почемуто этот момент меня мало интересовал, но сейчас решил уделить ему своё внимание.

О мерах: предотвращение повторной передачи данных методом $_POST (если пользователь не специально или предномеренно обновил страницу)

Знающим людям этот пример известен, а не знающим будет полезен.

Итак:

есть страница с формой (регистрация или авторизация - не суть)

Цитата
<form method='POST' action='post.php'>
<input type='text' name='login'>
<input type='pass' name='password'>
<input type='submit' value='пошёл !'>
</form>


есть страница куда эти данные отправляются (об обработки этих данных в целях безопасности я писать не буду - это другая тема)

Цитата
<?php
session_start();  // стартуем сессию
if (empty($_SESSION['post_ok'])){ // проверяем - если сессия пуста то
// получаем данные
// обрабатываем
// записываем
$post_ok = 'true';
session_register('post_ok');
}
else { // если сессия не пуста то:
echo "Ваши данные уже были переданы и записаны";
}
?>


Это только алгоритм, т.к. предназначение каждой формы может иметь специфический характер , например если форма регистрации - то ещё необходимо проверить - может такой логин уже занят.

P.S. МОЖНО НЕ ИСПОЛЬЗОВАТЬ СЕССИИ, А СДЕЛАТЬ РЕДИРЕКТ ЧЕРЕЗ HEADER и POST будут очищены.


| Цитата || Печать || Комментарии:2 |

   Следующая запись »

  Написал: UnWind - 04:11 20/03/2010  · Журнал · Профиль ·
А не лучше ли сделать сравнение с последней записью в таблице ?
Т.е. логически это выглядит так:
Если последняя запись в БД, равна добавляемой, то выводиться текст "Вы уже добавляли такое сообщение!", если не равна - выполняется условие добавления и выводится сообщение "Ваше сообщение добавлено!". cool.gif


| Цитата |
  Написал: Игорь_Vasinsky - 20:30 20/03/2010  · Журнал · Профиль ·
Цитата (UnWind @ 04:11 20/03/2010)
А не лучше ли сделать сравнение с последней записью в таблице ?



ну зачем же тревожить лишний раз mysql

лучше мы сделаем:

header('location: '. $_SERVER['PHP_SELF']);

но это далеко ещё не СПАМ контроль.


| Цитата |

 
Игорь_Vasinsky


★ЛжеЭксперт★


Регистрация 14.03.2010
E-mail Отправить
Приват Отправить
WWW Перейти
ICQ 608058768
Профиль Перейти
Рейтинг
Рейтинг: 4.2    Голосов: 14
Список друзей
inpost INSIDIOUS quickxyan
sharki stepan twin
zvezda_t
Календарь
март 2012
пн вт ср чт пт сб вс
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Статистика
Просмотры
Сегодня: 1
Всего: 7093
Хосты
Сегодня: 1
Всего: 7081
Последний комментарий
[6] Отладка скриптов PHP...
15.12.2011 20:05
Написал: Игорь_Vasinsky
[4] Тернарный оператор (...
09.09.2011 09:49
Написал: Игорь_Vasinsky
[4] Загрузка картинки дл...
09.09.2011 09:09
Написал: Игорь_Vasinsky
[2] Зашита от F5 (повто...
20.03.2010 20:30
Написал: Игорь_Vasinsky