我们有一个使用动态品牌的PHP应用,所以如果我们插入查询字符串
?dealer=the_dealer_name
或&dealer=the_dealer_name
,我们能够在我们的主平台上动态加载经销商的徽标和样式表,而无需登录经销商的帐户(我们将应用程序销售给成千上万的经销商)。这工作得很好,但应用程序有几个页面,如果我们正在演示应用程序,我们不希望每次打开一个新页面时都添加查询字符串。
所以我们的想法是设置cookie或会话时,$_GET['dealer']
是设置的,而不是空的,并使查询字符串在整个应用程序中持久,所以我们不需要在演示期间为每个页面添加它。我们将为该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()
重定向可能不起作用,因为我必须将逻辑放在我的头文件中。任何加载的页面都需要重定向到自己,但要加上一个附加的查询字符串,这将在重定向的基础上创建重定向。
你可以很容易地把它添加到会话中,把它放在你的页面顶部:
session_start();
if (isset($_GET['dealer'])) $_SESSION['dealer'] = $_GET['dealer'];
//then get the $_SESSION['dealer'] on all pages
这将启动会话,并存储经销商变量(如果它在查询字符串中),并且它将对所有后续页面加载可用。根据您对字符串的处理,您可能想要转义它或使用白名单。
如果您想删除会话(并带走品牌),您可以运行session_destroy();
另一种方法是在使用apache
的前提下设置.htaccess
在请求页面时附加特定的查询字符串
RewriteRule ^([^?]*)$ ?dealer=the_dealer_name [L,QSA,NC]
不使用时,注释
# RewriteRule ^([^?]*)$ ?dealer=the_dealer_name [L,QSA,NC]