我创建了一个网页,在您完成表单后,页面将重定向到自身以避免重新提交表单。但是,我想在重定向页面后显示确认消息。下面,我有我目前的代码。我需要在标题运行后显示在表单下方的echo语句。我在某处读到了我应该在URL中附加一个$ _GET参数,但我不知道这意味着什么,或者如何做,因为我是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-->
答案 0 :(得分:0)
您可以在重定向网址中添加参数:
header('Location: http://c0mp.org?status=success');
现在您可以检查该参数并显示正确的消息:
if (isset($_GET['status']) && $_GET['status'] === "success"){
echo "Your message has been sent!";
}
注意:将您的POST代码移到页面顶部,您可能会遇到因拒绝重定向而导致内容已经发送到浏览器的问题。
答案 1 :(得分:0)
实际上,您不需要重定向到其他页面。您只需要一个策略来隐藏表单元素(如果已提交)。
看看这个示例代码。您检查发送的值。如果已发送,您将处理它并显示您的消息,否则您将显示该表单 您可以将其更改为您需要的。
<?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
}
?>
表示法:HTML代码不正确后使用header()
功能,并会在您的网页中显示警告。
答案 2 :(得分:0)
否则,如果您只想让服务器在内存中提交状态,只需使用session。
<?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-->