使用php和HTTP_REFERER创建加载js的条件

使用php和HTTP_REFERER创建加载js的条件,php,splash-screen,http-referer,Php,Splash Screen,Http Referer,我试图在我正在工作的网站上创建一个启动页面效果(我知道启动页面很糟糕,但我有我的理由),基本上我想调用运行启动图像覆盖的脚本,只有当访问者从外部网站访问索引时才使用。这样,如果访问者从内部页面单击“主页”,则不会启动splash。我一直在搜索,似乎我可以使用$_SERVER['HTTP_REFERER']使用php实现这一点,但我对php是全新的,在玩了一下午之后,似乎无法让它工作 下面的代码加载脚本,但它似乎并不关心引用的URL是否包含“mysite”,页面顶部会显示一条错误消息: “遇到PH

我试图在我正在工作的网站上创建一个启动页面效果(我知道启动页面很糟糕,但我有我的理由),基本上我想调用运行启动图像覆盖的脚本,只有当访问者从外部网站访问索引时才使用。这样,如果访问者从内部页面单击“主页”,则不会启动splash。我一直在搜索,似乎我可以使用$_SERVER['HTTP_REFERER']使用php实现这一点,但我对php是全新的,在玩了一下午之后,似乎无法让它工作

下面的代码加载脚本,但它似乎并不关心引用的URL是否包含“mysite”,页面顶部会显示一条错误消息:
“遇到PHP错误
严重性:注意
消息:未定义索引:HTTP\u REFERER
文件名:…“



任何帮助都将不胜感激。谢谢

通知告诉您未设置HTTP\U引用程序

“HTTP_REFERER” 将用户代理引用到的页面(如果有)的地址 当前页面。这是由用户设置的 代理人并非所有的用户代理都将设置 这,还有一些提供了 将HTTP_REFERER修改为一项功能。在里面 简言之,它真的不可信

快速搜索导致了这一点,它提供了更多的细节:

更新:

您可以尝试使用会话变量。该变量可以是一个简单的布尔值,如果启动页面已显示,则将其设置为true,否则设置为false。这将需要在每个页面上进行一些会话处理,这些页面可能是网站的入口点和/或您希望显示splash的每个页面

当然,这只在本届会议期间可行

因此,您可以使用cookie,或者使用这种方法


就我个人而言,我可能会选择简单的cookie方法,因为这只是一个亮点。不需要为这么简单的事情增加会话开销。

通知告诉您没有设置HTTP\U引用程序

“HTTP_REFERER” 将用户代理引用到的页面(如果有)的地址 当前页面。这是由用户设置的 代理人并非所有的用户代理都将设置 这,还有一些提供了 将HTTP_REFERER修改为一项功能。在里面 简言之,它真的不可信

快速搜索导致了这一点,它提供了更多的细节:

更新:

您可以尝试使用会话变量。该变量可以是一个简单的布尔值,如果启动页面已显示,则将其设置为true,否则设置为false。这将需要在每个页面上进行一些会话处理,这些页面可能是网站的入口点和/或您希望显示splash的每个页面

当然,这只在本届会议期间可行

因此,您可以使用cookie,或者使用这种方法


就我个人而言,我可能会选择简单的cookie方法,因为这只是一个亮点。没有必要为这么简单的事情增加会话开销。

虽然您不能完全依赖设置$\u服务器['HTTP\u REFERER',],但我认为您会发现它对于启动页面来说足够可靠。如果未设置,则没有referer,该值将为空,因为它不在标题中

您应该首先测试是否为空($\u服务器['HTTP\u REFERER']),然后检查其中是否有您自己的域


另一方面,我在一台旧的IIS服务器上工作,该服务器更改了一些$\u服务器变量的名称,通常会把它们搞砸。我会做一个打印($\u服务器)来看看发生了什么。

虽然您不能完全依赖设置的$\u服务器['HTTP\u REFERER',],但我想您会发现它对于启动页面来说足够可靠。如果未设置,则没有referer,该值将为空,因为它不在标题中

您应该首先测试是否为空($\u服务器['HTTP\u REFERER']),然后检查其中是否有您自己的域


另一方面,我在一台旧的IIS服务器上工作,该服务器更改了一些$\u服务器变量的名称,通常会把它们搞砸。我会做一个打印($\u服务器)来看看发生了什么。

这就是我正在尝试的。我不确定通配符:

 <?php
 //echo $ref
 $ref = $_SERVER["HTTP_REFERER"];
 //if is NOT coming from inside linking
 if ( $ref != '*www.example*' )
 // send to index and exit
 {header("Location:http://www.example.com/index.php");
 Exit;
 //
 }
 ?>

这就是我正在尝试的。我不确定通配符:

 <?php
 //echo $ref
 $ref = $_SERVER["HTTP_REFERER"];
 //if is NOT coming from inside linking
 if ( $ref != '*www.example*' )
 // send to index and exit
 {header("Location:http://www.example.com/index.php");
 Exit;
 //
 }
 ?>

if(isset($_SERVER['HTTP_REFERER'])&&!empty($_SERVER['HTTP_REFERER'])) {
    $http_referer=$_SERVER['HTTP_REFERER'];
}