PHP重新加载问题
我有以下php脚本:PHP重新加载问题,php,post-redirect-get,Php,Post Redirect Get,我有以下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 isValid
<?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)您不应该使用$\u请求,因为它会为您的应用程序带来一些安全问题。改用$\u POST
2) 为什么需要刷新联系人页面?另一种方法是使用单独的脚本处理表单提交,然后在完成后重定向回原始联系人页面 Dude refresh意味着再次发送请求,该请求将包含也要重新发送的变量。。 这就是为什么许多网站在提交后会如此谨慎地不刷新 但是有一个解决办法 发送邮件后,将脚本重定向到同一页面
header('Location: http://www.example.com/contact.php');
这样,它会将页面请求重新发送到同一页面,但这次没有变量
或者在成功发送邮件后将其发送到另一页。此问题的解决方案称为 您可以在此处查找示例代码解决方案:
刷新页面时,浏览器会从表单中重新发送POST数据。取消设置
$submit
对您没有任何好处,因为每次执行脚本时都会再次设置它。虽然我不确定刷新页面的目标是什么,但您必须在脚本完成后编写代码来刷新页面。(除非您想使用会话检测该表单是否已提交。)
无论如何,这将有助于刷新。请注意,标题前不能有任何输出(即使是空白)
<?php header('Refresh: 0'); ?>
当然,当设置了
$submit
时,您必须设置此选项,否则不能设置。您可以取消设置var$submit,但不能取消设置$\u请求['submit']
因此,在每次重新加载时,您再次设置$submit,并且数据仍然存储在$\u请求数组中:)您从
$\u POST
或$\u get
中获得$\u请求
数据?无论哪种方式,重新加载页面时提交都是正常行为。但是如果您使用$\u GET
您可以尝试在成功提交时用javascript更改窗口。位置
。@user873286然后您应该使用$\u POST而不是$\u REQUEST。快速而肮脏的解决方案的可能重复是在成功提交时用
回显小表单。LOL@Rajat“Dude refresh意味着再次发送请求”杜德试着这样做,然后评论:制作一个表单,将动作作为另一个页面,并在该动作页面上将数据插入数据库…然后让您的用户保持该动作页面,并刷新该页面..并检查您的数据库..使用(f5)或刷新按钮..问题是:主页、关于、联系人都在同一页面中。一页设计。所以在提交表单后,如果有错误,我会输出错误,否则我会回显成功。因此,每当我刷新页面时,它都会尝试重新发送。我认为取消设置$submit是可能的,为什么不可能?如果您单击url并再次输入,刷新将不会再次发送变量。这样您就向服务器发出了新请求。因为如果您的用户在提交变量后手动刷新页面(通过f5)它将再次发送变量。在我的脚本之前和之后都有html元素,我希望在提交联系人详细信息后,它会显示javascript警报并保持在同一页面上,但在第一次打开页面时,我的意思是,如果用户要刷新页面,它不应该再次发送相同的值并尝试发送消息