PHP форма, останавливающая перенаправление на страницу php

#javascript #php #html #redirect

#javascript #php #HTML #перенаправление

Вопрос:

У меня есть контактная форма, все работает, недавно я изменил сообщения об ошибках, чтобы они отображались во всплывающем окне javascript, так как я не хочу, чтобы пользователи видели страницу .php.

Живая страница: https://lewis-morley.co.uk/contact /

Index.html без заголовка (в нем нет ничего полезного, просто объявление местоположений CSS и т.д.)

 <!-- Navigation -->
<nav class="navbar navbar-custom navbar-fixed-top" role="navigation">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-main-collapse">
                Menu <i class="fa fa-bars"></i>
            </button>
            <a class="navbar-brand page-scroll" href="#page-top">
            <p>  <img src="img/logo.png" style="width:40;height:40;" alt="Logo"> <span class="light">Lewis</span> Morley </p>
            </a>
        </div>

        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse navbar-right navbar-main-collapse">
            <ul class="nav navbar-nav">
                <!-- Hidden li included to remove active class from about link when scrolled up past about section -->
                <li class="hidden">
                    <a href="#page-top"></a>
                </li>
                <li>
                    <a class="page-scroll" href="https://www.lewis-morley.co.uk">Home</a>
                </li>
                <li>
                    <a class="page-scroll" href="https://www.lewis-morley.co.uk/portfolio">Portfolio</a>
                </li>
                <li>
                    <a class="page-scroll" href="https://www.lewis-morley.co.uk/contact">Contact</a>
                </li>
                <li>
                    <a class="page-scroll" href="https://lewis-morley.co.uk/documents">Documents</a>
                </li>
            </ul>
        </div>
        <!-- /.navbar-collapse -->
    </div>
    <!-- /.container -->
</nav>

<!-- Intro Header -->
<header class="intro">
    <div class="intro-body">
        <div class="container">
            <div class="row">
                <div class="col-md-8 col-md-offset-2">
                    <h1 class="brand-heading">Lewis Morley</h1>
                      <h3>Contact</h3>
                        </p>

                    </a>
                </div>
            </div>
        </div>
    </div>
</header>
<!-- form -->
<center>

                  <form action="takeform.php" method="POST">
                    <p>
                    <font color="white">Email Address </font><br>
                    <input name="email" size="64" maxlength="64"/>
                    </p>

                    <p>
                    <font color="white">Name</font><br>
                    <input name="name" size="64" maxlength="64"/>
                    </p>

                    <p>
                    <font color="white">Subject </font> <br>
                    <input name="subject" size="64" maxlength="64"/>
                    </p>

                    <p>
                  <font color="white"> Message </font> <br>
                    <textarea name="content" rows="10" cols="60"></textarea>
                   </p>

                    <p>
                    <input type="submit" name="send" value="Send Your Message"/><br>
                    </p>
                    </form>

                  </center>
<!-- End Form -->





<!-- Footer -->
<footer>
    <div class="container text-center">
      <font color="white">  <p>Copyright amp;copy; Lewis Morley 2016-2017</p></fo
    </div>
</footer>

<!-- jQuery -->
<script src="vendor/jquery/jquery.js"></script>

<!-- Bootstrap Core JavaScript -->
<script src="vendor/bootstrap/js/bootstrap.min.js"></script>

<!-- Plugin JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script>

<!-- Google Maps API Key - Use your own API key to enable the map feature. More information on the Google Maps API can be found at https://developers.google.com/maps/ -->
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCRngKslUGJTlibkQ3FkfTxj3Xss1UlZDAamp;sensor=false"></script>

<!-- Theme JavaScript -->
<script src="js/grayscale.min.js"></script>
 

takeform.php:

    <html>
<head>
<title>Thanks For Contacting Me</title>
</head>
<body>
<?php



  $name = $_POST['name'];
      $email = $_POST['email'];
      $content = $_POST['content'];
      $from = 'From: lewis-morley.co.uk';
      $to = 'lm@lewis-morley.co.uk';
      $subject = $_POST['subject'];
      $body = "From:rn" .$name."rnrnE-Mail:rn" .$email."rnrnMessage:rn" .$content;
  # We'll make a list of error messages in an array
  $messages = array();
# Allow only reasonable email addresses
if (!preg_match("/^[w -.~] @[-w.!] $/", $email)) {
$messages[] = "That is not a valid email address. Try something like example@example.com.";
}
# Allow only reasonable real names
if (!preg_match("/^[w  -'"] $/", $name)) {
$messages[] = "The name field must contain only " .
"alphabetical characters, numbers, spaces, and " .
"reasonable punctuation. We apologize for any inconvenience.";
}
# CAREFUL: don't allow hackers to sneak line breaks and additional
# headers into the message and trick us into spamming for them!
$subject = preg_replace('/s /', ' ', $subject);
# Make sure the subject isn't blank afterwards!
if (preg_match('/^s*$/', $subject)) {
$messages[] = "Please specify a subject for your message.";
}

$content = $_POST['content'];
# Make sure the message has a body
if (preg_match('/^s*$/', $content)) {
$messages[] = "Your message was blank. Did you mean to say " .
"something?";
}
  if (count($messages)) {
    # There were problems, so tell the user and
    # don't send the message yet
    foreach ($messages as $message) {
      echo '<script type="text/javascript">
             alert("'.$message.'");
        </script>';

    }

  } else {
    # Send the email - we're done
   mail ($to, $subject, $body, $from);
   echo '<script type="text/javascript">
              window.location = "https://www.lewis-morley.co.uk/contact/success.html"
         </script>';
  }
?>
</body>
</html>
 

То, что я пытаюсь сделать, находится в takeform.php страница, где написано

 foreach ($messages as $message) {
  echo '<script type="text/javascript">
         alert("'.$message.'");
    </script>';
 

Я просто хочу, чтобы всплывали сообщения об ошибках, они нажимали OK и могли исправлять ошибки формы, однако в настоящее время это вызывает перенаправление на takeform.php который остается пустым после отображения всплывающего окна.

Я попытался заставить его перенаправить обратно на страницу контактов через JS (мгновенное перенаправление), но он теряет данные в форме.

Комментарии:

1. В этом случае используйте вызов AJAX phppot.com/jquery/php-contact-form-with-jquery-ajax

2. Удалите предупреждения и перенаправьте обратно на страницу контактов. При сохранении старых данных и ошибок в сеансе.