プロが教える店舗&オフィスのセキュリティ対策術

はじめまして。よろしくお願いしますm(_ _)m
ベーシック認証でmysqlと連動した認証を行いたいのですが、方法がわかりません。
調べてみると、モジュール?をインストールするとmysqlなどのデータベースと連動したものが使えるらしいのですが、レンタルサーバー等でもそれは可能なのでしょうか?(一応phpとmysqlが使えるサーバーです)

やりたいのはフリーの掲示板cgiに認証を掛けて登録ユーザーしか観覧、書き込みができないようにしたいです。その際、ユーザーIDやパスワードは個別に設定したいのですが、ベーシック認証でこれは可能でしょうか?

あまりプログラムの知識がないので、漠然としたイメージしか伝えられませんが、何かアドバイスありましたらお助け下さいm(_ _)m

A 回答 (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回までトライ可能。登録ユーザしか見れないプログラム全ての先頭部分に、上記ロジックを入れることを忘れずに。お気に入りされるとダイレクトに見られちゃいますよ。

この回答への補足

ご回答ありがとうございますm(_ _)m
ご提示してくださったスクリプトを試してみましたら、ベーシック認証の画面までは表示することができました。

ただこの場合ですとご説明くださっているように、スクリプトを書いたページのみが認証対象になる為、掲示板プログラムのcgiに直接アクセスされると、認証がパスされてしまいます。

やはりhtaccessでフォルダ単位でアクセス制限をかけるしかないでしょうか?

でもhtaccessのベーシック認証でデータベースと連動しようとすると何やらアパッチのモジュール(mod_auth_mysql?)が必要なようですし、共用のレンタルサーバーである為モジュールのインストールもできそうにありません。

データベースによる認証は諦めて、htpasswdで会員を管理するしか方法はないでしょうか?
何か他に案がありましたらお力添えお願いしますm(_ _)m

補足日時:2008/02/25 18:18
    • good
    • 0

Perl-CGIを利用したBasic認証について参考になるURLをお知らせしておきます。

これならご要望にお応えできるかもしれません。
私はPerlはあまりさわらないのですが、これは.htaccessと.htpasswd を直接書き換えて出来るようです。

参考URL:http://www.kent-web.com/pwd/pwmgr.html
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまいすみませんm(_ _)m
参考URLありがとうございます。

お礼日時:2008/04/04 15:11

データベース認証は、httpデーモンの拡張機能なのでphpはなくてもできます。


apacheもバージョンによって当然モジュールが違うのでバージョンに
あわせた設定が必要になります
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます、もう少し調べてみようと思います。

お礼日時:2008/02/25 18:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!