2011-08-08 138 views
1

背景:我有一个网站,我们称之为AwesomeSite.com;它处理我所有的流量。此外,出于营销目的,我有第二个域名,我们称之为PromoForAwesomeSite.com;它将所有流量直接重定向到AwesomeSite。这两个网站都是使用PHP,MySQL和Apache构建的。创建会话

问题:我想根据用户到我的网站的方式向用户提供不同的内容。具体而言,如果用户从PromoForAwesomeSite重定向,我想显示广告。

问题:如何检测用户是否来自PromoForAwesomeSite,从而为他们创建不同的会话状态?

附:我深知这种做法的缺点,因为一旦会话cookie被删除宣传片用户无法看到的促销内容,除非他们再次访问重定向网站(不太可能)。不幸的是,这不能被帮助。

+1

为什么$ _ SERVER ['HTTP_REFERER']并不适用于你的目标是什么? – heximal

+0

为什么不将变量传递给重定向的URL?例如。在PromoForAwesomeSite.com'header('Location:http://www.awesomesite.com/index.php?promo=1');'。然后在AwesomeSite.com上检查'if($ _ GET ['promo']){/ * show promos * /}'? – Shef

回答

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.在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'); 

c。在index.php

if($_COOKIE['Promo']){ 
    // show promotion 
} 

这样你将解决与会议的问题。