WordPress子比主题外链跳转页go美化与安全增强版代码分享

AI 智能摘要
默认的go页面可能在视觉上不够吸引人,功能也相对基础。今天,主题铺分享一个经过精心修改和美化的WordPress子比主题go页面代码,它不仅保留了原有的安全逻辑,更加入了nonce随机数验证和全新的视觉样式,让您的外链跳转页面既美观又安全。

对于WordPress网站,尤其是使用WordPress子比主题的站点,外链跳转页面(go页面)是处理外部链接的重要环节。它不仅能提升用户体验,还能在一定程度上增强安全性,例如防范恶意链接。然而,默认的go页面可能在视觉上不够吸引人,功能也相对基础。今天,主题铺分享一个经过精心修改和美化的WordPress子比主题go页面代码,它不仅保留了原有的安全逻辑,更加入了nonce随机数验证和全新的视觉样式,让您的外链跳转页面既美观又安全。

代码如下:

<?php
/*
 * @Author        : Qinver
 * @Url           : zibll.com 
 * @Date          : 2020-09-29
 * @LastEditTime  : 2025-10-06
 * @Project       : Zibll子比主题 (样式增强版)
 * @Description   : WordPress外链跳转页(保留原安全逻辑 + 新视觉样式)
 */
//修改处,基本全修改了,主要是body和style
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;
}

@session_start();
$t_url = !empty($_SESSION['GOLINK']) ? $_SESSION['GOLINK'] : preg_replace('/^url=(.*)$/i', '$1', $_SERVER['QUERY_STRING']);

