まず断るのか

医療関係のe-ラーニングサイトを立てようというプロジェクトに取りかかります。これまではDB組むとき、管理者画面なんか作らずにphp MyAdminで十分でしょうとしてきたんだけど、今回はまず管理画面から組み始め。そこで必要になるのが認証機構です。
PHPの認証の仕組み、これまでサンプルプログラムを見せられても手順が全然理解できずにいました。$PHP_AUTH_USERがセットされているかどうかで認証の有無を調べるんだけど、これをチェックする前に当然認証ウィンドウを出さないとユーザ名もパスワードも受け取れないのに、そういう命令はどこにも見あたらない。$PHP_AUTH_USERをチェックするという動作が認証ウィンドウを出す指示も兼ねているのか・・・? とか悩んでいました。
わかってみれば簡単。認証付きのPHPページは2回呼ばれるのです。1回目は普通のページとして呼ばれるので$PHP_AUTH_USERは当然未セット。そこでAuthorization failedページを出力するのがミソ。ブラウザはこれを見て、改めて認証の必要だったことを思い知り認証情報付きで同じページを呼び直すのです。