如何将我的 php 验证表单重定向到另一个页面
How to redirect my php validation form to another page
我真的在这里挣扎!我有一个联系表,我将在其中包含它,它使用 jquery 插件,并使用 php 作为备份。这种形式还没有完全定制,但我现在遇到了几天的麻烦。当我使用 MAMP 并单击提交时,验证工作完美!在 php 和 jquery 中。然后将我重定向到 google(最终是其他网站)。
当我将它上传到我公司网站的 TEST 文件夹下时。为了测试它,我得到了验证并且一切正常。当我在修复 jquery 中的错误后提交时,它会像预期的那样推送到 google。当我拿走 jquery 来测试 php 时,验证有效,然后当我点击提交时,它就停留在同一个 index.php 页面上!我一直在努力尝试许多不同的联系人验证表格,而这个表格似乎效果最好。我是一名平面设计师,拥有足够的网络经验,让我遇到 PHP 的麻烦!:) 任何人都可以提供一些建议吗?
这是我的 index.php
<?php include('header_contact.php') ?>
<?php include('testval.php');?>
<div id="section1">
CONTACT FORM
<div id="contact-form">
<!--<form id="contactform" name="contactform" action="<!--?php echo $_SERVER['PHP_SELF']; ?>" method="post" >-->
<form id="contactform" name="contactform" action="index.php" method="post" >
<!--?php
if($sent === true) {
echo "<h2 class='success'>Thanks, your message has been sent successfully</h2>";
} elseif($hasError === true) {
echo '<ul class="errorlist">';
foreach($errorArray as $key => $val) {
echo "<li>" . ucfirst($key) . " field error - $val</li>";
}
echo '</ul>';
}
?>
-->
<input name="Name" type="text" id="Name" placeholder="NAME" value="<?php echo (isset($Name) ? $Name : ""); ?>"><span class='text_error'><?php echo $nameErr;?></span>
<input name="Company" type="text" id="Company" placeholder="COMPANY" value=''>
<input name="Phone" type="tel" id="Phone" placeholder="PHONE" value='<?php echo htmlentities($Phone);?>'>
<span class='text_error'><?php echo $phoneErr;?></span>
<input name="Email" type="Email" placeholder="EMAIL" value="<?php echo (isset($Email) ? $Email : ""); ?>">
<span class='text_error'><?php echo $emailErr;?></span>
<input name="webdesign" type="checkbox" value="Yes" /><label>Web Design: </label><br />
<input name="webhosting" type="checkbox" value="Yes" /><label>Web Hosting: </label><br />
<input name="wordpressdesign" type="checkbox" value="Wordpress Design" /><labeel>Wordpress Design: </labeel><br />
<textarea id="Describe" class="mess" name="Describe" type="text" placeholder="DESCRIBE WHAT YOU NEED"><?php echo isset($_POST['Describe'])? $_POST['Describe'] : ''; ?></textarea>
<span class='text_error'><?php echo $describeErr;?></span>
<!--?php if(in_array('Describe', $validation)): ?><span class="error"><!--?php echo $error_messages['Describe']; ?></span><!--?php endif; ?>
<span class='text_error'>
-->
<input class="input-upload" type="file" name="Upload File">
<input name="Human" placeholder="5 + 3 = ?" value="<?php echo isset($_POST['Human'])?
$_POST['Human'] : ''; ?>">
<span class='text_error'><?php echo $humanErr;?></span>
<!--
<!--?php if(in_array('Human', $validation)): ?><span class="error"><--?php echo $error_messages['Human']; ?></span><--?php endif; ?>
-->
<input id="submit" name="submit" type="submit" value="submit">
</form>
</div><!--END CONTACT FORM-->
</div><!--END SECTION1-->
<?php include('footer.php') ?>
这是我的testval.php
<?php
session_start();
// define variables and set to empty values
$nameErr = $emailErr = $phoneErr = $describeErr = $humanErr = "";
$Name = $Email = $Phone = $Describe = $Human = "";
$hasError = false;
$sent = false;
if(isset($_POST['submit'])) {
$Name = trim(htmlspecialchars($_POST['Name'], ENT_QUOTES));
$Email = trim($_POST['Email']);
$Describe = trim(htmlspecialchars($_POST['Describe'], ENT_QUOTES));
$Phone = trim($_POST['Phone']);
$Email = trim($_POST['Email']);
$webdesign = trim($_POST['webdesign']);
$webhosting = trim($_POST['webhosting']);
$wordpressdesign = trim($_POST['wordpressdesign']);
$Human = trim($_POST['Human']);
$Number = 8;
$fieldsArray = array(
'Name' => $Name,
'Email' => $Email,
'Describe' => $Describe,
'Phone' => $Phone,
'Human' => $Human
);
$errorArray = array();
foreach($fieldsArray as $key => $val) {
switch ($key) {
case 'Name':
if(empty($val)) {
$hasError = true;
$nameErr = "Please enter your name.";
}
case 'Name':
if (!preg_match("/^[a-zA-Z ]*$/", ($val))) {
$hasError = true;
$nameErr = "The value must be alphanumeric.";
}
break;
case 'Phone':
if (!preg_match("/^[0-9]+$/", ($val))) {
$hasError = true;
$phoneErr = "Only numbers and white space allowed.";
}
case 'Phone':
if(empty($val)) {
$hasError = true;
$phoneErr = "Phone is required.";
}
break;
case 'Email':
if(!filter_var($Email, FILTER_VALIDATE_EMAIL)) {
$hasError = true;
$emailErr = "Email is required.";
} else {
$Email = filter_var($Email, FILTER_SANITIZE_EMAIL);
}
break;
case 'Describe' :
if (strlen($val) < 25) {
$hasError = true;
$describeErr = "Please enter at least 25 characters. This way I know more specifically what you need!";
}
case 'Describe' :
if(empty($val)) {
$hasError = true;
$describeErr = "Message is required. This way I know what you need!";
}
break;
case 'Human':
if (!preg_match("/[^\d]?8[^\d]?/", ($val))) {
$hasError = true;
$humanErr = "Not the right answer";
}
case 'Human':
if (!preg_match("/^[0-9]+$/", ($val))) {
$hasError = true;
$humanErr = "Must be a number";
}
case 'Human':
if(empty($val)) {
$hasError = true;
$humanErr = "Are you human?";
}
break;
}
}
//CHECK BOX WRITE UP
if (isset($_POST['webdesign'])) {
$checkBoxValue = "yes";
//is checked
} else {
$checkBoxValue = "no";
//is unchecked
}
if (isset($_POST['webhosting'])) {
$checkBoxValue = "yes";
//is checked
} else {
$checkBoxValue = "no";
//is unchecked
}
if (isset($_POST['wordpressdesign'])) {
$checkBoxValue = "yes";
//is checked
} else {
$checkBoxValue = "no";
//is unchecked
}
//Validation Success!
//Do form processing like email, database etc here
if($hasError !== true) {
$priority = $_POST['priority'];
$type = $_POST['type'];
$message = $_POST['message'];
$formcontent=" From: $Name \n Company: $Company \n Email: $Email \n Phone: $Phone \n Describe: $Describe \n Web Design: $webdesign \n Web Hosting: $webhosting \n Wordpress Design: $wordpressdesign ";
$recipient = "creative@griffard.com";
$subject = "Contact form test with Jquery and PHP";
$mailheader = "From: $Email \r\n";
mail($recipient, $subject, $formcontent, $mailheader);
header("Location:http://www.google.com");
exit();
}
}
?><!--END PHP-->
我暂时取出 jquery 来测试 php 是否正常工作,但是当它位于 index.php 页面时,它就在
下方
这是相关代码。
<script type="text/javascript">
jQuery(document).ready(function($) {
$("#contactform").validate({
rules: {
Name: {
required: true,
minlength: 4
},
Email: {
required: true,
email: true
},
Describe: {
required: true,
minlength: 25
},
Phone: {
required: true,
number: true,
minlength: 7,
maxlength: 15
},
Human: {
required: true,
number: true,
maxlength: 1,
range: [8,8]
}
},
messages: {
Name: {
required: "Please enter your name",
minlength: "Your name seems a bit short doesn't it?"
},
Email: {
required: "We need your email address to contact you",
email: "Please enter a valid email address"
},
Describe: {
required: "Please enter your message",
minlength: "Please enter at least 25 characters. This way I know more specifically what you need!"
},
Phone: {
required: "Please enter your phone number",
number: "Phone has to be numbers",
minlength: "Your phone number should be longer",
maxlength: "Number must be less!"
},
Human: {
required: "Are you human?",
number: "has to be a number",
maxlength: "That's to long!",
range: "Please enter the correct number"
}
},
errorElement: "div", //TAKE CONTROL OF ERROR MESSAGE IN CSS
//IF I CHOOSE TO ADD CSS AND WRAP ERROR WITH BOX
wrapper: "div", //WRAPPER AROUND THE ERROR MESSAGE
errorPlacement: function(error, element) {
error.insertAfter(element);
error.addClass('message'); //ADD A CLASS TO THE WRAPPER
/*
error.css('position', 'absolute');
error.css('left', offset.left + element.outerWidth());
error.css('top', offset.top);
*/
}
});
});
</script>
非常感谢任何帮助!
尝试将 header
位更改为 test.php
末尾的内容,如下所示:
header("Refresh:0; url=index.php");
您似乎正在 header_contact.php
中解析 HTML。您无法在重定向前解析 HTML 内容。尝试切换包含的 php 个文件。
<?php include('testval.php');?>
<?php include('header_contact.php') ?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8 BOM">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>Contact Form TEST</title>
<link rel="stylesheet" type="text/css" href="./css/style.css">
<script type="text/javascript" src="./js/contact.js"></script>
<script type="text/javascript" src="./js/validation.js"></script>
<script type="text/javascript" src="//code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="./js/jquery.validate.min.js"></script>
<!--MOO Script-->
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js"></script>
</head>
<body>
我真的在这里挣扎!我有一个联系表,我将在其中包含它,它使用 jquery 插件,并使用 php 作为备份。这种形式还没有完全定制,但我现在遇到了几天的麻烦。当我使用 MAMP 并单击提交时,验证工作完美!在 php 和 jquery 中。然后将我重定向到 google(最终是其他网站)。 当我将它上传到我公司网站的 TEST 文件夹下时。为了测试它,我得到了验证并且一切正常。当我在修复 jquery 中的错误后提交时,它会像预期的那样推送到 google。当我拿走 jquery 来测试 php 时,验证有效,然后当我点击提交时,它就停留在同一个 index.php 页面上!我一直在努力尝试许多不同的联系人验证表格,而这个表格似乎效果最好。我是一名平面设计师,拥有足够的网络经验,让我遇到 PHP 的麻烦!:) 任何人都可以提供一些建议吗?
这是我的 index.php
<?php include('header_contact.php') ?>
<?php include('testval.php');?>
<div id="section1">
CONTACT FORM
<div id="contact-form">
<!--<form id="contactform" name="contactform" action="<!--?php echo $_SERVER['PHP_SELF']; ?>" method="post" >-->
<form id="contactform" name="contactform" action="index.php" method="post" >
<!--?php
if($sent === true) {
echo "<h2 class='success'>Thanks, your message has been sent successfully</h2>";
} elseif($hasError === true) {
echo '<ul class="errorlist">';
foreach($errorArray as $key => $val) {
echo "<li>" . ucfirst($key) . " field error - $val</li>";
}
echo '</ul>';
}
?>
-->
<input name="Name" type="text" id="Name" placeholder="NAME" value="<?php echo (isset($Name) ? $Name : ""); ?>"><span class='text_error'><?php echo $nameErr;?></span>
<input name="Company" type="text" id="Company" placeholder="COMPANY" value=''>
<input name="Phone" type="tel" id="Phone" placeholder="PHONE" value='<?php echo htmlentities($Phone);?>'>
<span class='text_error'><?php echo $phoneErr;?></span>
<input name="Email" type="Email" placeholder="EMAIL" value="<?php echo (isset($Email) ? $Email : ""); ?>">
<span class='text_error'><?php echo $emailErr;?></span>
<input name="webdesign" type="checkbox" value="Yes" /><label>Web Design: </label><br />
<input name="webhosting" type="checkbox" value="Yes" /><label>Web Hosting: </label><br />
<input name="wordpressdesign" type="checkbox" value="Wordpress Design" /><labeel>Wordpress Design: </labeel><br />
<textarea id="Describe" class="mess" name="Describe" type="text" placeholder="DESCRIBE WHAT YOU NEED"><?php echo isset($_POST['Describe'])? $_POST['Describe'] : ''; ?></textarea>
<span class='text_error'><?php echo $describeErr;?></span>
<!--?php if(in_array('Describe', $validation)): ?><span class="error"><!--?php echo $error_messages['Describe']; ?></span><!--?php endif; ?>
<span class='text_error'>
-->
<input class="input-upload" type="file" name="Upload File">
<input name="Human" placeholder="5 + 3 = ?" value="<?php echo isset($_POST['Human'])?
$_POST['Human'] : ''; ?>">
<span class='text_error'><?php echo $humanErr;?></span>
<!--
<!--?php if(in_array('Human', $validation)): ?><span class="error"><--?php echo $error_messages['Human']; ?></span><--?php endif; ?>
-->
<input id="submit" name="submit" type="submit" value="submit">
</form>
</div><!--END CONTACT FORM-->
</div><!--END SECTION1-->
<?php include('footer.php') ?>
这是我的testval.php
<?php
session_start();
// define variables and set to empty values
$nameErr = $emailErr = $phoneErr = $describeErr = $humanErr = "";
$Name = $Email = $Phone = $Describe = $Human = "";
$hasError = false;
$sent = false;
if(isset($_POST['submit'])) {
$Name = trim(htmlspecialchars($_POST['Name'], ENT_QUOTES));
$Email = trim($_POST['Email']);
$Describe = trim(htmlspecialchars($_POST['Describe'], ENT_QUOTES));
$Phone = trim($_POST['Phone']);
$Email = trim($_POST['Email']);
$webdesign = trim($_POST['webdesign']);
$webhosting = trim($_POST['webhosting']);
$wordpressdesign = trim($_POST['wordpressdesign']);
$Human = trim($_POST['Human']);
$Number = 8;
$fieldsArray = array(
'Name' => $Name,
'Email' => $Email,
'Describe' => $Describe,
'Phone' => $Phone,
'Human' => $Human
);
$errorArray = array();
foreach($fieldsArray as $key => $val) {
switch ($key) {
case 'Name':
if(empty($val)) {
$hasError = true;
$nameErr = "Please enter your name.";
}
case 'Name':
if (!preg_match("/^[a-zA-Z ]*$/", ($val))) {
$hasError = true;
$nameErr = "The value must be alphanumeric.";
}
break;
case 'Phone':
if (!preg_match("/^[0-9]+$/", ($val))) {
$hasError = true;
$phoneErr = "Only numbers and white space allowed.";
}
case 'Phone':
if(empty($val)) {
$hasError = true;
$phoneErr = "Phone is required.";
}
break;
case 'Email':
if(!filter_var($Email, FILTER_VALIDATE_EMAIL)) {
$hasError = true;
$emailErr = "Email is required.";
} else {
$Email = filter_var($Email, FILTER_SANITIZE_EMAIL);
}
break;
case 'Describe' :
if (strlen($val) < 25) {
$hasError = true;
$describeErr = "Please enter at least 25 characters. This way I know more specifically what you need!";
}
case 'Describe' :
if(empty($val)) {
$hasError = true;
$describeErr = "Message is required. This way I know what you need!";
}
break;
case 'Human':
if (!preg_match("/[^\d]?8[^\d]?/", ($val))) {
$hasError = true;
$humanErr = "Not the right answer";
}
case 'Human':
if (!preg_match("/^[0-9]+$/", ($val))) {
$hasError = true;
$humanErr = "Must be a number";
}
case 'Human':
if(empty($val)) {
$hasError = true;
$humanErr = "Are you human?";
}
break;
}
}
//CHECK BOX WRITE UP
if (isset($_POST['webdesign'])) {
$checkBoxValue = "yes";
//is checked
} else {
$checkBoxValue = "no";
//is unchecked
}
if (isset($_POST['webhosting'])) {
$checkBoxValue = "yes";
//is checked
} else {
$checkBoxValue = "no";
//is unchecked
}
if (isset($_POST['wordpressdesign'])) {
$checkBoxValue = "yes";
//is checked
} else {
$checkBoxValue = "no";
//is unchecked
}
//Validation Success!
//Do form processing like email, database etc here
if($hasError !== true) {
$priority = $_POST['priority'];
$type = $_POST['type'];
$message = $_POST['message'];
$formcontent=" From: $Name \n Company: $Company \n Email: $Email \n Phone: $Phone \n Describe: $Describe \n Web Design: $webdesign \n Web Hosting: $webhosting \n Wordpress Design: $wordpressdesign ";
$recipient = "creative@griffard.com";
$subject = "Contact form test with Jquery and PHP";
$mailheader = "From: $Email \r\n";
mail($recipient, $subject, $formcontent, $mailheader);
header("Location:http://www.google.com");
exit();
}
}
?><!--END PHP-->
我暂时取出 jquery 来测试 php 是否正常工作,但是当它位于 index.php 页面时,它就在
下方这是相关代码。
<script type="text/javascript">
jQuery(document).ready(function($) {
$("#contactform").validate({
rules: {
Name: {
required: true,
minlength: 4
},
Email: {
required: true,
email: true
},
Describe: {
required: true,
minlength: 25
},
Phone: {
required: true,
number: true,
minlength: 7,
maxlength: 15
},
Human: {
required: true,
number: true,
maxlength: 1,
range: [8,8]
}
},
messages: {
Name: {
required: "Please enter your name",
minlength: "Your name seems a bit short doesn't it?"
},
Email: {
required: "We need your email address to contact you",
email: "Please enter a valid email address"
},
Describe: {
required: "Please enter your message",
minlength: "Please enter at least 25 characters. This way I know more specifically what you need!"
},
Phone: {
required: "Please enter your phone number",
number: "Phone has to be numbers",
minlength: "Your phone number should be longer",
maxlength: "Number must be less!"
},
Human: {
required: "Are you human?",
number: "has to be a number",
maxlength: "That's to long!",
range: "Please enter the correct number"
}
},
errorElement: "div", //TAKE CONTROL OF ERROR MESSAGE IN CSS
//IF I CHOOSE TO ADD CSS AND WRAP ERROR WITH BOX
wrapper: "div", //WRAPPER AROUND THE ERROR MESSAGE
errorPlacement: function(error, element) {
error.insertAfter(element);
error.addClass('message'); //ADD A CLASS TO THE WRAPPER
/*
error.css('position', 'absolute');
error.css('left', offset.left + element.outerWidth());
error.css('top', offset.top);
*/
}
});
});
</script>
非常感谢任何帮助!
尝试将 header
位更改为 test.php
末尾的内容,如下所示:
header("Refresh:0; url=index.php");
您似乎正在 header_contact.php
中解析 HTML。您无法在重定向前解析 HTML 内容。尝试切换包含的 php 个文件。
<?php include('testval.php');?>
<?php include('header_contact.php') ?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8 BOM">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>Contact Form TEST</title>
<link rel="stylesheet" type="text/css" href="./css/style.css">
<script type="text/javascript" src="./js/contact.js"></script>
<script type="text/javascript" src="./js/validation.js"></script>
<script type="text/javascript" src="//code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="./js/jquery.validate.min.js"></script>
<!--MOO Script-->
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js"></script>
</head>
<body>