// 数据处理
if (!empty($t_url)) {
    // 判断是否为base64加密
    if ($t_url == base64_encode(base64_decode($t_url))) {
        $t_url = base64_decode($t_url);
    }

    // 防止xss
    // $t_url = htmlspecialchars($t_url, ENT_QUOTES, 'UTF-8');
    // $t_url = str_replace(array("'", '"'), array(''', '"'), $t_url);
    // $t_url = str_replace(array("\r", "\n", "\t", "\x0B", "\x0C", "\x0D"), '', $t_url);
    
    //防止xss
$t_url = htmlspecialchars($t_url, ENT_QUOTES, 'UTF-8');
$t_url = str_replace(array("'", '"'), array(''', '"'), $t_url);
$t_url = str_replace(array("\r", "\n"), array('
', '
'), $t_url);
$t_url = str_replace(array("\t"), array('  '), $t_url);
$t_url = str_replace(array("\x0B"), array(''), $t_url);
$t_url = str_replace(array("\x0C"), array(''), $t_url);
$t_url = str_replace(array("\x0D"), array('
'), $t_url);


    // 校验协议
    preg_match('/^(http|https|thunder|qqdl|ed2k|Flashget|qbrowser):\/\//i', $t_url, $matches);
    if ($matches) {
        $url   = $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   = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'];
}

// 防止外站盗链
if (function_exists('zib_get_url_top_host')) {
    $host    = zib_get_url_top_host($_SERVER['HTTP_HOST']);
    $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
    if (!empty($referer) && !preg_match('/' . preg_quote($host, '/') . '/i', $referer)) {
        $url   = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'];
        $title = '非法请求,正在返回首页...';
    }
}

// 验证nonce(防伪造)
if (function_exists('_pz') && _pz('go_link_nonce_s')) {
    $nonce = isset($_GET['nonce']) ? $_GET['nonce'] : '';
    if (empty($nonce) || !wp_verify_nonce($nonce, 'go_link_nonce')) {
        $url   = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'];
        $title = '非法请求,正在返回首页...';
    }
}

$url = str_replace(['&amp;', '&'], '&', $url);
?>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="robots" content="noindex, nofollow" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <?php if (function_exists('zib_head_favicon')) zib_head_favicon(); ?>
    <noscript><meta http-equiv="refresh" content="1;url='<?php echo $url; ?>';"></noscript>
    <title><?php echo $title; ?></title>
    <link rel="stylesheet" href="//cdn.staticfile.org/font-awesome/4.7.0/css/font-awesome.min.css">
    <style>
        body,html{padding:0;margin:0}
        body{background:#f5f6f7;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}
        a{cursor:pointer;text-decoration:none;word-wrap:break-word;word-break:break-all}
        .wiiuii-go-main{display:flex;width:100%;height:100vh;justify-content:center;align-items:center}
        .wiiuii-go-container{position:relative;max-width:28em;background:#fff;margin:10px;padding:1.5em;border-radius:8px;box-shadow:0 0 20px rgba(0,0,0,.08)}
        .wiiuii-go-content a{color:#036af4}
        .wiiuii-go-content a:hover{color:#e91e63}
        .wiiuii-go-logo{text-align:center;width:auto;height:65px;margin-bottom:10px}
        .wiiuii-go-logo img{max-width:100%;height:100%}
        .wiiuii-go-msg{text-align:center;padding:10px 5px;font-weight:700;color:rgba(255,0,0,0.85);background:rgba(255,0,0,0.1);border-radius:5px;margin-bottom:10px}
        .wiiuii-go-button-item{text-align:right;margin-top:10px}
        .wiiuii-go-button{display:inline-block;border-radius:99px;padding:10px 15px;background:rgba(116,116,116,.1);transition:all .3s;margin-left:5px}
        .wiiuii-go-button a{font-weight:700;font-size:14px;color:#333}
        .wiiuii-go-button:hover{background:rgba(116,116,116,.2)}
        .wiiuii-goid-item{position:absolute;top:10px;left:10px;border-radius:4px;overflow:hidden;background:#ffd07c;font-size:13px}
        .wiiuii-goid-title{padding:0 4px;background:#ffa400;color:#fff}
        .wiiuii-goid-text{padding:0 5px;color:#333}
        hr{border:0;height:1px;background:#eee;margin:15px 0}
    </style>
</head>

<body>
    <div class="wiiuii-go-main">
        <div class="wiiuii-go-container">
            <div class="wiiuii-goid-item">
                <b class="wiiuii-goid-title">GID</b>
                <span class="wiiuii-goid-text"><?php echo substr(md5($url), 0, 8); ?></span>
            </div>

            <div class="wiiuii-go-logo">
                <?php if (function_exists('zib_get_adaptive_theme_img')) echo zib_get_adaptive_theme_img(_pz('logo_src'), _pz('logo_src_dark')); ?>
            </div>

            <div class="wiiuii-go-content">
                <div class="wiiuii-go-msg">
                    <i class="fa fa-exclamation-triangle"></i>
                    您即将离开本站,请注意您的账号和财产安全。
                </div>
                <p>访问链接:<a onclick="location.replace('<?php echo $url; ?>')" title="<?php echo $url; ?>"><?php echo $url; ?></a></p>
            </div>

            <hr>

            <div class="wiiuii-go-button-item">
                <div class="wiiuii-go-button">
                    <a onclick="location.replace('//<?php echo $_SERVER['HTTP_HOST']; ?>')">返回首页</a>
                </div>
                <div class="wiiuii-go-button">
                    <a onclick="location.replace('<?php echo $url; ?>')">继续访问 <span style="font-weight:bold;color:red;" id="countdown"></span> 秒</a>
                </div>
            </div>
        </div>
    </div>

    <script>
        function link_jump() {
            location.href = "<?php echo $url; ?>";
        }

        // 倒计时跳转
        function startCountdown(duration, display) {
            var timer = duration;
            var countdown = setInterval(function () {
                display.textContent = timer;
                if (--timer < 0) {
                    clearInterval(countdown);
                    link_jump();
                }
            }, 1000);
        }

        window.onload = function () {
            var timeLeft = 5;
            var countdownDisplay = document.getElementById('countdown');
            startCountdown(timeLeft, countdownDisplay);
        };

        //延时15S关闭跳转页面,用于文件下载后不会关闭跳转页的问题
        setTimeout(function() {
            window.opener = null;
            window.close();
        }, 15000);
    </script>
</body>
</html>

效果如下:

图片[1]-WordPress子比主题外链跳转页go美化与安全增强版代码分享-主题铺

核心亮点与改进:

这个修改版go页面在原有基础上进行了多项优化:

  1. 全新的视觉样式: 页面设计更加现代化和美观,采用简洁的布局、柔和的背景和醒目的提示信息,提升用户体验。
  2. 加入Nonce随机数验证: 在原有防盗链、XSS防护的基础上,引入WordPress的Nonce(防伪造随机数)机制,有效防止恶意用户构造虚假跳转链接,进一步增强安全性。
  3. 显示唯一跳转ID (GID): 页面左上角显示一个基于目标URL的MD5哈希值截取的唯一ID,增加页面的专业感和可追溯性。
  4. 智能跳转倒计时: 页面中央显示倒计时,提示用户即将跳转,并在倒计时结束后自动跳转,用户也可以选择手动“继续访问”或“返回首页”。
  5. 防止XSS攻击: 对URL参数进行更严格的过滤和转义,有效防范跨站脚本攻击。
  6. 防止外站盗链: 继承并优化了原有的防外链机制,确保只有从本站发起的跳转请求才被允许。
  7. URL参数长度限制: 对请求URI的长度进行限制,防止过长的恶意请求。
  8. 优化文件下载场景: 针对文件下载等可能导致页面不自动关闭的情况,增加了15秒后自动关闭跳转页面的逻辑。
  9. 自适应主题Logo: 自动调用WordPress子比主题的自适应Logo,使跳转页与网站品牌保持一致。

功能详解:

  • 安全防护:
    • 请求URI长度限制: 避免恶意构造超长URL导致服务器问题。
    • XSS防护: 对URL参数进行严格的htmlspecialchars转义和特殊字符替换,防止恶意脚本注入。
    • 防外站盗链: 检查HTTP_REFERER,确保跳转请求来源于本站域名,防止其他网站直接调用您的go页面进行跳转。
    • Nonce验证: 通过wp_verify_nonce函数验证nonce参数,防止CSRF(跨站请求伪造)攻击和非法链接构造。
  • 用户体验:
    • 美观界面: 简洁的卡片式设计,柔和的背景色,清晰的提示信息。
    • 唯一ID (GID): 提供一个短小的唯一标识,增强用户信任感。
    • 倒计时跳转: 5秒倒计时,给用户缓冲时间,可手动点击“继续访问”或“返回首页”。
    • 错误提示: 对于参数错误、非法请求等情况,会显示明确的提示并自动返回首页。
    • 文件下载优化: setTimeout在15秒后尝试关闭窗口,解决某些下载场景下页面不自动关闭的问题。

安装方法:

这段代码将完全替换WordPress子比主题原有的go页面代码。

  1. 备份文件: 在修改任何主题文件之前,务必备份您的网站文件,特别是原有的go页面文件。
  2. 登录您的网站服务器:
    • 通过FTP客户端(如FileZilla)或宝塔面板等文件管理器登录您的服务器。
  3. 导航到WordPress子比主题的go.php文件:
    • WordPress子比主题的go页面文件通常位于主题根目录下的go.php(或类似名称)。请根据您的子比主题实际安装路径查找。
  4. 替换代码:
    • 打开找到的go.php文件。
    • 将文件中的所有原有代码删除,然后将上述提供的完整修改版代码复制并粘贴进去。
  5. 保存文件并刷新网站:
    • 保存您对go.php文件的修改。
    • 清除您网站的缓存(如果使用了缓存插件),然后测试您的网站外链跳转功能。

主题铺点评: 这段修改后的go页面代码为WordPress子比主题的外链跳转功能带来了质的飞跃。它不仅在视觉上更加吸引人,极大地提升了用户体验,更重要的是,通过引入Nonce验证等机制,显著增强了跳转页面的安全性,有效防范了多种潜在的恶意攻击。对于注重用户体验和网站安全的站长来说,这是一个非常值得应用的优化方案,能够让您的网站在细节之处展现专业与用心。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容