师院派记忆你的回忆
分享一段PHP重定向网址代码
  • 首页 > 开发语言
  • 作者:zhyu20
  • 2017年3月2日 17:21 星期四
  • 浏览:425
  • 字号:
  • 评论:
  • 分享一段PHP重定向网址代码

    前不久整一个微博客,需要使用一个网址重定向功能,就是通过站内的go.php文件将某个站内链接,跳转到站外地址上,这和平时常用的网址转向、定时转向、网页加载后转向等有所不同,要转向的只是一个链接,而非实际页面。

    刚开始在网上搜索到了一段代码,主要用处是通过“ go.php?url= ”直接获取要转到的 URL 地址并显示出来,代码如下:

    go.php文件源码:

    <?php
    $url=$_GET["url"];
    echo "访问地址是:<a href='$url'>$url</a>";
    ?>


    对该代码略作修改即可实现获取要转到的 URL 地址并转向功能,修改后的go.php文件源码为:

    <?php
    $url=$_GET["url"];
    header("Location: $url");
    exit;
    ?>


    经过测试,使用该方法可以成功将“ http://www.xxx.com/go.php?url=http://hi.baidu.com/ofree ”的链接地址转向到本站,但问题也随之出现了,就是这段PHP重定向的代码是开放式,而开放重定向网址很容易被别人滥用,发送一些垃圾信息,导致搜索引擎的屏蔽。

    因此,需要对这段代码重定向的网址范围进行简单的限定。重新修改了go.php文件的源码,增加了单一的网址限定功能:

    <?php
    $url=$_GET["url"];
    if(strpos($url,"baidu.com")>0) header("Location: $url");
    exit;
    ?>


    经过上面的修改后,go.php文件就只能转向"baidu.com"域名下的网址了,这是一个单域名的限制,如果进行多个域名设置就更加完善,类似于“转向白名单”的功能,于是请教了单位的程序员,给出了以下go.php重定向源码:

    <?php
    $url=$_GET["url"];
    
    if($url){
    $okarr=array(0=>"qq.com",1=>"163.com");
    $urlarr=@parse_url($url);
    if (is_array($urlarr))
    {
      $dirurl="";
      if (isset($urlarr["host"])){
       $dirurl=$urlarr["host"];
      }
      else{
       $dirurl=$urlarr["path"];
      }
    }
    $urlarr=explode('.',$dirurl);
    $dirurlstr="";
    for($i=count($urlarr)-1;$i>=0;$i--){
      if($i==count($urlarr)-1){
       $dirurlstr=$urlarr[$i].$dirurlstr;
      }
      else{
       $dirurlstr=$urlarr[$i].'.'.$dirurlstr;
       break;
      }
    }
    if(stristr($url,'http://')===false) $url='http://'.$url;
    if(in_array($dirurlstr,$okarr)) header("Location: $url");
    }
    ?>


    该代码同前几段相比增加了两个功能,一是“转向白名单”,允许重定向多个域名下的网址,二是判断要转向的URL是否添加了http://,如果没有就自动补上。至此一段完整PHP重定向网址代码就出炉了,通过该代码可以实现“ http://www.xxx.com/go.php?url=限定域名下网址 ”的跳转功能。

    此外,利用 frame 和 js 还可以实现保留转向前地址的功能,代码如下:

    <body style="padding:0px; margin:0px;">
    <iframe id="test" src="" width="100%" frameborder="0" scrolling="auto"></iframe>
    <SCRIPT language="JavaScript" type="text/JavaScript">
    <!--
    var urlvalue;
    if(location.search!=="")
    {
    urlvalue=location.search;
    if(urlvalue.indexOf("http://")!==-1 && urlvalue!=="?")
    {
      urlvalue=urlvalue.substr(1);
    }
    else
    {
      urlvalue="http:\/\/www.xxx.com\/";
    }
    }
    if(urlvalue!==""){
    document.getElementById("test").src=urlvalue;
    document.getElementById("test").height="100%";
    }
    function killErrors() {return true;}window.onerror = killErrors;
    //-->
    </SCRIPT>
    </body>


    以上这些代码,仅供大家研究参考,能不用最好不要用,因为按照 Google 管理员工具中关于开放重定向网址的说明,搜索引擎会尽量避免将遭到滥用的网址编入索引。

      您阅读这篇文章共花了:  
    二维码加载中...
    本文作者:zhyu20      文章标题: 分享一段PHP重定向网址代码
    本文地址:http://blog.shiyuanpai.com/kaifayuyan/111.html
    版权声明:若无注明,本文皆为“师院博客”原创,转载请保留文章出处。
    • blogger
    返回顶部| 首页| 手气不错| 后花园

    Copyright © 2014-2016 师院博客   皖ICP备14013862号

    sitemap