验证成功完成后,重定向到email.php页面
在这里,我试图将联系人表单值发送到电子邮件id。我已经发布了contact.php页面代码。我在同一页上完成了服务器端验证。验证成功完成后,应重定向到email.php页面。我该怎么办 Contact.php验证成功完成后,重定向到email.php页面,php,Php,在这里,我试图将联系人表单值发送到电子邮件id。我已经发布了contact.php页面代码。我在同一页上完成了服务器端验证。验证成功完成后,应重定向到email.php页面。我该怎么办 Contact.php <?php $errname = ""; $errmotorcycle = ""; //some codes if($_POST["contacts"] == "all") { // name validation
<?php
$errname = "";
$errmotorcycle = "";
//some codes
if($_POST["contacts"] == "all")
{
// name validation
if(empty($_POST["name"]))
{
$errname = '<span class="error">Should not be empty</span>';
}
else if(preg_match("/^[a-zA-Z ]+$/", $_POST["name"]) === 0)
{
$errname = '<span class="error">Name must be from letters and spaces only</span>';
}
else
{
$errname = '';
}
// motorcycle validation
if($_POST["typeofmotor"] == "empty")
{
$errmotorcycle = '<span class="error">You must select one option</span>';
}
//some codes
}
?>
<html>
<head><title></title></head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" >
<input type="hidden" name="contacts" value="all" />
<table width="980" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="281" height="40" class="rightalign">Name : </td>
<td width="268"><input type="text" name="name" class="normal" value="<?php $_POST['name']; ?>" /></td>
<td width="431" valign="middle"><?php if(isset($errname)) echo $errname; ?></td>
</tr>
//some codes
</table>
</form>
</body>
</html>
发送电子邮件后,您可以像这样重定向浏览器:
<?php
header('Location: http://www.example.com/email.php');
die();
?>
如果您选择该解决方案,请记住,只有在将任何内容发送到浏览器之前,才能发送标题。您不能重定向到其他脚本,也不能使用POST VAR,因为重定向后标题将丢失。您可以包括email.php脚本:
<?php
include( dirname( __FILE__ ) . "/email.php");
不是在发送电子邮件之后。在验证成功完成后,它应该重定向到email.php页面……我通常是这样做的:将表单发布到同一个文件中。如果存在发送邮件的标志,请验证表单。如果验证成功,请发送电子邮件。如果您不想在该文件中包含有关发送邮件的部分,还可以包含另一个处理发送邮件的文件。不要在发送时验证其他请求。检查我对原始问题的评论。如果您在一个PHP请求中进行验证,然后在成功时重定向到电子邮件PHP脚本,那么如何阻止攻击者绕过任何验证直接调用您的电子邮件PHP脚本?不要这样做!在同一个请求上使用include和process。@托比:那么我应该在email.php页面上进行验证吗?只要您在发送的页面上进行验证(包括一个php是非常好的),您就可以了。