0

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

目前我有

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

在包含在每个页面上的全局文件中,问题在于一旦用户不在URL 中设置的页面上,该值$tid将被删除并且不会存储在session我想要的位置。$tid

4

3 回答 3

3

如果您在 url 中获得 $_GET['tid'] ,则通过该新值再次设置会话,否则从会话中恢复它。就是这样。

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

试试这个,告诉我它解决了吗?

于 2012-07-30T03:52:11.843 回答
1

使用isset()之类的函数来查看它是否正在发送。只有这样你才应该更换它:

if(isset($_GET['tid']))
{
    $tid = clean_get($_GET['tid'])
    // Do stuff to change session data.
}
于 2012-07-30T03:51:31.193 回答
0

我认为您正在寻找的是类似的东西

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

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

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

注意:只调用session_start()一次,并确保在对 执行任何操作之前这样做$_SESSION,否则会收到错误消息。

于 2012-07-30T03:55:08.957 回答