在会话中保存常量GET变量

时间:2012-07-30 03:45:19

标签: php mysql

有些人可以向我解释在会话中存储$_GET变量的最佳方法,sessions更改的唯一方法是在我们验证会话正在更改的数据时与GET变量。

目前我有

 $tid = clean_get($_GET['tid']);

在每个页面上包含的全局文件中,问题是$tid的值将被删除,并且不会存储在session中,就像我想要的一样,一旦用户不在在网址中设置了$tid的网页。

3 个答案:

答案 0 :(得分:3)

如果你在url中获得$ _GET ['tid'],那么再次使用该新值设置会话,否则从会话中恢复它。而已。

session_start();
$tid = (isset($_GET['tid']) && $_GET['tid']!="") ? clean_get($_GET['tid']) : $_SESSION['tid'];

试试这个并告诉我它已经解决了吗?

答案 1 :(得分:1)

使用isset()之类的功能查看是否正在发送。只有这样才能取代它:

if(isset($_GET['tid']))
{
    $tid = clean_get($_GET['tid'])
    // Do stuff to change session data.
}

答案 2 :(得分:0)

我认为你要找的是像

session_start();
foreach ($_GET as $key=>$value) {
    $_SESSION['getValues'][$key] = clean_get($value);
}

这会将$ _GET中的所有值存储在$ _SESSION中。要稍后检索这些值,您只需在调用$_SESSION['getValues']['tid']后使用session_start()

这里我假设clean_get()只是格式化和/或转义来自表单的数据的东西,因此在坚持进入会话之前在每个值上调用它将在需要时进行所有清理。 / p>

注意:只需拨打session_start()一次,并确保在执行$_SESSION之前执行此操作,否则您将收到错误消息。