【发布时间】:2009-12-11 16:11:24
【问题描述】:
通常,网站有一个菜单栏,其中包含指向该网站不同页面的链接——主页、页面 A、页面 B 等。
假设您有一个地址为 http://www.example.com 的网站。 99% 当有人在他们的浏览器中键入该 URL 时,他们会被定向到由“主页”表示的页面。它通常具有 index[.html|.php] 的可选扩展名(例如,http://www.example.com/index.html)。但是,在某些用例中,根据用户要从哪里访问您的网站,您希望将他们重定向到不同的页面。例如,如果您的网站上有广告宣传您的网页,您可能希望将它们重定向到:http://www.example.com/camefromad.html,这看起来与您的正常“主页”页面几乎相同,但也许并添加了一点文字,说明它们来自广告所在的页面。
我的问题是:
有没有办法,在用户从被推荐的页面登陆网站后,使用 PHP 来确保点击“主页”链接将始终转到 http://www.example.com/camefromad.html IF 用户从那里登陆?我要避免的是用户来到 http://www.example.com/camefromad.html 然后单击菜单栏中的“主页”并最终进入默认主页永远无法返回http://www.example.com/camefromad.html 页面(我没有在公共菜单中启用该登录页面,因为我不希望普通用户能够去那里)。
这是我第一次使用 PHP,我正在尝试使用会话状态等将它拼凑起来,但我还没有完全完成这个难题。这是我在 index.php 中的内容(这是代表“主页”链接的文件:
<?
session_start();
$_SESSION['amSet']= 0;
?>
<?
if ($_SESSION['amSet'] == 0) {
if (!empty($_SERVER['HTTP_REFERER'])) {
$referrer = $_SERVER['HTTP_REFERER'];
$_SESSION['amSet'] = 1;
}
}
if (preg_match("/other.example.net/",$referrer)) {
header('Location: http://example.com/camefromad.html');
}
?>
基本上,我的想法是在用户访问该站点时设置一个变量,以便将引用者变量设置为该引用站点。但是,如果用户点击网站本身的链接,我不希望引用者重置。我希望它保持用户第一次访问该站点时的状态,因此如果用户单击“主页”链接,它将始终将用户引至适当的页面。显然,我上面的代码不起作用。
【问题讨论】:
-
一般来说,您使用引荐来源网址的方法是正确的,但您应该记住,这可能并非每次都有效,因为某些用户可能已禁用发送引荐来源网址(或发送虚假引荐来源网址)。
标签: php session state referrer