#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. Удалите предупреждения и перенаправьте обратно на страницу контактов. При сохранении старых данных и ошибок в сеансе.