---
title: "テーマに PHP ドメイン認証を追加する - 憂いを忘れる一枚"
description: "最近、WordPress テーマをどのように認証するかについて考えてみました。最初は、JS でドメインを判定する方法によって認証を実現しようと思いましたが、JS 認証 は簡単に突破されてしまい、要素を検証するだけで簡単に確認できるため、この考えはすぐに否定しました。次に、PHP 認証 を検討しました。この方法は比較的安"
canonical_url: "https://www.ikxin.com/ja/article/php-domain-licensing"
last_updated: "2026-09-16T09:59:27.259Z"
locale: ja
meta:
  "og:description": "最近、WordPress テーマをどのように認証するかについて考えてみました。最初は、JS でドメインを判定する方法によって認証を実現しようと思いましたが、JS 認証 は簡単に突破されてしまい、要素を検証するだけで簡単に確認できるため、この考えはすぐに否定しました。次に、PHP 認証 を検討しました。この方法は比較的安"
  "og:image": "https://www.ikxin.com/_og/d/h_630%2Ca_~44OG44O844Oe44GrIFBIUCDjg4njg6HjgqTjg7Poqo3oqLzjgpLov73liqDjgZnjgosgLSDmhoLjgYTjgpLlv5jjgozjgovkuIDmnpo%2Cc_Article%2Ctitle_~44OG44O844Oe44GrIFBIUCDjg4njg6HjgqTjg7Poqo3oqLzjgpLov73liqDjgZnjgos%2Cdescription_~5pyA6L-R44CBV29yZFByZXNzIOODhuODvOODnuOCkuOBqeOBruOCiOOBhuOBq-iqjeiovOOBmeOCi-OBi-OBq-OBpOOBhOOBpuiAg-OBiOOBpuOBv-OBvuOBl-OBn-OAguacgOWIneOBr-OAgUpTIOOBp-ODieODoeOCpOODs-OCkuWIpOWumuOBmeOCi-aWueazleOBq-OCiOOBo-OBpuiqjeiovOOCkuWun-ePvuOBl-OCiOOBhuOBqOaAneOBhOOBvuOBl-OBn-OBjOOAgUpTIOiqjeiovCDjga~nsKHljZjjgavnqoHnoLTjgZXjgozjgabjgZfjgb7jgYTjgIHopoHntKDjgpLmpJzoqLzjgZnjgovjgaDjgZHjgafnsKHljZjjgavnorroqo3jgafjgY3jgovjgZ~jgoHjgIHjgZPjga7ogIPjgYjjga~jgZnjgZDjgavlkKblrprjgZfjgb7jgZfjgZ~jgILmrKHjgavjgIFQSFAg6KqN6Ki8IOOCkuaknOiojuOBl-OBvuOBl-OBn-OAguOBk-OBruaWueazleOBr-avlOi8g-eahOWuiQ%2CsiteName_~5oaC44GE44KS5b-Y44KM44KL5LiA5p6a%2CsiteHost_www.ikxin.com%2Cp_Ii9qYS9hcnRpY2xlL3BocC1kb21haW4tbGljZW5zaW5nIg%2Cs_zlPobodvv45UJ4tP.png"
  "og:image:alt": "テーマに PHP ドメイン認証を追加する - 憂いを忘れる一枚"
  "og:image:height": "630"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": "テーマに PHP ドメイン認証を追加する"
  "twitter:image": "https://www.ikxin.com/_og/d/h_630%2Ca_~44OG44O844Oe44GrIFBIUCDjg4njg6HjgqTjg7Poqo3oqLzjgpLov73liqDjgZnjgosgLSDmhoLjgYTjgpLlv5jjgozjgovkuIDmnpo%2Cc_Article%2Ctitle_~44OG44O844Oe44GrIFBIUCDjg4njg6HjgqTjg7Poqo3oqLzjgpLov73liqDjgZnjgos%2Cdescription_~5pyA6L-R44CBV29yZFByZXNzIOODhuODvOODnuOCkuOBqeOBruOCiOOBhuOBq-iqjeiovOOBmeOCi-OBi-OBq-OBpOOBhOOBpuiAg-OBiOOBpuOBv-OBvuOBl-OBn-OAguacgOWIneOBr-OAgUpTIOOBp-ODieODoeOCpOODs-OCkuWIpOWumuOBmeOCi-aWueazleOBq-OCiOOBo-OBpuiqjeiovOOCkuWun-ePvuOBl-OCiOOBhuOBqOaAneOBhOOBvuOBl-OBn-OBjOOAgUpTIOiqjeiovCDjga~nsKHljZjjgavnqoHnoLTjgZXjgozjgabjgZfjgb7jgYTjgIHopoHntKDjgpLmpJzoqLzjgZnjgovjgaDjgZHjgafnsKHljZjjgavnorroqo3jgafjgY3jgovjgZ~jgoHjgIHjgZPjga7ogIPjgYjjga~jgZnjgZDjgavlkKblrprjgZfjgb7jgZfjgZ~jgILmrKHjgavjgIFQSFAg6KqN6Ki8IOOCkuaknOiojuOBl-OBvuOBl-OBn-OAguOBk-OBruaWueazleOBr-avlOi8g-eahOWuiQ%2CsiteName_~5oaC44GE44KS5b-Y44KM44KL5LiA5p6a%2CsiteHost_www.ikxin.com%2Cp_Ii9qYS9hcnRpY2xlL3BocC1kb21haW4tbGljZW5zaW5nIg%2Cs_zlPobodvv45UJ4tP.png"
  "twitter:image:alt": "テーマに PHP ドメイン認証を追加する - 憂いを忘れる一枚"
