PHPだけで簡単にBasic認証する方法

Basic認証って.htaccessにいろいろ書かないといけなくて面倒なイメージがありましたが、今はPHPだけで簡単にする方法があるようです。

一見変わったコードですが、以下を記述するとBasic認証がかかります。詳しい仕組みは元の記事に書かれています。

<?php

switch (true) {
    case !isset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']):
    case $_SERVER['PHP_AUTH_USER'] !== 'admin':
    case $_SERVER['PHP_AUTH_PW']   !== 'password':
        header('WWW-Authenticate: Basic realm="Enter username and password."');
        header('Content-Type: text/plain; charset=utf-8');
        die('このページを見るにはログインが必要です');
}

header('Content-Type: text/html; charset=utf-8');

あとはこれを関数にしたりしておけば、便利に使えると思います。

<?php

// my_library.php

function basic_auth(){
    switch (true) {
        case !isset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']):
        case $_SERVER['PHP_AUTH_USER'] !== 'admin':
        case $_SERVER['PHP_AUTH_PW']   !== 'password':
            header('WWW-Authenticate: Basic realm="Enter username and password."');
            header('Content-Type: text/plain; charset=utf-8');
            die('このページを見るにはログインが必要です');
    }

    header('Content-Type: text/html; charset=utf-8');
}
<?php

// index.php

require_once 'my_library.php';

basic_auth();
詳細! PHP 7+MySQL 入門ノート
大重 美幸
ソーテック社
売り上げランキング: 17,312