【问题标题】:HTTP_REFERER to location Iframe?HTTP_REFERER 到位置 iframe?
【发布时间】:2014-08-01 10:34:21
【问题描述】:

首先,我的php知识为零。 但是我设法找到了一个脚本来检查访问者是否来自某个站点,然后将访问者重定向到另一个站点:

<?php 

$referer = $_SERVER['HTTP_REFERER']; 

if ($referer =   'http://www.facebook.com/') 
{ 
header('Location: http://www.test.com/facebook'); 
} 

else 
{ 
header('Location: http://www.test.com/failed'); 
} 

?>

但我想知道是否可以在页面本身上使用此脚本。因此,如果用户来自即 Facebook,他会被定向到具有同一页面内容的 iframe?比如“位置:iframe”。否则他不能在页面上,会被重定向。

有点像看门人;)

提前谢谢大家!

/a

【问题讨论】:

  • 请理解 HTTP_REFERER 绝不是“安全的”。这些数据很容易被欺骗,因为它只是在请求的标头中发送。 (或不..)。一些浏览器插件也会删除引用数据。

标签: php iframe http-referer


【解决方案1】:

只需将重定向放在页面顶部:这显示“如果访问者不是来自 Facebook,则重定向他们。如果他们这样做,则显示页面的其余部分

<?php 

$referer = $_SERVER['HTTP_REFERER']; 

if (strpos($referer, 'www.facebook.com') === FALSE)
{ 
    header('Location: http://www.test.com/failed'); 
    exit();
} 


?>

<!DOCTYPE html>
<html lang="en">
<head>
    <!-- etc etc -->

请注意,referer 标头可能是伪造的,并且根本不保证会发送,具体取决于用户浏览器的配置方式

【讨论】:

  • 感谢您的回复!这正是我想做的!虽然无法让它工作:(我应该把我的 HTML 内容放在它说 //rest of page here 的地方吗?在 标签内?因为在 Dreamweaver 中它说语法错误。
  • 不应该是某个地方的“其他”吗?只是猜测?
  • @user3607481 else不需要,如果页面是html则不需要,把它放在结束?&gt;标签之后,看我的编辑
  • @user3607481 如果您想知道,这里不需要 else ,因为如果条件为真,用户将被重定向,因此脚本的其余部分不会显示。不过,根据编辑,使用exit(); 显式终止脚本可能是一种好习惯。
  • 即使用户来自 facebook,仍然会将用户发送到失败页面 :( 我在这里做错了什么?
【解决方案2】:

使用 $_SESSION 检查他是否已通过身份验证访问该站点

【讨论】:

    猜你喜欢
    • 2011-11-07
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多