質問: いろいろ調べたのですが、`WWW-Authenticate` ヘッダーを出力するとか、`$_SERVER['PHP_AUTH_USER']` に入力したIDが入ってくるだとか、**BASIC認証のウィンドウを出すための方法**ばかりがヒットするもので、心が萎えています。。。 以下のサイトにあるように、認証後はブラウザ側が自動的にID/PWを送出してくれる必要があるかと思うので、無理っぽい感じがプンプンしてるんですが、なにか方法があるんでしょうか。 Basic認証とフォームによる認証についてのまとめ > > 3. 一度ログインが確立した後はブラウザが前回入力されたユーザID・パスワードを覚えていて、自動でHTTPのAuthorizationヘッダにユーザIDとパスワードを埋め込んで送信する. > > > お心あたりのある方がいらっしゃいましたら、是非ご教授のほどよろしくお願いいたします! m(_ _)m
回答: 大まかには以下の様な流れで実現できます。 1. フォームの送信先では認証に成功したらその旨をセッション情報に記録 2. 認証が必要なファイルをブラウザからアクセス出来ないディレクトリに配置する。 例)ドキュメントルートが `/var/www/html` だとしたら `/var/www/data` に配置 3. ブラウザからのアクセスするパスが`http://example.com/data/a.pdf`だとした場合、`/var/www/html/data`へのアクセスを`/var/www/html/get_file.php`みたいな感じのPHPファイルにリダイレクト or mod_rewriteでアクセス先を変更させる。 4. `get_file.php`では、`readfile()`や等を使って`/var/www/data`以下のファイルの中身を取得し、ヘッダとファイルの中身を出力してブラウザに与える。この際に認証情報のチェックを行う。 内容的にかなり近い質問がありました