2

これに関連するPHP サイトのページを読みましたが、前にヘッダーを指定せずにusernameandにアクセスしようとしているpasswordため、フォームが表示され、後で何らかのリロードが発生します。

usernameオプションで渡すには、これとpassword渡すことができるようにしてほしい。私の目標は、管理ユーザーがこれらの資格情報に依存するようにすることです。したがって、example.com/adminログインを開いて管理機能が表示された状態でリダイレクトされるのではなくexample.com、これらの資格情報を読み取り、それらが一致する場合はそれらからログインしたいと考えています。

とをvar_dump実行$_SERVER$_ENVましたが、 でリクエストしhttp://username:password@example.comてもどこにも表示されません。

PHPをCGIとして実行しています。

どうすればこれを完了できますか?

アップデート:

<?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;
}*/

echo '<pre>';

$user = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : null;
$pass = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : null;
var_dump( $user, $pass );

var_dump($_SERVER, $_ENV);

echo '</pre>';

これが私が取り組んでいるサンプルコードです。を追加するというコリンの提案はRewriteRule、結果に影響しませんでした。

ここで、そのif部分がコメントアウトされているNULL場合、$user と $pass の値を取得します。コメントを外すと、適切な値が得られます。

RewriteRule追加のヘッダーが追加されますが、値を取得するために必須ではありません。すべての魔法はその場合にあるようです。

4

1 に答える 1

1

これはまさにあなたが探しているものだと思います:

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 '<pre>';
    print_r ($_SERVER); 
    echo '</pre>';
    echo '<hr>';
    echo 'Username: ' . $_SERVER['PHP_AUTH_USER'];
    echo '<br>Pass: ' . $_SERVER['PHP_AUTH_PW'];
}

したがって、「auth.php」にこのコードを使用して、http://yourusername:yourpass@yourdomain.com/auth.phpにアクセス すると、URL で提供されたユーザー名とパスで即座にログに記録されます。http://yourdomain.com/auth.phpのような URL に直接アクセスする と、ユーザー名とパスワードを尋ねるポップアップが表示され、それらを入力すると、再度ログインされます。

$_SERVER['PHP_AUTH_USER']
$_SERVER['PHP_AUTH_PW']

ここで、ユーザー名とパスワードを入力します。

一度ログインすると、セッションはそのまま残ります。パスワード プロンプト ボックスをテストするには、「CTRL + SHIFT + N」を押して新しいシークレット ウィンドウを開き、生の URL yourdomain.com/auth.php を入力する必要があります。

于 2015-07-11T12:36:44.690 に答える