Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как правильно сделать обработку формы?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Пытаюсь сделать страницу отзывов
Иванов Владимир
Отправлено: 23 Апреля, 2017 - 14:10:56
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Апр. 2017  


Помог: 0 раз(а)




Прошу о помощи! Сейчас делаю страницу отзывов. Данные успешно передаются с формы в БД и потом выводятся на страничку. Но после перезагрузки страницы данные в массиве остаются и снова они же передаются в БД и затем выводятся на страницу. Как можно сделать, чтобы после заполнения формы и нажатия на кнопку "Отправить" данные записались в БД и вывелись на страничку, а потом массив аннулировался?
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <form method="POST" name="form1">
  3.                                 <p><label for="name" class="id_003">Ваше Имя и Фамилия (мин.2 символа): </p>
  4.                                 <p><input type="text" name="name" id="name" class="id_form_name"></label></p>
  5.                                 <p><label for="text" class="id_005">Ваш отзыв (мин. 2 символа): </p>
  6.                                 <p><textarea name="text" id="text" cols="30" rows="7" class="id_006"></textarea></label></p>
  7.                                 <p><input type="submit" class="id_03 id_04" name="submit" value="Отправить"></p>
  8. </form>
  9.  
  10. <?php
  11.                         if(count($_POST)>0)
  12.                         {
  13.                                 $name = trim($_POST['name']);
  14.                                 $text = trim($_POST['text']);
  15.                                 $date = date("Y:m:d H-i-s");
  16.                                
  17.                                 if ($_SERVER['REQUEST_METHOD'] == 'POST') { //Проверка, была ли отправлена форма наш код
  18.                                         $name = htmlspecialchars($_POST['name']);
  19.                                         $text = htmlspecialchars($_POST['text']);
  20.                                 }
  21.                         }
  22.  
  23. $db = new PDO ('mysql:host=localhost; dbname=my_bd', 'root', '1812dokamul');
  24.                         $db->exec("SET NAMES UTF8");
  25.                         $query = $db -> prepare("INSERT INTO otzyv (Name, Text, Data) VALUES (:name, :text, :date)");
  26.                         $values = [':name' => $name, ':text' => $text, ':date' => $date];
  27.                         $query->execute($values);
  28.                         $msg = 'Спасибо за отзыв! Обращайтесь к нам еще!';
  29.                        
  30.                 ?>
  31.          
  32.                 <div>
  33.                
  34.                 <?php
  35.                         $db = new PDO ('mysql:host=localhost; dbname=my_bd', 'root', '1812dokamul');
  36.                         $db->exec("SET NAMES UTF8");                   
  37.                         foreach($db->query('SELECT Name, Data, Text FROM otzyv') as $row) {
  38.                                 echo '<div id="otzyv">';
  39.                                 echo '<div id="otzyv_name">' . $row['Name'] . '</div>';
  40.                                 echo '<div id="otzyv_data">' . $row['Data'] . '</div>';
  41.                                 echo '<div id="otzyv_text">' . $row['Text'] . '</div>';
  42.                                 echo '</div><br>';                                     
  43.                         }
  44.                 ?>
  45.                 </div>
  46.  
 
 Top
timo
Отправлено: 23 Апреля, 2017 - 18:04:23
Post Id


Забанен


Покинул форум
Сообщений всего: 47
Дата рег-ции: Март 2017  


Помог: 0 раз(а)

[+]


PHP:
скопировать код в буфер обмена
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Создание формы обратной связи</title>
  6. <meta http-equiv="Refresh" content="4; URL=http://index.html/">
  7. </head>
  8. <body>
  9.  
  10. <?PHP
  11.  
  12. $sendto   = "smart-landing@yandex.ru"; // почта, на которую будет приходить письмо
  13. $username = $_POST['name'];   // сохраняем в переменную данные полученные из поля c именем
  14. $usertel = $_POST['telephone']; // сохраняем в переменную данные полученные из поля c телефонным номером
  15. $usermail = $_POST['email']; // сохраняем в переменную данные полученные из поля c адресом электронной почты
  16.  
  17. // Формирование заголовка письма
  18. $subject  = "Новое сообщение";
  19. $headers  = "From: " . strip_tags($usermail) . "\r\n";
  20. $headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
  21. $headers .= "MIME-Version: 1.0\r\n";
  22. $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
  23.  
  24. // Формирование тела письма
  25. $msg  = "<html><body style='font-family:Arial,sans-serif;'>";
  26. $msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>Cообщение с сайта</h2>\r\n";
  27. $msg .= "<p><strong>От кого:</strong> ".$username."</p>\r\n";
  28. $msg .= "<p><strong>Почта:</strong> ".$usermail."</p>\r\n";
  29. $msg .= "<p><strong>Телефон:</strong> ".$usertel."</p>\r\n";
  30. $msg .= "</body></html>";
  31.  
  32. // отправка сообщения
  33. if(@mail($sendto, $subject, $msg, $headers)) {
  34.         echo "<center><img src='images/spasibo.png'></center>";
  35. } else {
  36.         echo "<center><img src='images/ne-otpravleno.png'></center>";
  37. }
  38.  
  39. ?>
  40.  
  41. </body>
  42. </html>


так
 
 Top
Sail
Отправлено: 23 Апреля, 2017 - 19:36:09
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




Иванов Владимир, можно сделать редирект (header("Location:...'); exit();) на эту-же форму после внесения данных в БД, но до вывода в браузер (дабы избежать ошибки);
можно для формы генерировать почти уникальный токен и сравнивать его с предыдущим (сохраненным, например, в сессии) и при их равенстве - не выполнять сохранение в БД.
 
 Top
teleoperator27
Отправлено: 24 Апреля, 2017 - 06:23:05
Post Id



Посетитель


Покинул форум
Сообщений всего: 265
Дата рег-ции: Янв. 2017  


Помог: 21 раз(а)




я бы сделал как написал Sail header("Location:...'); exit(); и к этому еще $_POST = array(); что бы массив опустошить наверняка
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB