ホームページ >バックエンド開発 >PHPチュートリアル >ユーザー認証用のヘッダー関数とPHP_AUTH_USER
php Header PHP_AUTH_USER PHP_AUTH_PW ユーザー検証
php では、Header 関数を使用していくつかの興味深いことを行うことができ、ユーザー検証は興味深い関数の 1 つです。具体的な使用法:
Header("WWW-Authenticate: Basic realm="USER LOGIN"");
Header("HTTP/1.0 401 Unauthorized");
これら 2 つのヘッダー関数をページの上部に設計します。ページがロードされます。入る前にログイン ボックスが表示され、ユーザー名とパスワードの入力が求められます。 Web ページにログインすることに慣れている私たちにとって、この種のログインは独創的で斬新だと思いますか?
このダイアログボックスから渡されたユーザー名とパスワードを取得するには、PHP が提供する 2 つの特殊変数 $PHP_AUTH_USER と $PHP_AUTH_PW を使用する必要があるようです。 このようにこの 2 つの特殊変数を使用するには、次のように設定する必要があるようです。 php.ini オプションの関連する変数。それ以外の場合は、次のように引用することしかできません:
$_SERVER['PHP_AUTH_USER']
$_SERVER['PHP_AUTH_PW']
ユーザーによって送信されたユーザー名とパスワードを取得した後、ロジックの処理方法は私たちと同じでプログラムの処理に違いはありません。参考として、2 つのルーチンを以下に示します。
if(!isset($PHP_AUTH_USER)) {
Header("WWW-authenticate: Basic realm="XXX"");
Header("HTTP / 1.0 401 Unauthorized");
$title="ログイン手順";
?>
Web サイトのこのセクションに入るには、XXX
購読者である必要があります。あなたは購読者ですが、ログインに問題が発生しています
、
support@xxx.com までご連絡ください。
blockquote> ;
exit;
} else {
mysql_pconnect("localhost","nobody","") または die("
SQL サーバーに接続できません");
mysql_select_db( " xxx") または die("データベースを選択できません");
$user_id=strto lower($PHP_AUTH_USER);
$password=$PHP_AUTH_PW;
$query = mysql_query("select * from users where user_id=' $ user_id' と
password='$password'");
if(!mysql_num_rows($query)) {
Header("WWW-authenticate: Basic realm="XXX"");
Header(" HTTP /1.0 401 Unauthorized");
$title="ログイン手順";
?>
Web サイトのこのセクションに入るには、XXX
購読者である必要があります。購読者の方でログインに問題がある場合は、
support@xxx.com までご連絡ください。
< blockquote>
exit;
}
$name=mysql_result($query,0,"name");
$email=mysql_result($query,0,"email");
mysql_free_result($query);
}
?>
ソース ページ: http://www.weberdev.com/get_example-82.html
別の参照ルーチン:
//ユーザーが認証されていないと仮定します
$auth = false;
$user = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
if ( isset($user ) && isset( $pass) )
{
//db
に接続しますinclude 'db_connect.php';
//入力されたユーザー名/パスワードがdb
にあるかどうかを確認するSQLクエリ$sql = "SELECT * FROM health_workshop_admin WHERE
user = '$PHP_AUTH_USER' AND
pass = '$PHP_AUTH_PW'";
// SQL コマンドと SQL 命令を変数に入れます
$result = mysql_query($sql) or die ('Unable to connect.');
//コマンドで番号または行を取得; 0 より大きい場合、行が見つかります
$num_matches = mysql_num_rows($result);
if ($num_matches !=0)
{
// 一致する行が見つかったので user を認証します
$auth = true;
}
}
if (!$auth)
{
header('WWW-Authenticate: Basic realm="Health Ed Presentation Admin"' );
header('HTTP/1.0 401 Unauthorized');
echo '有効なユーザー名とパスワードを入力する必要があります。';
exit;
}
else
{
echo '成功!' ;
}
?>