Форма не будет перенаправлена на страницу ответа

0

Создал форму и проверяет ошибки с php, но после успешной подачи он не перенаправляет на страницу ответов, которую я создал (thanks.php). Он перенаправляется на ту же страницу контактов с тем же заголовком и форматом страницы, но фактический текст и div bodytext не отображаются. Мне просто нужно перенаправить на страницу ответов, которую я создал. Любая помощь?

Здесь код:

<?php
 $firstnameerror=$browsererror=$sexerror=$dateerror=$visiterror=$judgementerror=$emailerror=$emailconfirmerror="";

 if (isset($_GET['submit'])){
        $browser = htmlspecialchars($_GET['browser']);
        $firstname = htmlspecialchars($_GET['firstname']);
        $lastname = htmlspecialchars($_GET['lastname']);
        $sex = htmlspecialchars($_GET['sex']);
        $date = htmlspecialchars($_GET['date']);
        $visit = htmlspecialchars($_GET['visit']);
        $judgement = htmlspecialchars($_GET['judgement']);
        $message = htmlspecialchars($_GET['message']);
        $email = htmlspecialchars($_GET['email']);
        $emailconfirm = htmlspecialchars($_GET['emailconfirm']);

        echo "<p>form submitted</p>";

        if (isset($browser) && isset($firstname) && isset($lastname) && isset($sex) && isset($date) && isset($visit)
          && isset($judgement) && isset($message) && isset($email) && isset($emailconfirm)){
            echo "<p>all fields were submitted</p>";}

        if (empty($firstname)){
            $firstnameerror .= "<div class= 'error'>First name is missing</div>";}

        if (empty($browser)){
            $browsererror .= "<div class= 'error'>Tell us where you're from</div>";}

        if (empty($sex)){
            $sexerror .= "<div class= 'error'>Gender is missing</div>";}

        if (empty($date)){
            $dateerror .= "<div class= 'error'>Date is missing</div>";}

        if (empty($visit)){
            $visiterror .= "<div class= 'error'>Tell us what you visited</div>";}

        if (empty($judgement)){
            $judgementerror .= "<div class= 'error'>Tell us what you thought</div>";}

        if (!empty($email) && empty($emailconfirm)){
            $emailerror .= "<div class= 'error'>Please confirm your email</div>";}

        if ($email != $emailconfirm){
            $emailconfirmerror .= "<div class='error'>Make sure your emails match.</div>";}

      if (empty($browsererror) && empty($firstnameerror) && empty($sexerror) && empty($dateerror) && empty($visiterror) && empty($judgementerror) && empty($emailerror)
          && empty($emailconfirmerror)){
          header('Location: thanks.php');
          exit();
        }
      }
