【发布时间】:2015-09-10 12:49:15
【问题描述】:
我们有一个使用动态品牌的 PHP 应用程序,所以如果我们插入查询字符串
?dealer=the_dealer_name 或&dealer=the_dealer_name,我们能够在我们的主平台上动态加载该经销商的徽标和样式表,而无需登录经销商的帐户(我们将应用程序出售给成千上万的经销商)。这很好用,但应用程序有几个页面,如果我们正在演示应用程序,我们不想在每次打开新页面时添加查询字符串。
因此,我们的想法是在设置 $_GET['dealer'] 且不为空时设置 cookie 或会话,并使查询字符串在整个应用程序中保持不变,因此我们无需在运行期间为每个页面都添加它演示。我们将为该 cookie/会话设置一小时的到期时间。如果我们将空字符串传递给“经销商”查询,例如?dealer=,我们还将添加取消设置它们的功能。
我想知道是否有任何方法可以在首次设置后将?dealer=the_dealer_name / &dealer=the_dealer_name 查询字符串添加到 url 并使其作为 URL 的最后一个查询字符串持续存在,直到cookie/会话过期。
总而言之,一旦我们将查询字符串 ?dealer=the_dealer_name 或 &dealer=the_dealer_name 传递给 URL,站点上的所有 URL 路径都会附加该查询字符串,除非我们传递一个空字符串作为参数并取消设置 cookie/会话,或 cookie/会话过期。
谢谢!
附:通过 $_SERVER 全局变量获取 URL、添加查询字符串和使用 header() 重定向可能不起作用,因为我必须将逻辑放在头文件中。任何加载的页面都需要重定向到自身,但附加一个查询字符串,这将在重定向之上创建重定向。
【问题讨论】:
-
如果你设置了一个cookie,为什么不从cookie而不是从URL中读取呢?
-
是的,基本上是@JasonMcCreary 建议的。如果您将其存储在 cookie 或会话中,只需忽略 URL,并使用其中的值。像这样的东西(对于会话)
if(isset($_SESSION['dealer_name']) { $dealer = $_SESSION['dealer_name']; } else { $dealer = $_GET['dealer']; } -
@AlexSzabó 这就是我正在做的,但我如何使用
$dealer使经销商的信息持久化?将它放在所有页面上将是很多工作。我想知道还有另一种方法。
标签: php session url cookies query-string