Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

20.03.2006, 21:11
|
|
Постоянный
Регистрация: 21.12.2005
Сообщений: 620
Провел на форуме: 1867718
Репутация:
268
|
|
Снова php
У меня есть скрипт в нем форма для постинга сообщений, метод передачи данных POST. Вроде все ok,после того как я добавил сообщение и перезагрузил страницу оно появляеться на странице, но если нажать обновить в браузере, то добавляеться еще одна запись с предыдущими данными! Как профиксить?
|
|
|

20.03.2006, 23:24
|
|
Участник форума
Регистрация: 17.12.2005
Сообщений: 121
Провел на форуме: 551495
Репутация:
227
|
|
Конечно что появляется, броузер повторяет полностью Post запрос и скрипт его обрабатывает.
Надо ставить флажок в сессии, что данные уже пришли и были обработаны, и при повторном постинге не реагировать на них, есть и другие методы, но не имея понятия что твой скрипт делает тяжело что-то конкретное посоветовать, уточняй 
|
|
|

20.03.2006, 23:39
|
|
Тут может быть ваша реклама.
Регистрация: 30.07.2005
Сообщений: 1,243
Провел на форуме: 4520553
Репутация:
1316
|
|
обнуляй данные после добавления
|
|
|

21.03.2006, 12:09
|
|
Познающий
Регистрация: 13.02.2006
Сообщений: 88
Провел на форуме: 304371
Репутация:
16
|
|
можно и проще
Код:
if ($_SERVER['REQUEST_METHOD']=="POST"){
// add data
header("Location: ".$_SERVER['PHP_SELF']."?data=added);
}else{
// form
}
т.е. после добавления даных тебя перекинет и пост масив будет убит...
|
|
|

21.03.2006, 12:13
|
|
Новичок
Регистрация: 23.06.2005
Сообщений: 28
Провел на форуме: 80272
Репутация:
0
|
|
1) добавить спец айди и проверять его, на наличие в БД
2) проверять все поля, на наличие в БД
3) как было сказано выше: редирект 
|
|
|

21.03.2006, 15:55
|
|
Постоянный
Регистрация: 02.10.2005
Сообщений: 490
Провел на форуме: 2333839
Репутация:
212
|
|
откуда знаешь что бд???
|
|
|

21.03.2006, 22:35
|
|
Познавший АНТИЧАТ
Регистрация: 26.11.2004
Сообщений: 1,149
Провел на форуме: 941818
Репутация:
569
|
|
2 xPow
Ты предлогаешь при каждом постинге прогонять всю БД и искать наличие точного вхождения? =))) герой. Ты после того как пропылесосишь ковер тоже на коленках полаешь и ищешь, не осталась ли пыль где-нить? =))
2 NeX
все просто, пишешь
<form action='add.php'>
в add.php пишешь код, что нужен, далее
header("Location: ".$_SERVER['HTTP_REFERER']);echo 'exit';exit;
и все. Хоть пообжимайся F5
|
|
|

22.03.2006, 01:14
|
|
Новичок
Регистрация: 23.06.2005
Сообщений: 28
Провел на форуме: 80272
Репутация:
0
|
|
Trinux, уважаемы перед тем как ехидничать немного сначала почитали б доки.
и если ты лишь поверхносно знаком с бд, в часности реляционными, то знал бы, что даже с миллионами записей, по индексу будет искать мгновенно.
2 NeX
все просто, пишешь
<form action='add.php'>
в add.php пишешь код, что нужен, далее
header("Location: ".$_SERVER['HTTP_REFERER']);echo 'exit';exit;
и все. Хоть пообжимайся F5
двумя постами выше это есть
header("Location: ".$_SERVER['HTTP_REFERER']);
к мому же еще совет даешь бажный!
die('exit'); ?
умник нашелся...
вотъ.
Последний раз редактировалось xPow; 22.03.2006 в 01:19..
|
|
|

22.03.2006, 11:16
|
|
Познающий
Регистрация: 13.02.2006
Сообщений: 88
Провел на форуме: 304371
Репутация:
16
|
|
Какой выгон уже начали писать, зачем айди??? зачем база обыкновенный пост или гет...
...
сюда
|
|
|

22.03.2006, 12:44
|
|
Познавший АНТИЧАТ
Регистрация: 26.11.2004
Сообщений: 1,149
Провел на форуме: 941818
Репутация:
569
|
|
2 xPow
Парень, поверь на слово, с sql я знаком не поверхностно а на практике. Смотри nnm.ru, моя работа, стоит на mysql и уж поверь, за год поддержки нового движка я перееюзал все возможные способы оптимизации. И поверь мне на слово, если в миллионной таблице ты ставишь индекс хотя бы на поле типа CHAR\VARCHAR то твой сайт умрет после 100 хитов в день. А опираясь на твою вторую рекомендацию, мне получается и все текстовые поля придется глядеть? =))) а на них чего поставим? Текстовые поля никакая реляционная БД не индексит =))) mysql предлагает FULLTEXT. Да, работает он достаточно быстро, но не на миллионе записей. Проверять наличие записей по все БД глупо! Архитекторы не разбирают свое зданить после того как они его построили, чтобы убедится что все верно было сделано.
P.S. Знаешь, любитель доков, в мире не существует ни одной реляционной БД на текущей момент.
двумя постами выше это есть
Да, одно и то же. Только в моес способе это отдельный файл, а "двумя постами выше" человек предлогал пихать код прям туда же
к мому же еще совет даешь бажный!
да, признаю, правильно:
header('Location: '.str_replace("\n", "\r", $_SERVER['HTTP_REFERER']));
echo 'exit';exit; ?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|