Как я могу обновить страницу при отправке формы и выдать сообщение об ошибке? - PullRequest
0 голосов
/ 14 декабря 2010

Сейчас у меня есть форма с простыми полями ввода, такими как имя, номер телефона, адрес электронной почты и комментарий.

<div id="specialsForm"><h3>Interested in this coupon? Email us! </h3>           
<form method="post" action="emailMonthlySpecials.php">    
Name: <input name="name" type="text" /><br />
Email: <input name="email" type="text" /><br />
Phone Number: <input name="phone" type="text" /><br /><br />
Comment: <br/>
<textarea name="comment" rows="5" cols="30"></textarea><br /><br />
<input type="submit" value="Submit Email"/>
</form></div>

В моем emailMonthlySpecials.php у меня есть следующий код:

 $name = $_REQUEST['name'] ;
  $email = $_REQUEST['email'] ;
  $phone = $_REQUEST['phone'] ;
  $comment = $_REQUEST['comment'] ;

  if(!empty($name) && (!empty($email) || !empty($phone))) {
  mail("my.email@hotmail.com", "Monthly Specials Email",
    "Name: $name 
     Email: $email 
     Phone Number: $phone
     Comment: $comment", "From: $email" );

  } else {
    echo '<span class="error">A name, comment, phone number/email is required</span><br />'; 
  };

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

Я пытался

  header("Location: ".$_SERVER["PHP_SELF"]);

И это не сработало .. Есть идеи?

Ответы [ 2 ]

1 голос
/ 14 декабря 2010

Иметь страницу, которая отображает форму, также там, где форма отправлена.Это было в случае ошибки, страницу можно просто продолжить и снова показать форму.то есть.

contact.php (псевдокод)

<?

if ([form submitted]) {

    if ([fields filled out correctly]) {
        [send mail]
        header('location: thankyou.php');
    } else {
        $error = 'error message';
    }

}

?>

<span class="error"><?=$error;?></span>
<form method="post" action="contact.php">
    [field]
</form>

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

0 голосов
/ 14 декабря 2010

Если вы хотите перенаправить обратно к абоненту, то вы должны написать это:

header("Location: ".$_SERVER["REQUEST_URI"]);
...