Как удалить метод POST

Статус
В этой теме нельзя размещать новые ответы.

fredis69

Постоялец
Регистрация
24 Окт 2008
Сообщения
84
Реакции
2
есть файл в котором находится форма для ввода данных и скрипт добавления этих данных в БД. Данные передаются метадом POST.


PHP:
if (empty($_POST))
{
Форма для ввода данных
}
else
{
Скрипт добавления данных в БД
}

Проблема следующая: При заполнении формы пользователь нажимает кнопку отправить, страница перезагружается и данные добавляются в БД.
И если после этого пользователь просто обновит страницу то данные снова добавятся в БД

Вопрос: Как это исправить?

Можно ли после скрипта добавления как нибуть удалить POST. Чтобы после обнавления страници не происходило повторное добавление данных в БД.

Помогите разобраться.
 
ты на отправки post делай перенаправления на другой файл или переменую а не на post
и не сравнивай пост а переменую
if (empty($_POST[переменая]))
 
Какую переменную?

Чет я недогоняю.

Если вас не затруднит, то можно поподробнее?
 
Проблема следующая: При заполнении формы пользователь нажимает кнопку отправить, страница перезагружается и данные добавляются в БД.
И если после этого пользователь просто обновит страницу то данные снова добавятся в БД
Вопрос: Как это исправить?
Можно ли после скрипта добавления как нибуть удалить POST. Чтобы после обнавления страници не происходило повторное добавление данных в БД.
Делаешь редирект на ту же страницу после добавления чего-либо юзером и всё:)
Какую переменную?
Чет я недогоняю.
Если вас не затруднит, то можно поподробнее?
Так:
PHP:
if (empty($_POST['VAR'])) // переменная,которая передавалась/передаётся
{
Форма для ввода данных
}
else
{
Скрипт добавления данных в БД
}
А ваще,смотри первую часть поста моего
 
Ты проверяешь переменую тоись массив с перемеными под название post на есть, нету
Тоись вот етой функцией empty котороя проверяет масив а не нужную тебе переменую
 
PHP:
header("Location:index.php?time=".time());
 
После того как данные ушли, вызывай header
PHP:
if (empty($_POST['VAR'])) // переменная,которая передавалась/передаётся
{
Форма для ввода данных
}
else
{
Скрипт добавления данных в БД
header('Location: http://site.ru/');	
}
 
я обычно пишу так :


HTML:
if ($_SERVER['REQUEST_METHOD']=='POST'){header("Location: urpage.php");}else{  ;}


после перенапрвления на страницу хеадером метод становится ГЕТ по умолчанию
 
