|
|
|
| Cледующий код должен добавлять запись в таблицу только при отправке данных с помощью
формы, т.е. после нажатия кнопки типа субмит, но... черт возьми, когда кнопка нажата и данные успешно добавлены, отображается страница с надписью "данные успешно добавлены" и когда нажимаешь кнопку обновить (F5), то этиже данные добавляются еще и еще и еще, пока не перестанешь жать F5. Че за фигня, я же не нажимаю на кнопку submit, а данные так и прут?
<?php
if (isset($_POST['posted']))
{
include("./files/connection.inc");
mysql_query("USE andrey", $link_id);
mysql_query("INSERT INTO news(mainpart) VALUES('" . $_POST['mainpart'] ."')", $link_id);
echo "Данные успешно добавлены!<br>";
}
else
{
echo "Ошибка! Данные не добавлены! Error: " . mysql_error();
}
?>
|
| |
|
|
|
|
|
|
|
для: SilentChild
(26.03.2008 в 10:56)
| | Вы снова отправляете POST-данные, нажимая F5 :)
Используйте такой алгоритм.
1) При генерации формы
<?php
$_SESSION['AntiF5']=rand();
$validate = $_SESSION['AntiF5'];
?>
|
И добавляйте в форму hidden с $validate и её значением
2) При получении данных скриптом обработки формы делайте проверку типа
<?php
if($_SESSION['AntiF5']!=$validate or !isset($_SESSION['AntiF5']))
{шлём юзера обратно на форму;exit();}
else
{
$_SESSION['AntiF5']=rand();
пускаем форму на обработку;
}
?>
|
| |
|
|
|
|
|
|
|
для: coder-decoder
(26.03.2008 в 11:16)
| | а не легче просто header поставить после успешного добавления и не париться? | |
|
|
|
|
|
|
|
для: Root
(26.03.2008 в 18:26)
| | :)) ну тоже верно. хотя моё решение -- тоже решение) | |
|
|
|
|
|
|
|
для: coder-decoder
(26.03.2008 в 21:42)
| | Re: root >а не легче просто header поставить после успешного добавления и не париться?
Можно поподробней, а то я не встречался с этой проблемой. Какие команды, и куда их вставить? | |
|
|
|
|
|
|
|
для: SilentChild
(27.03.2008 в 07:58)
| | вместо
echo \"Данные успешно добавлены!<br>\";
header(\'Location: yourpage.php\');
тоесть если нету вывода об ошибке, значит данные добавлены. | |
|
|
|
|
|
|
|
для: Root
(27.03.2008 в 09:16)
| | только слэши не ставьте, их форум добавил | |
|
|
|
|
|
|
|
для: Root
(27.03.2008 в 09:17)
| |
<?php
if (isset($_POST['posted']))
{
include("./files/connection.inc");
mysql_query("USE andrey", $link_id);
mysql_query("INSERT INTO news(mainpart) VALUES('" . $_POST['mainpart'] ."')", $link_id);
echo "Данные успешно добавлены!<br>";
}
else
{
echo "Ошибка! Данные не добавлены! Error: " . mysql_error();
}
?>
|
по вашей проверке выходит, что данные добавлены если isset($_POST['posted']),
<?php
if (isset($_POST['posted'])) {
include("./files/connection.inc");
mysql_query("USE andrey", $link_id);
mysql_query("INSERT INTO news(mainpart) VALUES('" . $_POST['mainpart'] ."')", $link_id);
if(!mysql_error())
header('Location: page.php');
else
echo "Ошибка! Данные не добавлены! Error: " . mysql_error();
}
?>
|
| |
|
|
|
|
|
|
|
для: Root
(27.03.2008 в 09:32)
| |
Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/www/files/connection.inc:5) in /home/httpd/www/newsedit.php on line 9
|
Вот что написал! ?? =( | |
|
|
|
|
|
|
|
для: SilentChild
(27.03.2008 в 10:05)
| | это значит, что вы уже что-то вывели в браузер, header ставиться перед любым выводом в браузер, никаких пробелов, переводов строк и т.д. | |
|
|
|
|
|
|
|
для: Root
(27.03.2008 в 10:13)
| | Какая команда служит для дозаписи пустого поля например в записи под номером 1 таблицы "username", как показано ниже.
+--------------+------------+--------------+
| number | name | family |
+--------------+------------+--------------+
| 1 | | Horev |
+--------------+------------+--------------+
|
| |
|
|
|
|
|
|
|
для: SilentChild
(27.03.2008 в 10:27)
| | не по теме чуть чуть ;)
UPDATE tbl_name SET name = '...' WHERE number = 1;
|
| |
|
|
|
|
|
|
|
для: Root
(27.03.2008 в 10:32)
| | Да действительно, но ради этого вопросика чет не хотелось усложнять и заводить опять тему =), благодарю! | |
|
|
|