| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Повторная запись в гостевую книгу при обновлении |
| Автор: Leshik 6.9.2007, 18:33 | ||
| Здрасте =) Помогите пожалуйста. Написал скрипт простейшей гостевой книги(практически списано из "Изучаем Perl")/
После того, как я ввожу имя и сообщение и жму на кнопку "отправить", если я обновляю страницу, то те же самые данные записываются ещё раз. И так всё время. Подскажите, пожалуйста, как от этого можно избавиться. Прошу извинить меня, за размещение не в ветке "CGI-программирование"( немного промахнулся |
| Автор: maxim1000 6.9.2007, 18:48 |
| Perl'а я не знаю, но сталкивался с подобной ситуацией решил её так: ответом на запрос является перенаправление на страницу completed.html (к примеру), на которой написано что-то в духе "выполнено" даже если пользователь будет обновлять её, ему просто каждый раз будут писать "выполнено" |
| Автор: Leshik 6.9.2007, 21:48 |
| Спасибо. О таком решении я тоже задумывался, но всё же может быть есть ещё какой-нибудь способ? |
| Автор: comtat 6.9.2007, 22:29 |
ИМХО редирект на другую страницу самый правильный вариант |
| Автор: StealtH 6.9.2007, 23:11 |
| Имхо, из предложенного выше - самый идельный способ, сам им пользуюсь при любом запросе методом POST. Как вариант, попробуй в базу писать md5 хеш поста, и потом при новом посте искать по этому ключу, если не найдено - добавляешь пост, если найдено - пишешь об этом пользователю или редиректишь на главную страницу. |
| Автор: Leshik 6.9.2007, 23:27 |
А не могли бы вы обьяснить как это сделать или где про это можно почитать. Спасибо |
| Автор: StealtH 7.9.2007, 09:46 | ||||
Запросто ! man Digest::MD5 Там даже примеры есть. Если вкратце, то делаешь хэш(md5_hex($post)) и пишешь его в отдельный файл, потом при добавлении поста формируешь md5-сумму поста и ищешь подобную в файле с хэшами.
Примерно так, но такой подход не есть зергуд в плане быстродействия и ресурсов, особенно когда количество записей в гесте будет больше 5-6 тысяч. |
| Автор: SHAmanovi4 7.9.2007, 14:30 | ||||
А я делаю self-redirect. То есть, перенаправляю на ту же страницу. Если нужно вывести сообщение, то делаю так:
А при выводе формы и гостевой палю, есть ли этот параметр.
|
| Автор: Leshik 7.9.2007, 17:34 |
| Всем спасибо |