?>

 <div class="bodytext">
  <form method="get" action="contact.php">
    <h2>Feedback</h2>
    <fieldset>
    <div>
    <label for="browser">Who are you?</label> <span style="font-size:10px;color:red">*Required</span><br>
    <input list="browsers" name="browser" placeholder="Click Arrow ->">
    <datalist id="browsers">
      <option value="Visitor">
        <option value="Town Resident">
          <option value="Cornell University Student">
            <option value="Ithaca College Student">
              <option value="Cornell University Professor">
                <option value="Ithaca College Professor">
                </datalist><?php echo $browsererror ?>
                </div><br><br>
                <div>
                <label for="firstname">First name</label> <span style="font-size:10px;color:red">*Required</span><br>
                <input type="text" name="firstname" placeholder="First Name" value="<?php echo $firstname ?>"/><br>
                <?php echo $firstnameerror ?>
              </div>
              <div>
                <label for="lastname">Last name</label><br><input type="text" name="lastname" placeholder="Last Name" value="<?php echo $lastname ?>"/>
              </div><br><br>
              <div>
                <label for="gender">Gender:</label>
                <input type="radio" name="sex" value="Male" checked>Male
                <input type="radio" name="sex" value="Female">Female<br>
                <?php echo $sexerror ?>
              </div><br>
              <div>
                <label for="date">Date of Visit</label> <span style="font-size:10px;color:red">*Required</span><br>
                <input type="date" name="date" min="2014-10-03" max="2014-10-05"><br>
                <?php echo $dateerror ?>
              </div><br>
              <div>
                <label for="visit">What did you visit?</label> <span style="font-size:10px;color:red">*Required</span><br>
                <input type="checkbox" name="visit" value="Fairway Market" checked>Fairway Market<br>
                <input type="checkbox" name="visit" value="Car Show">Car Show<br>
                <input type="checkbox" name="visit" value="First Peoples' Festival">First Peoples' Festival<br>
                <input type="checkbox" name="visit" value="Concerts">Concerts<br>
                <input type="checkbox" name="visit" value="Finger Lakes Cider Week">Finger Lakes Cider Week<br>
                <input type="checkbox" name="visit" value="Apple Pie Bake-off">Apple Pie Bake-off<br>
                <input type="checkbox" name="visit" value="Gallery Night">Gallery Night<br>
                <input type="checkbox" name="visit" value="Other">Other<br>
                <?php echo $visiterror ?>
              </div><br>
              <div>
                <label for="judgement">What did you think?</label> <span style="font-size:10px;color:red">*Required</span><br>
                <input type="radio" name="judgement" value="Loved It" checked>Loved It<br>
                <input type="radio" name="judgement" value="Liked It">Liked It<br>
                <input type="radio" name="judgement" value="Neutral">No Opinion/Neutral<br>
                <input type="radio" name="judgement" value="Didn't Like It">Didn't Like It<br>
                <input type="radio" name="judgement" value="Hated It">Hated It<br>
                <?php echo $judgementerror ?>
              </div><br>
              <div>
                <label for="message">Suggestions/Improvements</label><br>
                <textarea name="message" id="message" placeholder="Type your message here" value="<?php echo $message ?>"/></textarea><br><br>
               </div>
               <div>
                Do you want to be contacted about<br>future Downtown Ithaca Events?<br>
                <label for="email">E-mail:</label>
                <input type="email" name="email" placeholder="Type E-mail" value="<?php echo $email ?>"/><br>
                <label for="emailconfirm">Confirm:</label>
                <input type="email" name="emailconfirm" id="emailconfirm" placeholder="Confirm E-mail" value="<?php echo $emailconfirm ?>"/><br><br>
                <?php echo $emailerror ?><?php echo $emailconfirmerror ?></div>
                <input name="ResponseForm" type="hidden" value="thanks.php"/>
                <button type="submit" name="submit">Submit</button>
                </fieldset>
              </form>
          </div>
          <script src="JS/myscript.js"></script>
        </body>
        </html>
Теги:
validation
redirect

3 ответа

1

Вы не можете перенаправлять после эхо-контента. Удалите это эхо, и оно будет перенаправлено:

echo "<p>form submitted</p>";
  • 0
    Пробовал, и это не работает, он все еще перенаправляет меня на ту же страницу
  • 0
    Удалите ВСЕ выходные, если вы хотите сделать перенаправление с header
Показать ещё 7 комментариев
0

empty только триггеры, если переменная не существует или установлена в false. Если вы создадите переменную без значения, empty не будет запускаться.

Итак, измените свои условные заявления:

empty($browsererror)

Для того, чтобы:

!$browsererror
-2

Вы не можете использовать header("location: somewhere.php"); после любого выхода не имеет значения, является ли пространство или просто H или Hi, вы просто не можете его использовать.

Перед отображением любых данных вы должны обрабатывать данные формы. Кроме того, вы должны проверять с помощью JS, так как вам не нужно делать запрос innecesarias на сервер и помогать серверу получать адекватные данные и помнить, не выводить ничего перед header("location: somewhere.php"); вызова header("location: somewhere.php");

  • 2
    -1 для утверждения проверки на стороне сервера идет медленно. Никогда не доверяйте проверке на стороне клиента! Что если я выключу свой JavaScript? Тогда я просто могу ввести что захочу?
  • 0
    Нет нет нет нет нет и нет.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню