Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
验证成功完成后,重定向到email.php页面_Php - Fatal编程技术网

验证成功完成后,重定向到email.php页面

验证成功完成后,重定向到email.php页面,php,Php,在这里,我试图将联系人表单值发送到电子邮件id。我已经发布了contact.php页面代码。我在同一页上完成了服务器端验证。验证成功完成后,应重定向到email.php页面。我该怎么办 Contact.php <?php $errname = ""; $errmotorcycle = ""; //some codes if($_POST["contacts"] == "all") { // name validation

在这里,我试图将联系人表单值发送到电子邮件id。我已经发布了contact.php页面代码。我在同一页上完成了服务器端验证。验证成功完成后,应重定向到email.php页面。我该怎么办

Contact.php

 <?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是非常好的),您就可以了。