对于传递给不同页面的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
网址将如下所示:
<a href="<?php echo $url; ?>">anchor text</a><br>
当然,如果我进入SESSION变量路由,用户输入值将从URL点击获得并存储在SESSION变量中,直到会话结束。
if (isset($_GET["store"])) {
$_SESSION["shopByStore"] = $_GET["store"];
}
答案 0 :(得分:1)
当然,可以在会话变量中保存例如提交的搜索关键字。
但它有用吗?没有。
当会话被破坏时,会话变量将忘记所有内容。也许用户想要保存搜索或将其提供给其他用户?
使用GET参数没有问题,只需复制完整的URL并保护它。
但是SESSION
个参数?不可能。每个用户都拥有自己的会话,下次用户访问该网站时,他将获得另一个会话(例如,如果用户之前关闭了浏览器)。
在会话中,您应该只存储用户特定信息。例如userid,username或basket items。
这只是SESSION
vs GET
的一些要点。