---
title: WHMCS
---

# WHMCS

CaptchaLa 公式 WHMCS アドオンモジュール。コードを書かずに、WHMCS クライアントエリアへ CAPTCHA 検証を追加します — ログイン、新規登録、パスワード再設定、お問い合わせフォーム、チケット送信、カート決済。

単なる site-key ウィジェットとは異なり、すべてのチャレンジは**サーバー発行・単回使用のトークン**（リプレイ防止）に裏付けられ、第三者トラッカーは一切読み込みません。

## 保護対象

以下はそれぞれモジュール設定の独立したトグルです — 保護したい入口だけ有効にしてください。

- ログイン
- 新規登録
- パスワード再設定
- お問い合わせフォーム
- チケット送信
- カート決済

## 動作要件

- WHMCS 8.x と 9.x（8.3 および 9.0 のクライアントエリアでテスト済。`six` と `twenty-one` の両テーマで、Friendly URLs の有無を問わず動作）
- PHP 8.0+（WHMCS 9.0 自体は PHP 8.2+ が必要）
- CaptchaLa アカウント — [`dash.captcha.la`](https://dash.captcha.la) で **App Key** + **App Secret** を取得

## インストール

### 1. モジュールを入れる

1. [releases](https://github.com/Captcha-La/captchala-whmcs/releases) から最新の `whmcs-x.y.z.zip` をダウンロードします。
2. **WHMCS ルート**ディレクトリに展開します。これにより `modules/addons/captchala/` が追加されます。
3. WHMCS 管理画面で **Setup → Addon Modules** を開き、**CaptchaLa** を見つけて **Activate** をクリックします。

### 2. 設定

**Configure** をクリックし、次を行います。

1. **App Key** と **App Secret** を貼り付け。
2. **Widget mode** と **Theme** を選択。
3. 保護したいフォームを有効化。
4. **Save Changes** をクリック。

管理サイドバーの **CaptchaLa** ページを開くと、ダッシュボードに対してライブ接続テストを実行できます。

::: tip
有効化後にウィジェットが表示されない場合、一度モジュール設定を保存し直してください — WHMCS はモジュールが（再）有効化／保存されたときにのみ、そのモジュールの `hooks.php` を登録します。
:::

## 設定項目

すべての設定は **Setup → Addon Modules → CaptchaLa → Configure** にあります。

| 設定項目 | 型 | 既定値 | 説明 |
| --- | --- | --- | --- |
| App Key | string | — | CaptchaLa ダッシュボードの公開キー。必須。 |
| App Secret | string | — | サーバーシークレット。トークンの発行と検証に使用。必須。ブラウザには露出しません。 |
| Widget mode | enum | `popup` | `popup`（トリガーバー → 全画面チャレンジ）、`float`（インラインパネル）、`embed`（インラインチェックボックス）、`bind`（不可視、送信を傍受）。 |
| Theme | enum | `default` | カラープリセット: `default`、`dark`、`slate`、`emerald`、`amber`、`rose`。 |
| Language | string | `auto` | BCP-47 コード（例: `en`、`zh`、`de`）または `auto`（ブラウザに追従）。 |
| Protect login | bool | on | クライアントエリアのログインにチャレンジを表示。 |
| Protect registration | bool | on | 新規アカウント登録にチャレンジを表示。 |
| Protect password reset | bool | on | パスワード再設定フォームにチャレンジを表示。 |
| Protect contact form | bool | off | お問い合わせフォームにチャレンジを表示。 |
| Protect ticket submission | bool | off | チケット送信の最終ステップにチャレンジを表示。 |
| Protect cart checkout | bool | off | カート決済にチャレンジを表示。 |
| Skip for logged-in users | bool | on | 既にクライアントセッションを持つ訪問者にはチャレンジを表示しない。 |
| Failure message | string | — | 検証失敗時に表示するメッセージ。 |

## 仕組み

各保護対象フォームのページで、モジュールはダッシュボードからそのフォームの action にスコープされた新しい**サーバートークン（`sct_`）**を発行し、それに紐づけたウィジェットを描画します。訪問者がチャレンジを解くと、SDK は**単回使用のパストークン（`pt_`）**をフォームに書き込みます。送信時、モジュールは WHMCS がフォームを処理する前にその `pt_` をサーバー側で検証し、リプレイや action の不一致は拒否されます。

ダッシュボードに一時的に到達できない場合、モジュールは**フェイルオープン**（送信を通す）するため、上流の一時障害でクライアントエリアがロックアウトされることはありません。

## FAQ

**モジュールは無料ですか？**

無料です。モジュールそのものは無料。CaptchaLa の無料プランで月 10,000 回の検証まで含まれ、それ以上の量が必要な場合のみ有料プランが必要になります。

**WHMCS 8 と 9 の両方で動作しますか？**

します — 8.3 および 9.0 のクライアントエリアで、`six` と `twenty-one` テーマ、Friendly URLs の有無を問わずテスト済です。

**ウィジェットが表示されません。**

一度モジュール設定を保存し直してください（Configure → Save Changes）。WHMCS はモジュールが（再）有効化／保存されたときにのみ `hooks.php` を登録します。

## ソース

- モジュールリポジトリ: [`github.com/Captcha-La/captchala-whmcs`](https://github.com/Captcha-La/captchala-whmcs)
- 問題報告 / 機能要望: 上記リポジトリの issue へ
- 関連: [Web SDK](/ja/web-sdk) · [PHP サーバー SDK](/ja/sdk/server-php) · [API リファレンス](/ja/api-reference)
