0

私のphp Webページでユーザーを認証するために一般的な例を使用しようとしています。私のサイトは、公開されている Windows .net サーバーでホストされています (はい... PHP も実行されています) サーバーのセットアップを確認するために phpinfo を実行しました。$_SERVER['PHP_AUTH_USER']許可されているようです。ユーザーとパスワードの組み合わせを入力した後でもログイン プロンプトが表示され続けます。

<?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>";
}
?>

phpinfo

4

2 に答える 2

1

IIS 上の PHP がユーザー名とパスワードを受信しないのは一般的なシナリオであり、簡単に回避できます:Authorizationヘッダーを使用します。

これは単なる記憶からのものです。出発点と考えてください

if (!isset($_SERVER['PHP_AUTH_USER']))
  if (isset($_SERVER['HTTP_AUTHORIZATION'])) {
    $auth=explode(' ',$_SERVER['HTTP_AUTHORIZATION']);
    if ((strtoupper($auth[0])=='BASIC') || (sizeof($auth)==2)) {
      $auth=@base64_decode($auth[1]);
      if ($auth) {
        $auth=explode(':',$auth,2);
        if (sizeof($auth)==2) {
          $_SERVER['AUTH_TYPE']='Basic';
          $_SERVER['PHP_AUTH_USER']=$auth[0];
          $_SERVER['PHP_AUTH_PW']=$auth[1];
        }
      }
    }
  }
//Now proceed as normal
于 2013-10-22T19:20:43.977 に答える
0

より基本的な方法を試して、exにログインしたときにセッション変数を追加することをお勧めします

ログインするとき

$_SESSION['logged']="true";

あなたのページに

if($_SESSION['logged'] == "true" )
{
//load your page
}else{
//redirect him/her to somewhere

そしてあなたのログアウトで

session_start();
session_destroy();
于 2013-10-22T21:42:13.367 に答える