- ベストアンサー
データベースと連動したベーシック認証
- データベースと連動したベーシック認証の方法を知りたいです
- レンタルサーバーでもデータベースを使ったベーシック認証は可能でしょうか?
- フリーの掲示板cgiにベーシック認証を掛けたいですが、個別にユーザーIDやパスワードを設定できますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
PHPであれば、環境変数とHTTPヘッダーで実現可能です。 if (!$_SERVER['PHP_AUTH_USER'] && !$_SERVER['PHP_AUTH_PW'] ) { header("HTTP/1.0 401 Authorized Request"); header("WWW-authenticate: basic realm=\"Login Ninsho\""); print "Cannot Authrization"; exit; } else { // ここにMySQLのマッチ処理 // $_SERVER['PHP_AUTH_USER']がID、$_SERVER['PHP_AUTH_PW']がパスワード // IDが無かったり、ID・パスが一致しないときは、下記ヘッダを出します。 header("HTTP/1.0 401 Unauthorized"); header("WWW-authenticate: basic realm=\"Login Ninsho\""); print "Cannot Authrization"; exit; } HTTPのBASIC認証ですので3回までトライ可能。登録ユーザしか見れないプログラム全ての先頭部分に、上記ロジックを入れることを忘れずに。お気に入りされるとダイレクトに見られちゃいますよ。
その他の回答 (2)
- TAI_0824
- ベストアンサー率54% (6/11)
Perl-CGIを利用したBasic認証について参考になるURLをお知らせしておきます。これならご要望にお応えできるかもしれません。 私はPerlはあまりさわらないのですが、これは.htaccessと.htpasswd を直接書き換えて出来るようです。
お礼
お礼が遅くなってしまいすみませんm(_ _)m 参考URLありがとうございます。
- yambejp
- ベストアンサー率51% (3827/7415)
データベース認証は、httpデーモンの拡張機能なのでphpはなくてもできます。 apacheもバージョンによって当然モジュールが違うのでバージョンに あわせた設定が必要になります
お礼
ご回答ありがとうございます、もう少し調べてみようと思います。
補足
ご回答ありがとうございますm(_ _)m ご提示してくださったスクリプトを試してみましたら、ベーシック認証の画面までは表示することができました。 ただこの場合ですとご説明くださっているように、スクリプトを書いたページのみが認証対象になる為、掲示板プログラムのcgiに直接アクセスされると、認証がパスされてしまいます。 やはりhtaccessでフォルダ単位でアクセス制限をかけるしかないでしょうか? でもhtaccessのベーシック認証でデータベースと連動しようとすると何やらアパッチのモジュール(mod_auth_mysql?)が必要なようですし、共用のレンタルサーバーである為モジュールのインストールもできそうにありません。 データベースによる認証は諦めて、htpasswdで会員を管理するしか方法はないでしょうか? 何か他に案がありましたらお力添えお願いしますm(_ _)m