---

> Index of every page on this site: [llms.txt](https://www.ikxin.com/llms.txt)

# **テーマに PHP ドメイン認証を追加する**

2017.07.10 9,902  3

最近、**WordPress** テーマをどのように認証するかについて考えてみました。最初は、**JS** でドメインを判定する方法によって認証を実現しようと思いましたが、**JS 認証** は簡単に突破されてしまい、要素を検証するだけで簡単に確認できるため、この考えはすぐに否定しました。次に、**PHP 認証** を検討しました。この方法は比較的安全です。**PHP** には複数の暗号化方法があり、突破するにはより多くの時間と労力が必要となるため、多くの人がテーマの解析を試みるのを効果的に防ぐことができます。

以下は **PHP によるドメイン認証** の考え方です。

## 1つ目：クラウド側でドメイン認証を検証する

### クライアント側のコード：

 PHP

```
<?php
$shouname = trim($_SERVER['SERVER_NAME']);  // 获取域名
$shouurl = file_get_contents('https://www.ikxin.com/shouquan.php?domain='.$shouname);  // 获取服务端授权文件
if(!empty($shouurl)){
    echo "已授权！";    // 授权成功
}else{
    die("未授权！");    // 授权失败
}
?>
```

### サーバー側のコード：

 PHP

```
<?php
$domain = $_GET['domain'];                                // 获取域名
$Array = array('127.0.0.1','localhost','www.ikxin.com');  // 授权域名列表
echo in_array($domain, $Array) ? 'yes' : '';              // 校验结果
?>
```

**説明：**

- ドメイン認証コードは関数にカプセル化したり、暗号化処理を行ったりすることができます。
- 一般的な **PHP の暗号化** 方法には、**Zend、mzphp2、ionCube** などがありますが、いずれにも一定の解析方法があります。認証するドメインが多い場合は、プロジェクトにドメインフィールドを追加し、ドメインをデータベースに保存して読み取りと検証を行うことができます。

## 2つ目：独立してドメイン認証を検証する

 PHP

```
<?php
function allow_domain(){
    $is_allow = false;
    // 获取不带端口号的域名前缀
    $servername = trim($_SERVER['SERVER_NAME']);
    // 授权域名列表
    $Array = array("localhost", "127.0.0.1");
    // 遍历数组
    foreach($Array as $value){
        $value = trim($value);
        $domain = explode($value, $servername);
        if(count($domain) > 1){
            $is_allow = true;
            break;
        }
    }
    if(!$is_allow){
        die("域名未授权！");    // 授权失败
    }else{
        echo "域名已授权！";    // 授权成功
    }
}
allow_domain();
?>
```

## 使用方法

上記の方法では、**1つ目** の使用を推奨します。1つ目の方法は管理しやすいためです。クライアント側のコードを **WordPress テーマのグローバル PHP 関数ファイル** に記述し、自分のサーバー側でドメイン認証を設定することができます。クライアント側の **PHP ファイル** も暗号化処理できます。もちろん、**PHP コード** の暗号化には一定の難しさがありますが、世界には絶対に復号できないコードは存在しません。

## **コメント**

(3)

1. [**duke**](https://www.dukeyin.com)2019/07/17 15:41 Chrome 75 Windows 7

   OωO 谢谢博主，正在研究这方面。感觉最关键的还是加密，太容易破解不行，太影响性能也不行，授权长期有效就得每次都检查server，有点不好弄。
   1. [**一纸忘忧**](http://www.typecho.org) duke さんへの返信2019/07/20 12:36 Chrome 75 macOS 10.14.5Apple Macintosh

      这种授权方式本来就是小白级别的，而且php也没有不可逆的加密，要想实现更可靠的授权机制，还得想其他方案
2. [**云上的影子**](https://www.ysdyz.com)2020/10/19 22:19 Chrome 86 Windows 10

   请问博主，如果是js代码怎么弄授权呢

## **コメントを投稿**

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://www.ikxin.com/ja#website","@type":"WebSite","description":"「憂いを忘れる一枚」は、技術探究と日々の暮らしをテーマにした個人サイトです。Web 開発、バックエンド、DevOps の実践を記録し、ソフトウェアツールやデジタル体験、コードの外で得た見聞と思索を共有します。","inLanguage":"ja-JP","name":"憂いを忘れる一枚","url":"https://www.ikxin.com/ja","translationOfWork":{"@id":"https://www.ikxin.com/#website"}},{"@id":"https://www.ikxin.com/ja/article/php-domain-licensing#webpage","@type":"WebPage","description":"最近、WordPress テーマをどのように認証するかについて考えてみました。最初は、JS でドメインを判定する方法によって認証を実現しようと思いましたが、JS 認証 は簡単に突破されてしまい、要素を検証するだけで簡単に確認できるため、この考えはすぐに否定しました。次に、PHP 認証 を検討しました。この方法は比較的安","name":"テーマに PHP ドメイン認証を追加する","url":"https://www.ikxin.com/ja/article/php-domain-licensing","isPartOf":{"@id":"https://www.ikxin.com/ja#website"},"potentialAction":[{"@type":"ReadAction","target":["https://www.ikxin.com/ja/article/php-domain-licensing"]}]}]}
```

## Sitemap

See the full [sitemap](https://www.ikxin.com/sitemap.md) for all pages.
