背景:我有一个网站,我们称之为AwesomeSite.com;它处理我的所有流量。此外,为了营销的目的,我有第二个域名,我们称之为PromoForAwesomeSite.com;它将所有流量直接重定向到AwesomeSite。这两个站点都是使用PHP,MySQL和Apache构建的。
问题:我想根据用户访问我的网站的方式向用户提供不同的内容。具体来说,如果用户从PromoForAwesomeSite重定向,我想展示促销。
问题:如何检测用户是否来自PromoForAwesomeSite,从而为他们创建不同的会话状态?
P.S。我很清楚这种方法的缺点,因为一旦会话cookie被删除,促销用户就无法看到促销内容,除非他们重新访问重定向网站(不太可能)。不幸的是,这无济于事。
答案 0 :(得分:3)
您可以使用$_SERVER['HTTP_REFERER']
并查看引荐来源字符串中是否包含PromoForAwesomeSite.com
。比如像这样:
session_start();
if(substr_count($_SERVER['HTTP_REFERER'] , 'PromoForAwesomeSite.com')){
$_SESSION['from_promo'] = 1;
}
由于浏览器可以阻止引用者,因此您可能会考虑从促销网站的重定向字符串中发送GET参数的可能性。不知道你是如何从促销网站重定向,但如果你的PHP可以做这样的事情,如果没有你会明白我的意思:))
HEADER('Location: http://AwesomeSite.com/index.php?from=promo');
因此,您可以检查此字符串并保存在会话中,而不是(或另外)检查引荐来源。
答案 1 :(得分:1)
在您的情况下,如果您在登陆时进行自动重定向,则不会继续推荐人。因此,如果我是你,我会像这样处理它:
<强> 1。在 PromoForAwesomeSite.com
header('Location: http://www.awesomesite.com/promo.php');
<强> 2。在 AwesomeSite.com
一个。创建promo.php
网关页面
湾在网关页面
setcookie('Promo', '1', time()+(5 * (24 * 3600))); // five days promotion cookie - adjust it
header('Location: http://www.awesomesite.com/index.php');
℃。在index.php
if($_COOKIE['Promo']){
// show promotion
}
通过这种方式,您也可以解决会话问题。