2012-03-24 2 views
0

Привет У меня есть «липкая» форма, которая после успешного завершения я хочу очистить поля Я попытался разместить $ _POST = array(); в различных разделах заявлений IF,Не удалось очистить форму после успешного завершения

Это весь файл, это форма, которую получают послал к себе и записывает то, что вы написали в файле вне вебсервера

Спасибо за любую помощь

<!-- BEGIN CHANGABLE CONTENT --> 

<?php require('templates/header.html') ?> 
<div id="main" role="main"> 
<h1>Welcome to the site</h1> 
<h2>Please fill out the form</h2> 
<p>Register and become a member!<br />Members enjoy newsletters and free swag courtesy of Tony Browns Design</p> 

<form action="index.php" method='post' id='login_form'> 
    <legend><h2>Registration Form</h2></legend> 
    <fieldset> 
     <div> 
      <label for="fname">First Name: </label> 
      <input type="text" name='fname' id='fname' size='20' 
       value="<?php if (isset($_POST['fname'])){echo htmlspecialchars($_POST['fname']);} ?>" /> 
     </div> 
     <div> 
      <label for="lname">Last Name: </label> 
      <input type="text" name='lname' id='lname' size='20' 
       value="<?php if(isset($_POST['lname'])){echo htmlspecialchars($_POST['lname']);} ?>" /> 
     </div> 
     <div> 
      <label for="email">Email: </label> 
      <input type="text" name='email' id='email' size='20' 
       value="<?php if(isset($_POST['fname'])) {echo htmlspecialchars($_POST['email']);} ?>" /> 
     </div> 

     <div> 
      <label for="quotes" class='move-top'>Quote: </label> 
      <textarea name="quotes" id="quote" cols="22" rows="8">Enter your quotation here.</textarea><br /> 
     </div> 
     <div> 
      <input type="submit" value='submit' /> 
     </div> 
    </fieldset> 
</form> 



<?php 

$file = '../quotes_from_users.txt'; 

//Check if form is submitted 
if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    if (empty($_POST['fname']) && (empty($_POST['lname']) && (empty($_POST['email'])))) { 
     echo '<p style="color: #d00; text-shadow: -1px -1px 0 #200; font-size: 1.4em;">You need to fill in the all the fields!</p>'; 
    } 

    if (!empty($_POST['quotes']) && ($_POST['quotes'] != 'Enter your quotation here.')) { 
     if (is_writable($file)) { 
      file_put_contents($file, $_POST['quotes'] . PHP_EOL, FILE_APPEND | LOCK_EX); 

      echo '<p style="color= #cf5 font-size: 1.4em;">Your quote has been stored.</p>'; 
      $_POST = array(); 

     } else { 
      echo '<p style="color: #d00; text-shadow: -1px -1px 0 #200;">Your quote could not be stored due to a systems error, sorry about that!</p>'; 
     } 
    } else { 
     echo '<p style="color: #d00; text-shadow: -1px -1px 0 #200; font-size: 1.4em;">Please enter a quote!</p>'; 
    } 



} 


?> 
     <?php require('templates/footer.html'); ?> 
    </div> 
<!-- END CHANGABLE CONTENT --> 
+2

Вы можете включить файл формы? – MichaelRushton

+0

Я просто добавил новый файл –

ответ

0

Ваша логика кажется ошибочной, если вы публикуете только цитату, она будет сохранена с помощью этого кода.

Это должно быть что-то вроде:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    // the next line has changed 
    if (empty($_POST['fname']) || (empty($_POST['lname']) || (empty($_POST['email'])))) { 
     echo '<p style="color: #d00; text-shadow: -1px -1px 0 #200; font-size: 1.4em;">You need to fill in the all the fields!</p>'; 
    } 
    else // added 
    { 
    if (!empty($_POST['quotes']) && ($_POST['quotes'] != 'Enter your quotation here.')) { 
     if (is_writable($file)) { 
      file_put_contents($file, $_POST['quotes'] . PHP_EOL, FILE_APPEND); 

      echo '<p style="color= #cf5 font-size: 1.4em;">Your quote has been stored.</p>'; 
      // only empty $_POST on a successful submission 
      $_POST = array(); 


     } else { 
      echo '<p style="color: #d00; text-shadow: -1px -1px 0 #200;">Your quote could not be stored due to a systems error, sorry about that!</p>'; 
     } 
    } else { 
     echo '<p style="color: #d00; text-shadow: -1px -1px 0 #200; font-size: 1.4em;">Please enter a quote!</p>'; 
    } 
    } 
} 

То есть если предположить, что ваша форма будет добавлена ​​в templates/footer.html

+0

, так что все, что вы меняете, это AND в OR, я пробовал ваше решение и не очищает поля, работает форма, кроме полей, которые не очищены –

+0

oh файл отправляется в файл $ file ../user_quotes.txt –

+0

@pixel 67 Нет, это потому, что форма уже заполнена * до того, как вы обработаете отправленную форму. Вам нужно переместить обрабатывающую часть вверх, прежде чем создавать форму. – jeroen

Смежные вопросы