1

HTTP 認証をセットアップする必要があります。$_SERVER['PHP_AUTH_USER'] と $_SERVER['PHP_AUTH_PW'] を検証するための手法とコードを調査して見つけましたが、それは理解できたと思います。しかし、 PHP_AUTH_USER と PHP_AUTH_PW を設定する方法がわかりませんか? $_SERVER で print-r を使用しましたが、どちらも表示されませんでしたか? これらをサーバー上のどこかのファイルに何らかの方法で設定しますか、それともコードを使用して設定しますか?

Webfaction がホストする共有サーバーを使用しています。

これは素晴らしい質問ではないかもしれませんが、誰かが私を正しい方向に向けてくれるなら、それは素晴らしいことです..

4

3 に答える 3

2
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Text to send if user hits Cancel button';
    exit;
} else {
    echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
}

ページが呼び出されると、$_SERVER['PHP_AUTH_USER']設定されません。したがって、HTTP/1.0 401 Unauthorizedブラウザーでモーダルを表示するページ リターン ヘッダー。

そして、ブラウザーが ID とパスワードを使用して 2 番目の要求を送信すると、. 次のリクエストを送信します。

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

そして、スーパーグローバル変数PHP_AUTH_USERPHP_AUTH_PWは PHP によって自動的に設定されます。

ソース:

于 2013-03-29T16:35:12.503 に答える
1

必要なコードは次のとおりです。

$successful = FALSE;

if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']))
{
    $username = $_SERVER['PHP_AUTH_USER'];
    $password = $_SERVER['PHP_AUTH_PW'];

    if ($username == '-- username --' && $password == '-- password --')
    {
        $successful = TRUE;
    }
}

if ( ! $successful)
{
    header('WWW-Authenticate: Basic realm="Secret page"');
    header('HTTP/1.0 401 Unauthorized');
}

ユーザー名とパスワードを要求し、それらが一致するかどうかを確認し、一致しない場合は再度要求します。

サーバーの構成によっては、HTTP 基本認証が機能しない場合があることに注意してください。


ps and を独自のユーザー名とパスワードに置き換える必要-- username ---- password --あります。

于 2013-03-29T16:27:16.737 に答える
0

環境変数 (別名スーパーグローバル) を設定するには、次の形式を使用します。
$_SERVER['variable'] = value (または variable);

http://php.net/manual/en/language.variables.superglobals.php - PHP スーパーグローバル変数に関する有益な情報。

于 2013-03-29T16:36:08.357 に答える