代码之家  ›  专栏  ›  技术社区  ›  Greg

如何将HTTP引用传递给PHP脚本

  •  0
  • Greg  · 技术社区  · 15 年前

    这看起来应该很简单。任何指点都将不胜感激。

    • widgetserver.com,为客户端站点提供小部件
    • clientsite.com,其中显示小部件

    在clientsite.com的页面中,有一段代码调用widgetserver.com上的PHP函数。看起来是这样的:

    <script type="text/javascript" src="http://widgetserver.com/show_widget.php></script>

    加载clientsite.com时,它会运行“show_widget.php”,然后将小部件放置在页面上。

    这就是我被卡住的地方:我想从“show_widget.php”内部访问将用户推荐到clientsite.com的站点,但是在这个函数中,我们在widgetserver.com上,所以推荐者是clientsite.com,而不是previoussite.com。

    有没有办法让clientsite.com的推荐人转到“show_widget.php”?

    3 回复  |  直到 15 年前
        1
  •  4
  •   XwipeoutX    15 年前

    document.referer包含您想要的referer信息,因此如果他们正在运行javascript,您可以执行以下操作:

    <script language="javascript" type="text/javascript">
    var script = document.createElement("script");
    script.src = "http://widgetserver.com/show_widget.php?r="+document.referrer;
    document.getElementsByTagName("head")[0].appendChild(script);
    </script>
    

    这需要超出head标记的范围(除非它位于绑定到documentready事件或其他东西的函数中),否则它将失败。

    这背后的想法是在页面上生成一个具有所需属性的动态标记。第一行创建它,第二行设置脚本src,第三页将其加载到document.head DOM元素中,这将导致对其进行计算,并根据需要加载文档。

    如果您的客户机正在使用jQuery,那么使用$.getScript和类似的document.referer会更容易

        2
  •  1
  •   Pascal MARTIN    15 年前

    show_widget.php 脚本:clientsite必须将该信息传输到您的脚本。

    (前提是clientsite上的页面是用PHP生成的) :

    <script 
        type="text/javascript" 
        src="http://widgetserver.com/show_widget.php?referer=<?php echo urlencode($_SERVER['HTTP_REFERER']); ?>>
    </script>
    

    • referer可能并不总是存在:它由用户的浏览器发送,可以是伪造的和/或禁用的。

    为了避免在用户的浏览器没有发送REFERER时生成/显示“Notice:Undefined index:HTTP_REFERER”,您可能还需要添加一个检查,以在使用它之前确定它是否已定义--use isset 为此,;例如,类似这样的操作可能会:

    <script 
        type="text/javascript" 
        src="http://widgetserver.com/show_widget.php?referer=<?php echo isset($_SERVER['HTTP_REFERER']) ? urlencode($_SERVER['HTTP_REFERER']) : ''; ?>>
    </script>
    
        3
  •  1
  •   Anax    15 年前

    您可以在clientside.com的主脚本上检测引用的,并将其作为变量传递给您的脚本:

    // clientsite.com script
    <?PHP
    
        echo $main_page;
        $ref = $_SERVER['HTTP_REFERER'];
        echo '<script type="text/javascript" ' .
          'src="http://widgetserver.com/show_widget.php?r=' . $ref . '></script>';
    
    ?>
    
    // widgetserver.com script
    <?PHP
        $original_referrer = $_REQUEST['r'];
    ?>
    
    推荐文章