在会话中保存常量GET变量


Save Constant GET Variable In A Session

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

目前我有

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

在包括在每个页面上的全局文件中,问题是一旦用户不在url中设置了$tid的页面上,$tid的值将被擦除,并且不会像我希望的那样存储在session中。

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

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

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

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

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

我想你要找的是类似的东西

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

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

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

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