修复ZIBLL子比主题GO.PHP带参跳转“&”符出现的BUG问题

我需要带参数跳转我的页面,奈何发现参数传递异常,经过我仔细查看,是网址中“&”符被转义为了“&”,这能传递才怪呢。

比如我们跳转一个网址:https://www.ssdtop.com/gobug.php?a=a&b=b 复制到你们网站试试,本来应该显示ok,但是显示no,你可以复制我链接试试。于是我下手修复ZIBLL主题写的BUG。

我的gobug.php的代码如下:

修改BUG

尝试着自己修复一下,于是我百度“php url 转义字符”。然后知识兔找到了“htmlspecialchars_decode()”函数,其作用就是“把一些预定义的 HTML 实体转换为字符”,简称“反转义”吧。

找到跳转PHP文件“/wp-content/themes/zibll/go.php”,将最后输出的网址再反转义一下吧,把他转成实体吧,不管了。

于是在35行和40行加上了“htmlspecialchars_decode”处理。

修复ZIBLL子比主题GO.PHP带参跳转“&”符出现的BUG问题

最终代码

不会改的直接全片复制吧,我代码在下面:

子比主题* @Description : 一款极其优雅的Wordpress主题* @Read me : 感谢您使用子比主题,主题源码有详细的注释,知识兔支持二次开发。* @Remind : 使用盗版主题会存在各种未知风险。知识兔支持正版,知识兔从我做起!*/if (strlen($_SERVER['REQUEST_URI']) > 384 ||strpos($_SERVER['REQUEST_URI'], "eval(") ||strpos($_SERVER['REQUEST_URI'], "base64")) {@header("HTTP/1.1 414 Request-URI Too Long");@header("Status: 414 Request-URI Too Long");@header("Connection: Close");@exit;}//通过QUERY_STRING取得完整的传入数据,然后知识兔取得url=之后的所有值,兼容性更好@session_start();$t_url = !empty($_SESSION['GOLINK']) ? $_SESSION['GOLINK'] : preg_replace('/^url=(.*)$/i', '$1', $_SERVER["QUERY_STRING"]);//数据处理if (!empty($t_url)) {//判断取值是否加密if ($t_url == base64_encode(base64_decode($t_url))) {$t_url = base64_decode($t_url);}//防止xss$t_url = htmlspecialchars_decode(htmlspecialchars($t_url));//对取值进行网址校验和判断preg_match('/^(http|https|thunder|qqdl|ed2k|Flashget|qbrowser):\/\//i', $t_url, $matches);if ($matches) {$url = htmlspecialchars_decode($t_url);$title = '页面加载中,请稍候...';} else {preg_match('/\./i', $t_url, $matche);if ($matche) {$url = 'http://' . $t_url;$title = '页面加载中,请稍候...';} else {$url = 'http://' . $_SERVER['HTTP_HOST'];$title = '参数错误,正在返回首页...';}}} else {$title = '参数缺失,正在返回首页...';$url = 'http://' . $_SERVER['HTTP_HOST'];}$url = str_replace('&', '&', $url);?><?php echo $title; ?>页面加载中,请稍候...

如果知识兔你的链接都不含有“&”符,或者没发现网址跳转有问题,那可以不用修改。

下载仅供下载体验和测试学习,不得商用和正当使用。

下载体验

请输入密码查看下载!

如何免费获取密码?

点击下载

评论