mJournal
· Форум · Участники · Журналы · Случайный журнал ·
Главная -> Журналы -> Игорь_Vasinsky -> 16 марта 2010 -> Комментарии
PHP во сне и на яву
 
16 марта 2010
  17: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 - 08:11 20/03/2010  · Журнал · Профиль ·
А не лучше ли сделать сравнение с последней записью в таблице ?
Т.е. логически это выглядит так:
Если последняя запись в БД, равна добавляемой, то выводиться текст "Вы уже добавляли такое сообщение!", если не равна - выполняется условие добавления и выводится сообщение "Ваше сообщение добавлено!". cool.gif


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



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

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

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

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


| Цитата |

 
Игорь_Vasinsky


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


Регистрация 14.03.2010
E-mail Нет доступа
Приват Отправить
WWW Нет данных
ICQ Нет данных
Профиль Перейти
Рейтинг
Рейтинг: 4.4    Голосов: 18
Список друзей
inpost quickxyan sharki
TMake twin zvezda_t
ИНСИ
Календарь
апрель 2024
пн вт ср чт пт сб вс
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          
Статистика
Просмотры
Сегодня: 1
Всего: 79688
Хосты
Сегодня: 1
Всего: 79664
Последний комментарий
[6] Отладка скриптов PHP...
16.12.2011 00:05
Написал: Игорь_Vasinsky
[4] Тернарный оператор (...
09.09.2011 13:49
Написал: Игорь_Vasinsky
[4] Загрузка картинки дл...
09.09.2011 13:09
Написал: Игорь_Vasinsky
[2] Зашита от F5 (повто...
21.03.2010 00:30
Написал: Игорь_Vasinsky