Была у меня проблема думала сделаю вид что все ок =) но все же есть простая форма к примеру Код (Text): <form action="obr.php" method="post"> <input type="text" name="name"> <input type="submit" value="Добавить"> </form> obr.php Код (Text): $name = $_REQUEST["name"]; $name = mysql_real_escape_string($name); mysql_query ("INSERT INTO table (name) VALUES ('$name')"); при заполнении формы если посетитель обновить страницу, то добавиться такое же объявление =( Как это избежать? слышала что в скрытый Input надо вставить что то
если я правильно понимаю, то второе добавление в БД происходит уже после первого субмита формы? ну тогда как простейший вариант, сделай скрытое поле с id записи из БД, после того как запись добавится и при последующих обновлениях проверяй есть там этот идентификатор или нет.
Да, второе обновление происходит после первого нажатия если не ошибаюсь то редирект это перенапрсвление
Да, второе обновление происходит после первого нажатия если не ошибаюсь то редирект это перенапрсвление, он стоит, принцип как на этом форуме нажимаешь отправить вывод сообщ. добавлено и обновляется тут попыталась нажать F5 вышло Было добавлено по крайней мере одно сообщение в этой теме. Возможно, вы захотите изменить содержание своего сообщения Добавлено спустя 1 минуту 39 секунд: А как сделать чтобы происходила проверка по базе есть ли такой id или как лучше?
Код (PHP): $name = $_REQUEST["name"]; $name = mysql_real_escape_string($name); mysql_query ("INSERT INTO table (name) VALUES ('$name')"); header("Location: ".$_SERVER["REQUEST_URI"].""); // <--
Сделай страничку где писалось что допустим заявка принята, можно добавить какие-то детали и т.д. и перенаправляй туда header() Так работают почти все сайты
не очень поняла куда и как вставить вот обработчик Код (Text): <? $name = $_REQUEST["name"]; $name = mysql_real_escape_string($name); ?> <html> <head> </head> <body> <? $name = mysql_real_escape_string($name); $result = mysql_query ("INSERT INTO table (name) VALUES ('$name')"); if ($result == 'true') { echo "<p align='center'>Ваш отзыв добавлен</p>"; echo "<meta http-equiv='refresh' content='2; URL=http://www...>"; } else {echo "<p align='center'>Отзыв не добавлен, вернитесь назад и проверьте правильность ввода</p>";} ?> </body> </html> куда вставить header() ? или нужно создать еще одну страницу?
мляха буха. вы б хоть читали код, который вам дают. Может там "удалить всю базу наxyй" содержится. внимательнее надо быть. идея состоит в том чтобы редиректнуть браузер по какому-нить адресу после обработки формы. тогда по f5 будет обновляться та страница просто.
Код (PHP): if(!$_SESSION['post')){ обрабатываем $_POST, отправляем данные в бд; $_SESSION['post']=true; }
и чего вы добьетесь этим? =) вас мама думать не учила? а папа? бабушка? ну хоть кто-нибудь? думать надо на пару шагов вперед. а если человек решит отправить другую форму? а если он две заполнил в разных вкладках браузера?
html-программист правильно написал, только вместо $_REQUEST надо писать $_POST. зачем нам оставлять возможность те же данные слать через GET-запрос, а? нюанс!!! Добавлено спустя 1 минуту 51 секунду: oksana, F5 повторяет последний запрос. в случае с редиректом повторится не отсылка данных, а просто переход на страницу. в этом суть фокуса. Добавлено спустя 1 минуту 43 секунды: одмины, матное слово, сделайте пожалуйста ссылочку для обращения к пользователю. это ведь нетрудно и практически это стандарт. матное слово вам на голову.
я уже написал код для вставки имени. его надо только вкрячить. Но админы забили на нас =( грусть-печаль. Наверное много работы.
Дедушка меня учил думать. Всегда говорил "ты еще вечный двигатель не изобрел?". И я его пытался всегда изобрести, но у меня никогда не получалось Во первых, сессии не я предложил. Я предложил в хедере отправить Location. Во вторых, о отправке другой формы я подумал, но решил не писать, потому что сессии не я предложил. Код (PHP): if($_SESSION['name']!=$_POST['name'] && $_SESSION['text']!=$_POST['text'] && $_SESSION['shit']!=$_POST['shit']){ обрабатываем $_POST, отправляем в базу данных $_SESSION['name']=$_POST['name']; $_SESSION['text']=$_POST['text']; $_SESSION['shit']=$_POST['shit']; } Добавлено спустя 1 минуту 4 секунды: О $_REQUEST у Попова ничего не сказано.
а, ну понял. код кроме редиректа скопирован у Попова oksana. ну надеюсь Попов oksana поняла о чем речь. Добавлено спустя 45 секунд: p.s. матное слово про тег [ s ] и вообще… Добавлено спустя 42 секунды: вот вместо того чтобы хуи вырезать с форума лучше бы над юзабилити поработали
Не, при чем тут oksana? Я учился программировать по видеокурсам Попова, поэтому не знаю, что такое $_REQUEST
кстати я тоже училась у попова Добавлено спустя 54 секунды: html-программист а как вы оцениваете уроки попова?
Попов в пхп - это как бейсик в программировании. Хочешь научиться программировать - обходи бейсик стороной. Он калечит разум молодых программистов. Так-же и с поповым.