PHP 重新加载问题


PHP reload issue

我有以下php脚本:

<?php
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$subject = $_REQUEST['subject'];
$message = $_REQUEST['message'];
$submit = $_REQUEST['submit'];
$to = "torayevagajan@gmail.com";
if(isset($submit))
{
    function isValidEmail($email)
    {
        return eregi("^[_a-z0-9-]+('.[_a-z0-9-]+)*@[a-z0-9-]+('.[a-z0-9-]+)*('.[a-z]{2,3})$", $email);
    }
    if(!empty($name) && !empty($email) && !empty($message) && isValidEmail($email))
    {
        $text = "From: ".$email."<br>Name: ".$name."<br>".$message;
        if(mail($to, $subject, $text) && !empty($submit)){
            echo "<script type='"text/javascript'">alert('"Your message has been sent!'");</script>";
            }
        else{
            echo "<script type='"text/javascript'">alert('"Error Occured!'");</script>";
            }
    }elseif(empty($name) || empty($email) || empty($message))
    {
        echo "<script type='"text/javascript'">alert('"Please fill in the all fields!'");</script>";
    }else echo "<script type='"text/javascript'">alert('"Incorrect email format!'");</script>";
    unset($submit);
}
?>

有以下问题,提交详细信息联系php后,每当我想刷新页面时,它都会一次又一次地尝试发送邮件,我的意思是它尝试运行脚本,即使我取消设置($submit(; 如何解决这个问题?

此问题的解决方案称为重定向后获取

您可以在此处查找示例代码解决方案:

简单的重定向后获取代码示例

1(你不应该使用$_REQUEST,因为它会给你的应用程序带来一些安全问题。请改用 _POST 美元。

2( 为什么需要刷新联系页面?另一种方法是使用单独的脚本来处理表单提交,然后在完成后重定向回原始联系页面。

Dude 刷新意味着再次发送请求,该请求将包括要重新发送的可移动性。这就是为什么许多网站在提交后如此谨慎地不刷新......

但是有一个解决方案..

发送邮件后,将脚本重定向到同一页面。

header('Location: http://www.example.com/contact.php');

这样,它将页面请求重新发送到同一页面,但这次没有变量。

或者在成功发送邮件后将它们发送到另一个页面。

当您刷新页面时,浏览器会从表单重新发送 POST 数据。取消设置$submit对您没有任何好处,因为每次执行脚本时都会重新设置它。虽然我不确定刷新页面的目标是什么,但您必须编写代码以在脚本完成后刷新页面。(除非您要使用会话来检测该表单是否已提交。

无论如何,这将刷新。请注意,标题前不能有任何输出(甚至是空格(。

<?php header('Refresh: 0'); ?>

当然,在设置$submit时必须具有此功能,而不是其他方式。

取消设置var$submit,但不设置$_REQUEST['submit']。

因此,每次重新加载时,您设置的都会再次$submit,数据仍存储在 $_REQUEST 数组:)