我的页面上有一个表单。
如果提交了表单,我会再次重定向到该页面。
在页面上,我想显示保存数据的通知。
我正在寻找一种干净的方式来了解我必须显示通知。
首先我想到在网址上添加一些东西:
/page?notify=1
但我不想更改网址。
然后我考虑在重定向之前设置一个会话。
在页面上,我检查会话是否已设置,如果是,则显示通知并取消设置。
这是否是一种可接受的方式,或者是否有更好/更清洁的方式?
答案 0 :(得分:2)
我个人认为?notify=
完全可以接受。您不会让蜘蛛抓取该页面,因为它只是一个确认通知,您不必担心要编入索引的页面。当你离开SEO领域时不要害怕查询字符串 - 只要看看Amazon.com:)
最终,它归结为代码的可重用性和实现的努力。
答案 1 :(得分:2)
会话很好。你之后立即删除的cookie会更干净。由于会话ID通常是比此更大的cookie,并且在您的服务器上存储。
setcookie('notify',1,time()+60); // Expire in one minute. Redirect should be faster.
然后在您的页面上,他们将被重定向到:
if(isset($_COOKIE['notify']) && $_COOKIE['notify'] == 1){
// Notification output
setcookie('notify', '', time()-1);
}
另一个选项是将用户重定向到/ page / notify并使用.htaccess和Rewrite Mod将其重写为/ page?notify。
类似的东西:
RewriteRule ^(.*)/notify/?$ $1?notify=1
答案 2 :(得分:1)
由于您有表单,也许您还有一个提交按钮。您可以检查表单是否像这样提交:
<?php
if(isset($_POST['go'])) {
// The form has been submitted.
echo("Saved!");
}
?>
<form method = 'post' action = ''>
<input type = 'submit' id = 'go' name = 'go' value = 'Submit'/>
</form>
修改强>
因为那不起作用..我通常将一个会话变量保存为一个数组(我称之为'错误',但我只是将其用于一般输出)。它是一个数组,因为它可以容纳多个消息,然后在每个页面显示我转储该数组中的任何内容,我想要显示这些消息。这对我来说在多个项目中都有用,在我看来,这是一种存储要发送给用户的消息的好方法
session_start();
$_SESSION['errors'] = array();
...
array_push($_SESSION['errors'], "<span style = 'color:green;'>Success!</span>");
header("Location: somepage.php");
然后显示......
if(isset($_SESSION['errors']) && count($_SESSION['errors']) > 0) {
foreach($_SESSION['errors'] as $k => $v)
echo($v . "<br/>");
unset($_SESSION['errors']);
}
答案 3 :(得分:0)
您可以在表单中添加隐藏字段,如下所示:
<input type="hidden" name="action" value="submit" />
然后当重新加载页面时,您可以这样做:
if($_POST['action'] == "submit"){
// show that data was saved
}
我的意思是理想情况下,您需要确保数据实际已保存,但我没有深入了解您的实施。
答案 4 :(得分:0)
first_page.php
$_SESSION['notify'] = 9;
second_page.php
if($_SESSION['notify'] > 0){
notify(9);
$_SESSION['notify'] = 0;
}