Php 是否在避免表单重新提交后显示确认消息?
我已经创建了一个web页面,在您完成表单后,该页面将重定向到自身,以避免表单重新提交。但是,我想在页面重定向后显示一条确认消息。下面是我目前的代码。我需要echo语句在运行标头后显示在表单下方。我在某个地方读到,我应该在URL中附加一个$\u GET参数,但我不知道这意味着什么,也不知道如何做,因为我是PHP的新手Php 是否在避免表单重新提交后显示确认消息?,php,html,Php,Html,我已经创建了一个web页面,在您完成表单后,该页面将重定向到自身,以避免表单重新提交。但是,我想在页面重定向后显示一条确认消息。下面是我目前的代码。我需要echo语句在运行标头后显示在表单下方。我在某个地方读到,我应该在URL中附加一个$\u GET参数,但我不知道这意味着什么,也不知道如何做,因为我是PHP的新手 <form action="<?php $PHP_SELF ;?>" method="POST"> <p>Name: &l
<form action="<?php $PHP_SELF ;?>" method="POST">
<p>Name: <input type="text" name="name" placeholder="Name"></p>
<p>Email: <input type="text" name="email" placeholder="Email"></p>
<p>Subject: <input type="text" name="subject" placeholder="Subject"></p>
<p>Message: </p>
<p><textarea name="message"></textarea></p>
<input type="submit" name="submit" value="Submit"></form>
<!-- TO-DO: Add form validations -->
<!-- Start PHP Code -->
<?php
if(isset($_POST['submit'])) {
$from = $_POST['email'];
$to = "comp@c0mp.org";
$subject = $_POST['subject'];
$name = $_POST['name'];
$message = $_POST['message'];
mail($to, $subject, "Name: " . $name . "\nMessage: " . $message, "From:" . $from);
header('Location: http://c0mp.org');
echo "Your message has been sent!";
}
?>
<!-- End PHP Code-->
您可以向重定向url添加参数:
header('Location: http://c0mp.org?status=success');
现在,您可以检查该参数并显示正确的消息:
if (isset($_GET['status']) && $_GET['status'] === "success"){
echo "Your message has been sent!";
}
注意:如果将您的邮政编码移动到页面顶部,您可能会遇到问题,因为内容已发送到浏览器,所以它拒绝重定向。实际上,您不需要重定向到其他页面。如果表单元素已经提交,您只需要一个隐藏表单元素的策略
看看这个示例代码。您可以检查发送的值。如果已发送,您将处理并显示您的邮件,否则您将显示表单。
你可以把它改成你需要的
<?php
if (isset($_POST['your_name'])) {
echo 'Your name is: ' . $_POST['your_name'];
} else {
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
Your name: <input type="text" name="your_name" /><br />
<input type="submit" value="Send">
</form>
<?php
}
?>
否则,如果您只想让服务器存储提交状态的内存,只需使用会话即可
<?php
session_start();
if (isset($_POST["name"])){
$_SESSION["submit"] = 1;
}
//Very beginning of the file
?>
<!-- ..maybe something else here (html head meta title...) -->
<?php if(isset($_SESSION["submit"])){ ?>
<h3>You have already submitted</h3>
<?php } ?>
<form action="<?php $PHP_SELF ;?>" method="POST">
<p>Name: <input type="text" name="name" placeholder="Name"></p>
<p>Email: <input type="text" name="email" placeholder="Email"></p>
<p>Subject: <input type="text" name="subject" placeholder="Subject"></p>
<p>Message: </p>
<p><textarea name="message"></textarea></p>
<input type="submit" name="submit" value="Submit"></form>
<!-- TO-DO: Add form validations -->
<!-- Start PHP Code -->
<?php
if(isset($_POST['submit'])) {
$from = $_POST['email'];
$to = "comp@c0mp.org";
$subject = $_POST['subject'];
$name = $_POST['name'];
$message = $_POST['message'];
mail($to, $subject, "Name: " . $name . "\nMessage: " . $message, "From:" . $from);
header('Location: http://c0mp.org');
echo "Your message has been sent!";
}
?>
<!-- End PHP Code-->
您已经提交了
您可以创建新页面并在该页面上重定向,即:create success.php或其他内容并使用标题位置重定向它,就像您所做的一样。对于其他信息,您不能使用header('location:http://c0mp.org)
在HTML代码之后。它将在您的页面中显示警告。唯一的问题是,没有发送回显。它实际上从未显示。@Compressions,因为您的重定向标头已发送。浏览器将在显示“您的邮件已发送!”之前重定向。使用这个:标题(“刷新:2;url=);