![]() |
PHP | Обнуление массива $_POST при обновлении
Текстовое поле + кнопка "отправить". После отправления сообщение записывается в файл. Если нажать кнопку "обновить" в браузере, то сообщение записывается опять! Как сделать, чтобы оно записывалось только при нажатии на кнопку "отправить"? Вот пример, на всякий случай:
PHP код:
|
Перед добавлением коммента в файл выполняйте поиск. Если есть совпадение - значит игнорировать.
|
Это общепринятое решение? Похоже на костыль... А если я два раза нажму на кнопку "отправить", то, по идее, должно добавиться два коммента, но добавится только один. Ну может с комментариями этот подход и оправдан, а если я таким образом добавляю какие-нибудь очки(карму)? Как сделать, чтобы очки добавлялись только при нажатии на кнопку, но не при обновлении страницы?
Хочу добавить, что мне нужно, не чтобы "и так пойдет", а чтобы "истина восторжествовала", я ведь пока только учусь, хотелось бы сразу уяснить правильный подход к решению тривиальных задач. |
Ну если хотите "правильный подход", то начните с того, что гостевая книга использует базу данных с сохранением IP отправителя и времени отправки сообщения (прошло меньше 30 секунд от предыдущего сообщения - с добавлением нового отказать. Антифлуд-система). Также можно добавить скрытое поле с каким-нибудь md5-хэшем от системного времени, которое включается в БД в качестве ключа: ключ найден - добавлять не будем. С "кармой" аналогично. Вам в любом случае придётся записывать "кто, кому, за что" во избежание накрутки счётчика. Кроме того, подобные рейтинговые системы реализуются на AJAX для удобства пользователей, а значит никакие обновления страниц не помогут (но могут помочь повторные клики, поэтому в БД и записываем кучу информации).
А вот чтобы $_POST при обновлении обнулять - это вам, видимо, браузеры переписывать надо. |
Coutty, +1, видать задело : ))
delog, в вашем примере первое сообщение можно считать общепринятым. Ведь иногда куда сложнее в программе составить условие и разные "защиты от дурка", чем сам алгоритм выполняемой части программы. Предложу еще свой метод Предположим, у нас есть форма в файле 1.html PHP код:
PHP код:
Код:
<script language="JavaScript"> В этом весь фокус. Этот метод используется на многих форумах, при отправлении сообщения. Coutty, правильный ход мысли? |
Спасибо, пример с ява-скриптом - то, что надо. Только вывод на экран надо затолкать в 1.html(php), а в 2.php оставить запись в файл.
Цитата:
|
Время: 08:55. |
Время: 08:55.
© OSzone.net 2001-