重定向后在页面上显示通知

时间:2011-07-19 20:25:28

标签: php

我的页面上有一个表单。

如果提交了表单,我会再次重定向到该页面。

在页面上,我想显示保存数据的通知。

我正在寻找一种干净的方式来了解我必须显示通知。

首先我想到在网址上添加一些东西:

/page?notify=1

但我不想更改网址。

然后我考虑在重定向之前设置一个会话。

在页面上,我检查会话是否已设置,如果是,则显示通知并取消设置。

这是否是一种可接受的方式,或者是否有更好/更清洁的方式?

5 个答案:

答案 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;
}