2016-01-23 4 views
0

Я искал по всему Интернету, но я все еще смущен. У меня есть форма, которую я отправляю и перенаправляю к себе. Затем он перекликается с переменными на экране. Но как я могу предотвратить повторное заполнение формы после того, как пользователь нажмет кнопку обновления? Является ли это достижимым и как? Вот кодИзбегайте повторной отправки формы после перенаправления на ту же страницу php

  <!DOCTYPE HTML> 
     <html> 
     <head> 
     </head> 
     <body> 

     <?php 
     // define variables and set to empty values 
     $name = $email = $gender = $comment = $website = ""; 

     if ($_SERVER["REQUEST_METHOD"] == "POST") { 
      $name = test_input($_POST["name"]); 
      $email = test_input($_POST["email"]); 
      $website = test_input($_POST["website"]); 
      $comment = test_input($_POST["comment"]); 
      $gender = test_input($_POST["gender"]); 
      echo "<h2>Your Input:</h2>"; 
     echo $name; 
     echo "<br>"; 
     echo $email; 
     echo "<br>"; 
     echo $website; 
     echo "<br>"; 
     echo $comment; 
     echo "<br>"; 
     echo $gender; 
     } 
     if($_SERVER["REQUEST_METHOD"] == "GET") 
     { 
      header('Location: '. $_SERVER['PHP_SELF'] , true, 303); 
     } 

     function test_input($data) { 
      $data = trim($data); 
      $data = stripslashes($data); 
      $data = htmlspecialchars($data); 
      return $data; 
     } 
     ?> 

     <h2>PHP Form Validation Example</h2> 
     <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
      Name: <input type="text" name="name"> 
      <br><br> 
      E-mail: <input type="text" name="email"> 
      <br><br> 
      Website: <input type="text" name="website"> 
      <br><br> 
      Comment: <textarea name="comment" rows="5" cols="40"></textarea> 
      <br><br> 
      Gender: 
      <input type="radio" name="gender" value="female">Female 
      <input type="radio" name="gender" value="male">Male 
      <br><br> 
      <input type="submit" name="submit" value="Submit"> 
     </form> 

Я новичок в этом .... Пожалуйста, помогите.

+0

Вы должны просто остановить эту странную привычку иметь форму представить сценарий, который генерируется форма. Я никогда не понимал, почему это делается. Это вызывает массу проблем. У вас есть одно действие, которое генерирует представление, форму и другое действие, которое обрабатывает форму. Итак, два отдельных сценария. Легкая, эффективная и прозрачная. – arkascha

+0

Даже если я перестаю отправлять на тот же скрипт, форма сохраняет повторную отправку на странице обновления. Не могли бы вы посоветовать, как остановить это? И как я должен показывать сообщения об ошибках пользователю при отправке неверных данных ??? – user3485417

ответ

0

Просто, если разместить значение существует, не показываю кнопку отправки или удалить поведение кнопки отправки, как этот

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
     Name: <input type="text" name="name"> 
     <br><br> 
     E-mail: <input type="text" name="email"> 
     <br><br> 
     Website: <input type="text" name="website"> 
     <br><br> 
     Comment: <textarea name="comment" rows="5" cols="40"></textarea> 
     <br><br> 
     Gender: 
     <input type="radio" name="gender" value="female">Female 
     <input type="radio" name="gender" value="male">Male 
     <br><br> 
     <?php if(!isset($_POST["name"])) { ?> 
     <input type="submit" name="submit" value="Submit"> 
     <?php } ?> 
    </form> 
Смежные вопросы