【问题标题】:PHP - URL query string parameters vs session variablesPHP - URL 查询字符串参数与会话变量
【发布时间】:2014-05-25 14:50:23
【问题描述】:

对于传递到不同页面的 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"];
}  

【问题讨论】:

  • 你的问题没有多大意义......你在问什么?

标签: php session-variables querystringparameter


【解决方案1】:

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

但它有用吗?没有。

当会话被销毁时,会话变量会忘记一切。也许用户想要保存搜索或将它们提供给另一个用户?

使用 GET 参数没问题,只需复制完整的 URL 并保护它。

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

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

这只是SESSIONGET 的一些要点。

【讨论】:

    猜你喜欢
    • 2014-04-25
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多