URL查询字符串参数与会话变量


URL query string parameters vs session variables

对于传递到不同页面的URL变量,哪种方法更可靠、更好、更安全:1) 。使用SESSION变量作为URL参数或

2) 。常规查询字符串参数。

在以下方面"更可靠、更好、更安全":1.防止来自客户端的问题,例如当用户禁用cookie时2.浏览器兼容性3.进行API调用(因为一些API存在限制和兼容性问题)4.资源和内存的使用,以及的处理速度

我正在创建一个网站,根据用户输入,URL中的查询字符串参数数量可能会有所不同(URL中可能包含9个值)。在会话变量中存储变量值似乎比在URL参数中携带所有变量值(可能是9)更容易。但由于上面提到的4个问题,我对使用SESSION变量犹豫不决。

谢谢你的建议!

PS。正在动态生成URL参数到$url变量中,如下所示:

$keyword = trim($_GET["Keyword"]);
$url = "webpage.php?";
$url .= "&Keyword=$keyword";
$shopByStore = $_GET["store"];
if (!empty($shopByStore)) {
$url .= "&store=$shopByStore";
}
// with 7 more GET methods potentially retrieving values for the URL parameters 

URL将如下所示:

<a href="<?php echo $url; ?>">anchor text</a><br>

当然,如果我走SESSION变量路线,用户输入值将从URL点击中获得,并存储在SESSION中,直到会话结束。

if (isset($_GET["store"])) {
$_SESSION["shopByStore"] = $_GET["store"];
}  

当然,例如,可以将提交的关键字保存到会话变量中进行搜索。

但它有用吗?编号

当会话get被破坏时,会话变量将忘记所有内容。也许用户想保存搜索或将其交给另一个用户?

有了GET参数,这不是问题,只需复制完整的URL并确保其安全。

但使用SESSION参数?不可能。每个用户都有自己的会话,下次用户访问网站时,他将获得另一个会话(例如,如果用户之前关闭了浏览器)。

在会话中,您应该只存储特定于用户的信息。例如用户ID、用户名或购物篮项目。

这只是SESSIONGET的一些点。