Я пытаюсь улучшить наши контактные формы с помощью проверки php, я могу получить форму для проверки и показать ошибки, когда каждое поле не заполнено правильно, сообщение об успешности появляется, когда форма заполняется и проверяется правильно, и отправляется электронное письмо мне с информацией из формы.
Моя проблема в том, что я не могу заставить заголовок («location» …) часть кода работать. Вместо того, чтобы просто «Форма была отправлена успешно», появляется под формой после отправки, я бы хотел, чтобы она перешла на страницу «Спасибо».
Вот мой код:
Это моя страница формы:
<?php include('validate.php'); ?> <!DOCTYPE html> <html lang="en"> <head> <title>TEST</title> <style> input, textarea {font-size: 1em;} p.error {background: #ffd; color: red;} p.error:before {content: "Error:";} p.success {background: #ffd; color: green;} p.success:before {content: "Success:";} p.error, p.success {font-weight: bold;} </style> </head> <body> <h2>Please fill up the form below and submit.</h2> <?=$error?> <form action="html_form_to_validate.php" method="post"> <table> <tr> <td>Name: </td> <td> <input type="text" name="name" placeholder="Name *(Required)" value="<?=@$name?>"/> </td> </tr> <tr> <td>Company: </td> <td><input type="text" name="company" placeholder="Company" value="<?=@$company?>"/> </td> </tr> <tr> <td>Hear: </td> <td><input type="text" name="hear" placeholder="How did you hear about us?" value="<?=@$hear?>"/></td> </tr> <tr> <td>Email: </td> <td><input type="text" name="email" value="<?=@$email?>"/></td> </tr> <tr> <td>Phone: </td> <td><input type="text" name="phone" value="<?=@$phone?>"/></td> </tr> <tr> <td>Message: </td> <td><textarea name="comments"><?=@$comments?></textarea></td> </tr> </table> <input type="submit" name="submit" value="Submit"/> <input type="reset" name="reset" value="Reset"/> </form> <?php if (isset($_POST['submit']) && $error == '') { // if there is no error, then process further echo "<p class='success'>Form has been submitted successfully.</p>"; // showing success message $name=$_POST['name']; $company=$_POST['company']; $telephone=$_POST['telephone']; $email=$_POST['email']; $hear=$_POST['hear']; $comments=$_POST['comments']; $to="chris@example.com"; $subject="Request for information"; $from="sales@example.com"; $message="<html> <body topmargin='0'> <div align='center'> <table border='0' width='736' id='table1' cellspacing='0' cellpadding='0'> <tr> <td height='129' bgcolor='#EDEDE9' width='736' valign='top' style='margin-left: 10'> <table border='0' id='table2' cellspacing='10' cellpadding='15' width='726'> <tr> <td width='676' valign='top' bgcolor='#FFFFFF'> <p align='left'> <img border='0' src='http://www.example.com/images/logo.png' align='left' hspace='0'> </p> <p align='left'> <br><br> <b> <font face='Verdana' color='#0078c1' style='font-size: 20pt'> Request for information</font></b></p> <p align='left'> </p> </td> </tr> <tr> <td width='676' valign='top' bgcolor='#FFFFFF'> <p> <font face='Verdana' size='2'>The following person has been on <a href='http://www.example.com'> <font color='#0078c1'>www.example.com</font></a> and requesting information from our 'contact form'.</font></p> <p> <font face='Verdana' size='2'>Name: </font><font face='Verdana' size='2'><b>$name</b> </font></p> <p> <font face='Verdana' size='2'>Company: </font><font face='Verdana' size='2'><b>$company</b></font></p> <p> <font face='Verdana' size='2'>Telephone: <font face='Verdana' size='2'><b>$telephone</b></font></p> <p> <font face='Verdana' size='2'>Email: <font face='Verdana' size='2'><b>$email</b></font></p> <p> <font face='Verdana' size='2'>Heard about us from: </font><font face='Verdana' size='2'><b>$hear</b></font></p> <p> <font face='Verdana' size='2'>Message: <font face='Verdana' size='2'><b>$comments</b></font></p> </td> </tr> </table> </td> </tr> </table> </div> </body> </html> "; $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; $headers .= "From: $from\r\n"; @mail($to, $subject, $message, $headers); header('Location: http://www.example.com/contact/thank-you.php'); } ?> </body> </html>
И мой файл validate.php:
<?php $error = ""; // Initialize error as blank if (isset($_POST['submit'])) { // check if the form is submitted #### removing extra white spaces & escaping harmful characters #### $name = trim($_POST['name']); $company = trim($_POST['company']); $hear = trim($_POST['hear']); $email = $_POST['email']; $phone = $_POST['phone']; $comments = $_POST['comments']; #### start validating input data #### ##################################### # Validate Name # // if name is not 3-20 characters long, throw error if (strlen($name) < 3 OR strlen($name) > 20) { $error .= '<p class="error">Name should be within 3-20 characters long.</p>'; } # Validate Email # // if email is invalid, throw error if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { // you can also use regex to do same $error .= '<p class="error">Enter a valid email address.</p>'; } # Validate Phone # // if phone is invalid, throw error if (!ctype_digit($phone) OR strlen($phone) < 9) { $error .= '<p class="error">Enter a valid telephone number.</p>'; } # Validate Comments # if (strlen($comments)==0 OR strlen($comments)>240) { $error .= '<p class="error">Please enter your message less than 240 characters.</p>'; } #### end validating input data #### ##################################### }
Я новичок и использовал сценарии из других мест, чтобы делать то, что я хотел сделать – так что будьте милыми lol
благодаря
Крис