通常,网站有一个菜单栏,其中包含指向网站不同页面的链接 - 主页,页面A,页面B等。
假设您的网站地址为 http://www.example.com 。 99%当有人在浏览器中输入该URL时,会将其定向到“主页”所代表的页面。它通常具有索引[.html | .php]的可选扩展名(例如, http://www.example.com/index.html )。但是,根据用户要访问您网站的位置,您可能希望将其重定向到其他页面。例如,如果您在推广自己网页的网站上有广告,则可能需要将其重定向到: http://www.example.com/camefromad.html ,这看起来与普通的“首页”网页非常相似,但也许添加了一些文字,指明它们来自广告所在的页面。
我的问题是:
在用户从推介页面登陆网站后,有没有办法使用PHP确保点击“主页”链接始终转到 http://www.example.com/camefromad.html < em> 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');
}
?>
基本上,我的想法是在用户访问网站时设置变量,以便将referrer变量设置为该引用网站。但是,如果用户点击网站本身的链接,我不希望重置引荐来源。我希望它保持用户第一次访问网站时的状态,因此如果用户点击“主页”链接,它将始终将用户引荐到相应的页面。显然,我上面的代码不起作用。
答案 0 :(得分:2)
你快到了! - 只需将$ referrer保存在$ _SESSION变量中。然后,您可以检查后续页面请求是否设置了$ _SESSION ['referrer']并采取相应措施。
答案 1 :(得分:1)
为什么不将referer存储在会话变量中? 在您的目标网页中,您可以拥有:
<?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');
}
?>