[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: "Обнуление" данных формы после отправки
Gate007
Создал небольшой скрипт-регистратор пользователей:
<? 
mysql_connect(localhost,doctor) OR DIE("Не могу создать соединение ");
mysql_select_db('doctor');
echo '
<html>
<body>
<form action="/admin.php" method="POST">
логин: <input type = text name=user_name> пароль: <input type = password name=user_pass> <br>
<input type = submit name=add value="Добавить юзера"><br>
</form>'
;
if (!empty($_POST['add']))
{
if ((!empty($_POST['user_name'])) AND (!empty($_POST['user_pass'])))
{
$query = sprintf("INSERT INTO user (name,pass) VALUES ('%s','%s')",
mysql_real_escape_string($_POST['user_name']),
mysql_real_escape_string($_POST['user_pass']));
mysql_query($query);
echo 'Пользователь успешно добавлен!';
}
else {echo 'No data!';}
}

$_POST['add']='';
echo '</body>
</html>'

?>

Работает вроде как неплохо, но есть одно Но. После ввода данных и тычка на кнопку если обновить страницу, то в базу добавляется еще один пользователь с предыдущими параметрами.
Насколько я понимаю, надо где-то обнулить переданные параметры. Но как это сделать? Проблема в том, что мой сайт будет наполняться информацией людьми, зачастую далекими от компьютеров. Таким образом, хотелось бы как-то избежать подобных "ложных срабатываний". Иначе представьте себе если таких полей будет не 2 а 20, и все они пойдут в базу?

P.S: так как являюсь очень начинающим пхп кодером (а именно-кодю уже три дня smile.gif ) то буду рад за возможные замечания по тексту скрипта.



Спустя 7 минут, 11 секунд (11.11.2009 - 23:54) Gabriel написал(а):
    if ( ( !empty($_POST['user_name'] ) ) AND ( !empty($_POST['user_pass'] ) ) ) {
$query = sprintf("INSERT INTO user (name,pass) VALUES ('%s','%s')", mysql_real_escape_string($_POST['user_name']),
mysql_real_escape_string($_POST['user_pass']));
mysql_query($query);
header('Status:200');
header('Refresh:2; URL='. $_SERVER['PHP_SELF'] .'?rnd='. time());
echo 'Пользователь успешно добавлен!';
exit();
}

отправляем юзера на туже страницу через header с добавлением рандомного числа. header('Status:200'); специально для хрома иначе ниче он не сделает.

Спустя 8 минут, 28 секунд (12.11.2009 - 00:02) Gate007 написал(а):
Warning: Cannot modify header information - headers already sent by (output started at /var/www/doctor/admin.php:10) in /var/www/doctor/admin.php on line 17

Warning: Cannot modify header information - headers already sent by (output started at /var/www/doctor/admin.php:10) in /var/www/doctor/admin.php on line 18
Пользователь успешно добавлен!

вот вывод...

Спустя 3 минуты, 28 секунд (12.11.2009 - 00:06) Gabriel написал(а):
Gate007
до отправки хедера ничего не должно выводиться в браузер. таких тем на форуме целый вагон

Спустя 23 минуты, 44 секунды (12.11.2009 - 00:30) Krevedko написал(а):
небось еще бом стоит в пхп файлах )

Спустя 8 часов, 3 минуты, 15 секунд (12.11.2009 - 08:33) Gate007 написал(а):
Цитата (Krevedko @ 12.11.2009 - 00:30)
небось еще бом стоит в пхп файлах )

Это вы про BOM из utf-8? Не стоит, все в ANSI.

Я тут чего то походу тотально непонимаю.
<? 
mysql_connect(localhost,doctor) OR DIE("Не могу создать соединение ");
mysql_select_db('doctor');
if ($sendform==true)
{
header('Status:200');
header('Refresh:2; URL='. $_SERVER['PHP_SELF'] .'?rnd='. time());
}
echo '
<html>
<body>
<form action="/admin2.php" method="POST">
логин: <input type = text name=user_name> пароль: <input type = password name=user_pass> <br>
<input type = submit name=add value="Добавить юзера"><br>
</form>'
;
if (!empty($_POST['add']))
{
if ( ( !empty($_POST['user_name'] ) ) AND ( !empty($_POST['user_pass'] ) ) ) {
$query = sprintf("INSERT INTO user (name,pass) VALUES ('%s','%s')", mysql_real_escape_string($_POST['user_name']),
mysql_real_escape_string($_POST['user_pass']));
mysql_query($query);
$sendform=true;
echo 'Пользователь успешно добавлен!';
exit();
}
else {echo 'No data!';}
}

$_POST['add']='';
echo '</body>
</html>'

?>

По моей задумке по тычку на кнопку Добавить юзера если происходит добавление юзера, то $sendform=true, который и не должен давать "постить" старые данные.

Спустя 8 минут, 16 секунд (12.11.2009 - 08:41) Gate007 написал(а):
Разобрался.
Заменил if ($sendform==true) на if (!empty($_POST['add'])).
Всем спасибо.

Спустя 5 часов, 37 минут, 1 секунда (12.11.2009 - 14:18) Krevedko написал(а):
я просто предположил. обычно матюги с хедером бывают из-за бом в пхп...сам на этом попадал. он думает, что идет вывод в браузер и ругается.
ну получилось и супер )
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.