上一篇文章 《WordPress 小技巧:评论链接转为内链转跳的方法》 中介绍了如何使评论中的外链以站内链接的形式转跳。但是小编想了下,如果所有外链都可以通过 abc.vom/wxd_to.php?v7v3=123.com 这种形式来转跳的话,可能会别有用心的人利用。拿个例子来说吧,假如 A 有个色情网站网址为 baidu.com,在 QQ 中直接发链接会显示安全警报,而 B 的网站网址是 qq.com 开启了评论外链转跳,由于 B 的网站是安全网站,所以在 qq 聊天中发 qq.com 就属于安全网站。 A 发现了这点就可以利用你的网站来做转跳从而达到网址不被 QQ 云安全拦截的效果。而时间久了,你的网站也会被误判为色情网站。那么怎么来避免这点呢?
方法如下:用以下代码将上篇文章中 wxd_to.php 的代码覆盖掉
<?php error_reporting(0); $url = $_SERVER["HTTP_REFERER"]; $str = str_replace("http://","",$url); $strdomain = explode("/",$str); $domain = $strdomain[0]; //判断来路域是否含有 weixiaoduo.com, 请勿包含 http://否则会造成判断失效 if($domain == "weixiaoduo.com") { //含有 weixiaoduo.com 5 秒后跳转到当前页面 url 后面参数网址 header("refresh:5;url=$_GET[url]"); //输出文字说明, echo "<head> <meta http-equiv='Content-Type' content='text/html; charset=utf-8'></head> </br></br></br><p align=center><font size=5 color=red><b> 通知:此跳转链接来源合法,5 秒后自动跳转!</b></font></p>"; } else //非来源与 http://www.weixiaoduo.com 的链接处理方法 { echo "<head> <meta http-equiv='Content-Type' content='text/html; charset=utf-8'></head> </br></br></br><p align=center><font size=5 color=red><b> 警告:此跳转链接来源请求非法,5 秒后自动跳回到首页!</b></font></p>"; header("refresh:5;url=https://www.weixiaoduo.com/"); } ?>
另外 echo 输出和 PHP 页面大家可以自己美化,我个人能力有限。演示效果可以参考腾讯的搜搜问问。
之前的代码转跳的确存在问题,这次多亏 @正版软件分享 的提醒已修正。代码更新于 2013 年 12 月 20 日。