Tome Chen

Tome Chen

Typecho下でhCaptcha認証を追加する方法

因为众所周知的原因,Google 的 reCAPTCHA 在中国地区完全无法正常使用,所以我将目光转向了hChaptcha


第一步#

注册,你可以使用 Github 或 Google 登录,也可以注册账户
2023-05-28T01:39:48.png

注册完成后你可以获得你的 secret 密钥

第二步#

进入 Dashboard,点击网站,里边会有一个预置的,点击旁边的灰色按钮,在这里
2023-05-28T01:44:12.png

添加你的网址,顺便记下 site 密钥

第三步#

更改博客目录 /var/Widget下的 Login.php,在顶部添加以下内容

class Paul_GCaptcha {
public static $success, $failed;

// 发送验证信息
public static function send($post_data) {
    $postdata = http_build_query($post_data);
    $options = array(
        'http' => array(
            'method' => 'POST',
            'header' => 'Content-type:application/x-www-form-urlencoded',
            'content' => $postdata,
            'timeout' => 15 * 60 // 超时时间
        )
    );
    $context = stream_context_create($options);  
    $result = file_get_contents("https://hcaptcha.com/siteverify", false, $context);
    return $result;
}

// 判断验证状况
public static function check(){
    if($_POST["h-captcha-response"]){
        $data = array(
            'secret' => 'これはあなたのSECRETキーです',
            'response' => $_POST["h-captcha-response"] // ユーザーが送信した検証データを受け取る
        );

        $result = self::send($data);
        $result = json_decode($result, true);
        $result = $result["success"];

        if($result == true){
            return true; // 検証成功
        }
        else{
            return false; // 検証失敗
        }
    }
    else{
        return false; // ユーザーが検証情報を送信していません
    }
}

その後、博客目录 /admin下的 login.php 中,適切な位置に以下のコードを追加します

 <script src="https://js.hcaptcha.com/1/api.js" async defer></script>
 <div class="h-captcha" data-sitekey="あなたのSITEキー"></div>

ログインページに hCaptcha が表示されれば完了です
2023-05-28T02:01:28.png

もし handsome テーマを使用している場合は、管理画面の外観設定 → 開発者設定 → カスタム出力の body の末尾に HTML コードを入力します

    <script src="https://js.hcaptcha.com/1/api.js" async defer></script>

そして、/usr/themes/handsome/component/headnav.php の 369 行目の下に以下のコードを追加します(Handsome 9.0.2)

<div class="h-captcha" style="transform: scale(0.827); -webkit-transform: scale(0.827); transform-origin: 0 0; -webkit-transform-origin: 0 0;" data-sitekey="あなたのSITEキー"></div>

2023-05-28T02:38:06.png
これで、Typecho での hCaptcha のデプロイが完了しました!

後書き#

この記事のコードは実際にはBLxcwg666から取得したものですが、元の記事は reCAPTCHA のチュートリアルであり、自分で少し修正しました

この記事は Mix Space からの同期更新で、xLog に掲載されています
元のリンクは https://blog.nekotc.cn/posts/default/2


読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。