我有以下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);怎么解决这个问题?
答案 0 :(得分:2)
答案 1 :(得分:0)
1)您不应该使用$ _REQUEST,因为它会为您的应用程序打开一些安全问题。请改用$ _POST。
2)为什么需要刷新联系页面?另一种方法是使用单独的脚本来处理表单提交,然后在完成后重定向回原始联系页面。
答案 2 :(得分:0)
Dude刷新意味着再次发送请求,其中包含的变量也将被重新发送。 这就是为什么许多网站在提交后都不会刷新这种谨慎的原因......
但是有一个解决方案..
发送邮件后,将脚本重定向到同一页面。
header('Location: http://www.example.com/contact.php');
这样它会将页面请求重新发送到同一页面,但这次没有变量..
或者在成功发送邮件后将其发送到另一个页面..
答案 3 :(得分:0)
刷新页面时,浏览器会从表单重新发送POST数据。取消设置$submit
对您没有任何好处,因为每次执行脚本时都会再次设置它。虽然我不确定刷新页面的目标是什么,但在脚本完成后,您必须编写代码来刷新页面。 (除非您想使用会话来检测是否已提交该表单。)
无论如何,这将有助于刷新。请注意,在标题之前不能有任何输出(甚至是空格)。
<?php header('Refresh: 0'); ?>
当设置$submit
时,你当然必须这样做,而不是。
答案 4 :(得分:0)
你取消了var $ submit,但没有设置$ _REQUEST ['submit']。
所以在每次重新加载时,你再次设置$ submit,数据仍然存储在$ _REQUEST数组中:)