PHP,会话状态,重定向;“家”;基于推荐人的链接

PHP,会话状态,重定向;“家”;基于推荐人的链接,php,session,state,referrer,Php,Session,State,Referrer,通常,网站有一个菜单栏,其中包含指向网站不同页面的链接-主页、a页、B页等 假设您有一个地址为的站点。99%当有人在浏览器中键入该URL时,他们会被定向到“主页”表示的页面。它通常有索引[.html |.php](例如,)的可选扩展名。然而,在一些用例中,根据用户访问您的网站的位置,您希望将他们重定向到不同的页面。例如,如果你在一个网站上有一则广告宣传你的页面,你可能想将它们重定向到:这看起来与你的普通“主页”几乎相同,但可能会添加一点文本,指定它们来自广告所在的页面 我的问题是: 有没有一种方

通常,网站有一个菜单栏,其中包含指向网站不同页面的链接-主页、a页、B页等

假设您有一个地址为的站点。99%当有人在浏览器中键入该URL时,他们会被定向到“主页”表示的页面。它通常有索引[.html |.php](例如,)的可选扩展名。然而,在一些用例中,根据用户访问您的网站的位置,您希望将他们重定向到不同的页面。例如,如果你在一个网站上有一则广告宣传你的页面,你可能想将它们重定向到:这看起来与你的普通“主页”几乎相同,但可能会添加一点文本,指定它们来自广告所在的页面

我的问题是:

有没有一种方法,在用户从一个被引用的页面登录到该站点之后,使用PHP来确保如果用户一开始就登录到该站点,那么单击“主页”链接将始终转到该站点?我试图避免的是,用户来到菜单栏,然后单击“主页”,最终进入默认主页,再也无法返回该页面(我不希望在公共菜单中启用该登录页,因为我不希望普通用户能够进入该页面)

这是我第一次使用PHP,我正在尝试使用会话状态等将其拼凑起来,但我还没有完全完成这个难题。以下是index.php中的内容(该文件表示“主页”链接:



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

你就快到了!--只需将$referer保存在$\u SESSION变量中。然后你就可以检查$\u SESSION['referer']在后续页面请求中设置,并相应地执行操作。

为什么不将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');
}
?>


一般来说,您对推荐人的处理方法是正确的,但您应该记住,这可能不是每次都有效,因为有些用户可能已禁用发送推荐人(或发送假推荐人)。谢谢Janek。我刚刚意识到我最初的问题是什么。我得到的是“无法修改标题信息”错误。这是因为我在第一个?>和第二个Arkh之间有空格。谢谢!在修复了我在上面的评论中提到的空格问题后,我应用了这段代码,这段代码看起来比我最初使用的路线要干净得多,而且似乎工作得很好。
<?php
session_start(); 
if(!empty($_SESSION['comeFrom']) &&
   preg_match("/referrerSite.com/",$_SESSION['comeFrom'])){
   header('Location: http://www.example.com/camefromad.html');
}
?>