Вот мой код:
PHP:
<?php 
 if (empty($_POST))
{
?>

<p align="center"><strong class="style_header_text" style="font-size:18px;">Форма для добавления отзыва:</strong></p>
<table width="730" align="center"><tr><td>
     <form name="form1" method="post" action="guest_book.php">
          <table><tr><td align="right">
          <p class="text"><span style="color:#FF0000">*</span>Ваше имя:</p>
          </td>
          <td>
          <label>
          <input type="text" name="name" class="form_text" style="width:250px">
          </label>
          </td></tr>
          <tr><td></td><td></td></tr><tr><td></td><td></td></tr>
          <tr><td align="right">
          <p class="text"><span style="color:#FF0000">*</span>Кем вы являетесь:</p>
          </td>
          <td>
          <label>
          <select name="status" class="form_text" style="width:250px">
                    <option></option>
                    <option value="1">Гость</option>
                    <option value="2">Клиент</option>
                    <option value="3">Постоянный клиент</option>
                    </select>
          </label>
          </td></tr>
          <tr><td></td><td></td></tr><tr><td></td><td></td></tr>
          <tr><td align="right" valign="top"> 
          <p class="text"><span style="color:#FF0000">*</span>Текст отзыва:</p>
          </td>
          <td>
          <textarea  type="text" name="text" class="form_text" style=" width:500px; height:150px"></textarea>
          </td></tr>
          <tr>
          <td></td><td>
           <label>
          <input type="submit" name="submit" class="button" id="submit" style=" width:75px;" value="Отправить" >
          </label>
          <p class="text" style="margin-left:0">Поля, помеченные <strong><span style="color:#FF0000">*</span></strong>, обязательные для заполнения!</p>
          </td></tr>
         </table>
      </form>
</td></tr></table>
<?php
}
else
{
// обрабатывае пришедшие данные перед вставкой в таблицу БД
	$date = date ("Y-m-d");
	$dat = date ("d.m.Y");
	$time = date("H:i:s");
	if (isset($_POST['name'])){$name = $_POST['name'];}
	if (isset($_POST['status'])){$status = $_POST['status'];}
	if (isset($_POST['text'])){$text = $_POST['text'];}
	#удаляем из текста различные слеши, скобки, кавычки;
$name = stripslashes($name);
#Защищаем от ввода различных тегов и скриптов; 
$name = htmlspecialchars($name);
	// проверяем на наличие ошибок (например, длина имени)
	$error = false;
	$errort = '';
	if (strlen($name) == '')
	{
		$error = true;
		$errort .= 'Вы не ввели своё имя.<br>';
	}
	if (strlen($status) == '')
	{
		$error = true;
		$errort .= 'Вы не выбрали кем вы являетесь.<br>';
	}
	if (strlen($text) == '')
	{
		$error = true;
		$errort .= 'Вы не ввели текст отзыва.<br>';
	}

// если ошибок нет, то добавляем данные о юзере в таблицу
if(!$error)
{
  /*Здесь пишем что можно заносить информацию в базу*/  

  $result = mysql_query ("INSERT INTO guest (date,time,dat,status,name,text)  VALUES ('$date','$time','$dat','$status','$name','$text')");
  if ($result == 'true') 
  {
   echo "<p align='center'><h2 align='center'>Ваш отзыв успешо добывлен!</h2></p>";
  }
   else {echo "<table bgcolor='#666666' width='700' align='center'><tr><td><p><h3 align='center' style='color:red;'>Ваш отзыв не добавлен, по техническим причинам, попробуйте позже!</h3></p></td></tr></table>
      <br>
";}
  }
else
{
print '<h3 style="color:#FF0000" align="center">Возникли следующие ошибки:</h3><p style="color:#FF0000" align="center">' . $errort.'</p><br>';

// Проверяем статус выбранный пользователем, определяем его и автоматом выводим
if($status == '')
{
 $stat = selected;
}
else
{
  if($status == '1')
  {
   $stat1 = selected;
  }
  else
  {
    if($status == '2')
    {
     $stat2 = selected;
    }
	else
	{
      if($status == '3')
      {
       $stat3 = selected;
      }
    }
  }
}
?>
<table width="730" align="center"><tr><td>
 <form name="form1" method="post" action="guest_book.php" >
          <table><tr><td align="right">
          <p class="text"><span style="color:#FF0000">*</span>Ваше имя:</p>
          </td>
          <td>
          <label>
          <input type="text" name="name" class="form_text" style="width:250px" value="<?php echo $name; ?>">
          </label>
          </td></tr>
          <tr><td></td><td></td></tr><tr><td></td><td></td></tr>
          <tr><td align="right">
          <p class="text"><span style="color:#FF0000">*</span>Кем вы являетесь:</p>
          </td>
          <td>
          <label>
          <select name="status" class="form_text" style="width:250px">
                    <option <?php echo $stat; ?>></option>
                    <option <?php echo $stat1; ?> value="1">Гость</option>
                    <option <?php echo $stat2; ?> value="2">Клиент</option>
                    <option <?php echo $stat3; ?> value="3">Постоянный клиент</option>
                    </select>
          </label>
          </td></tr>
          <tr><td></td><td></td></tr><tr><td></td><td></td></tr>
          <tr><td align="right" valign="top"> 
          <p class="text"><span style="color:#FF0000">*</span>Текст отзыва:</p>
          </td>
          <td>
          <textarea  type="text" name="text" class="form_text" style=" width:500px; height:150px"><?php echo $text; ?></textarea>
          </td></tr>
          <tr>
          <td></td><td>
           <label>
          <input type="submit" name="submit" class="button" id="submit" style=" width:75px;" value="Отправить" >
          </label>
          <p class="text" style="margin-left:0">Поля, помеченные <strong><span style="color:#FF0000">*</span></strong>, обязательные для заполнения!</p>
          </td></tr>
         </table>
      </form>
</td></tr></table>
<?php 
}
}
?>

Что делать я не могу понять
 
для начала не много научись отделять вывод HTML и PHP иначе функция header не будет корректно работать (кроме случая использования ob_*())
Обычно это так (простейший вариант:(
PHP:
$str = '';
$str.= 'here text';
$sql = 'here sql query';
$str.= 'here another text';
// и тогда уже в конце кода
echo $str;// выведет все собранное

В твоем случае после добавления записи лучше сделать чуть иначе:
PHP:
  $err = 1;
  $result = mysql_query ("INSERT INTO guest (date,time,dat,status,name,text)  VALUES ('$date','$time','$dat','$status','$name','$text')"); 
  if ($result == 'true')  { 
    $err = 0;
  }else {
    $err = 2;
  }
  header("Location:index.php?err=".$err."&time=".time());
  exit;
и далее в начале кода обрабатываем переменную $_GET['err']
PHP:
switch(intval($_GET['err']) {
  case 0:
    echo 'ok';
  break;
  case 1:
    echo 'error other';
  break;
  case 2:
    echo 'error Insert';
  break;
  default:
    echo 'other error';
  break;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху