1

通常,网站有一个菜单栏,其中包含指向网站不同页面的链接——主页、页面 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 如果用户一开始就降落在那里?我要避免的是用户来到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');
}
?>

基本上,我的想法是在用户访问该站点时设置一个变量,以便将引用者变量设置为该引用站点。但是,如果用户点击网站本身的链接,我不希望引用者重置。我希望它保持用户第一次访问该站点时的状态,因此如果用户单击“主页”链接,它将始终将用户引至相应的页面。显然,我上面的代码不起作用。

4

2 回答 2

2

您快到了!-- 只需将 $referrer 保存在 $_SESSION 变量中。然后您可以检查是否在后续页面请求中设置了 $_SESSION['referrer'] 并采取相应措施。

于 2009-12-11T16:17:23.717 回答
1

为什么不将引用者存储在会话变量中?在您的目标网页中,您可以拥有以下内容:

<?php
session_start();
if(empty($_SESSION['comeFrom']) && !empty($_SERVER['HTTP_REFERER'])){
    $_SESSION['comeFrom'] = $_SERVER['HTTP_REFERER'];
}
?>

然后,在您的主页中:

<?php
session_start(); 
if(!empty($_SESSION['comeFrom']) &&
   preg_match("/referrerSite.com/",$_SESSION['comeFrom'])){
   header('Location: http://www.example.com/camefromad.html');
}
?>
于 2009-12-11T16:21:39.963 回答