• ベストアンサー

php認証

php認証 phpとmysqlを使って、ユーザーIDごとに違うページを割り当てる認証システムを作りたいのですが、良い書籍などはありますか? また、スクリプトをあげていただけるととても助かります。。。

  • PHP
  • 回答数3
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

>"Basic認証の延長"とはどのようなものなのでしょうか。 basic認証はご存じだとは思いますが、例の htpasswdで暗号化してファイルで管理・・・的な結構 メンテナンスも面倒な仕組みですが、mysql認証なら、 データの管理自体はDBなので汎用性もあるし、保守がかなり楽です。 今回のケースだとphpは直接からまないですが、インタフェースの 部分でphpを活用すればかなり認証システム的には楽ですよ。 http://sourceforge.net/projects/modauthmysql/

none-none
質問者

お礼

お礼・ベストアンサー選択が遅くなってしまい、申し訳ありませんでした。 教えていただいたURLの[mod_auth_mysql]は http://blog.katsuma.tv/2007/10/mod_auth_mysql_basic_auth.html を参考にして使ってみました。 ありがとうございました。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

認証のレベルによります。どこまでの要求になりますか? たとえば、オンライン決済まで厳密にやるには、かなり大がかりな セキュアな処理が必要ですし、ある程度ザルでも良ければ、 Basic認証の延長でMySQL(Basic)認証が掛けられます。

none-none
質問者

補足

回答、ありがとうございます。 "オンライン決済"など、お金に関わることはしません。 やはり、"オンライン決済"になると大がかりになってしまうのですね。。。 "Basic認証の延長"とはどのようなものなのでしょうか。 .htaccessで行う認証の延長、ということでしょうか。 よろしくお願いいたします。

noname#111181
noname#111181
回答No.1

「PHPの薬箱?エラー・トラブル回避のテクニックとセキュリティ」(佐久嶋ひろみ/九天社/2006年11月)をお勧めします。MySQLを使ったID/パスワード管理など、豊富な事例が載っています。

none-none
質問者

お礼

質問から約20分で回答をいただくことが出来、とても感謝しています。 ありがとうございました。

関連するQ&A

  • PHP+mySQL認証画面

    サーバーの引っ越しで新しいサーバーにてプログラムの動作確認を行っています。 管理者パネルに入るのに、PHPで作成した認証プログラムでログインしようとすると、入力しても何度も聞いてきて入れません。 旧 MySQL5.0.22   phpMyAdmin2.8.2.4 新 MySQL5.1.69 phpMyAdmin3.5.8.1  IDとパスワードはデータベースで設定。 管理者パネルで変更できるようになっている。 $sv = "**"; $dbname = "**"; $user = "**"; $pass = "**"; ログイン認証 //データベースに接続する $conn = mysql_connect($sv,$user,$pass) or die("接続エラー"); mysql_select_db($dbname) or die("データーベース接続エラー"); $sql = "SELECT id, pass FROM pass_t WHERE pno=1"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $db_user_id=$row['id']; $db_password=$row['pass']; } if(!isset($_SERVER["PHP_AUTH_USER"]) || $_SERVER["PHP_AUTH_USER"] != "$db_user_id" || $_SERVER["PHP_AUTH_PW"] != "$db_password") { header("WWW-Authenticate: Basic realm=\"login\""); header('HTTP/1.0 401 Unauthorized'); echo "ユーザー名またはパスワードが間違っています。<br>"; echo "もう一度はじめからやり直してください。"; exit; } 細々変えて試してみましたが駄目でした。 まだまだわからないことだらけの初心者なので、どうにもならずで 解決策がありましたらぜひ教えて頂けますと幸いです。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • ホームページでPHP認証

    ホームページでPHP認証を組み込もうと考えているのですが、ユーザーごとに違うページが開く認証をつくるにはどうすれば良いのでしょうか。 Authを使うと良いなどは検索してわかったのですが、その続きが分かりません。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPでの認証方法

    お世話になります。 現在PHP言語でのActive Directoryへの認証を考えています。 KADM5関数やLDAP関数等を使用するらしい事は分かったのですけれども、使い方がよく分からなくて困っています。 例えば、 サーバー名が「server01」 ドメインが「d01」 ユーザーアカウント「user01」 パスワードが「abc」 の認証を、直接WEBページのフォームからユーザーIDと パスワードを入れて、認証が出来ます基本的な例文などがございましたら、教えていただけましたらと思っています。 また、できましたら、パスワードの期限がきました時の変更などもweb上で、できましたらと思っています。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • パスワード認証機能のPHPスクリプト

    こんばんは。 PHPのID・パスワード認証PHPスクリプトを探しています。 条件は以下のとおりです。 ・ID/パスワードでログインできる ・管理画面からID/パスワードの追加ができる ・PHP ・無料 ・ベーシック認証ではない ・レンタル式じゃない ないと思いますが、よろしくお願いします!

    • ベストアンサー
    • PHP
  • データベースと連動したベーシック認証

    はじめまして。よろしくお願いしますm(_ _)m ベーシック認証でmysqlと連動した認証を行いたいのですが、方法がわかりません。 調べてみると、モジュール?をインストールするとmysqlなどのデータベースと連動したものが使えるらしいのですが、レンタルサーバー等でもそれは可能なのでしょうか?(一応phpとmysqlが使えるサーバーです) やりたいのはフリーの掲示板cgiに認証を掛けて登録ユーザーしか観覧、書き込みができないようにしたいです。その際、ユーザーIDやパスワードは個別に設定したいのですが、ベーシック認証でこれは可能でしょうか? あまりプログラムの知識がないので、漠然としたイメージしか伝えられませんが、何かアドバイスありましたらお助け下さいm(_ _)m

    • ベストアンサー
    • PHP
  • LinuxOSのユーザ・パスワードを元にPHPで認証を行うには?

    LinuxOSのユーザ・パスワードを元にPHPで認証を行うには? 曖昧なタイトルで申し訳ありません. 環境は以下の通りです. CentOS5.4 Apache 2.2 PHP 5 MySQL5 現在,LinuxOSに存在するユーザ毎にウェブベースのコントロールパネルを設けたいため,ユーザ認証を掛けたいと思っているのですが,どのような方法で認証を実装すれば,LinuxOSで使用されている/etc/passwdと/etc/shadowを元にした認証が可能なのか分からず,質問させていただきました. 流れとしては以下の通りです. ユーザ名・パスワードを入力 → ユーザが存在しなかったりパスワードが違えば認証拒否 ↓ Linuxにユーザが存在していて,且つシステムパスワードと一致すれば承認. この認証はPAM認証(?)で可能でしょうか? また,そうであれば,PHPからPAM認証を行うには,どのような環境整備が必要でしょうか? 参考サイトでもかまいませんので,ご教授いただけると幸いです. よろしくお願いします.

    • ベストアンサー
    • PHP
  • Basic認証: PHP_AUTH_USERが

    環境:CentOS6.3, PHP Version 5.3.3, Apache/2.2.15 (CentOS) ,MySQL Server version 5.1.61 (Client API versionも同じ) です。テーブルmembers にname,password の2欄があり、データがそれぞれ、taro , abc と入っています。  ここで phpを下記のように書きました。 1 <?php 2 // データベースに接続      中略 7 8 // 認証処理(Basic認証) 9 if (!isset($_SERVER["PHP_AUTH_USER"])) { 10 header("WWW-Authenticate: Basic"); 11 header("HTTP/1.0 401 Unauthorized"); 12 exit; 13 }else{ 14 var_dump(($_SERVER)." --line_a"."<br />"); 15 print ("ユーザ名:". $_SERVER['PHP_AUTH_USER']." --line_b"."<br />"); 16 17 // 入力されたアカウントが正しいかチェック 18 $result = mysql_query( "SELECT COUNT(id) AS rows FROM `account` WHERE name = $_SERVER [ 'PHP_AUTH_USER' ] AND password = $_SERVER ['PHP_AUTH_PW' ]", $conn); 19 20 echo( $_SERVER [ 'PHP_AUTH_USER' ]."-".$_SERVER ['PHP_AUTH_PW' ]."--line_c"."<br />"); 21 echo($result."--line_d"."<br />"); 以下略 これでブラウザから認証を経てログインすると、 string(20) "Array --line_a " ユーザ名:taro --line_b taro-ptaro--line_c --line_d となって、$result に値が入りません。 18行の WHERE句を外し、 $result = mysql_query( "SELECT COUNT(id) AS rows FROM `account`", $conn) or die("result取得エラー") ; とすると、 string(20) "Array --line_a " ユーザ名:taro --line_b taro-abc--line_c Resource id #3--line_d となり、$result にResource id #3 が返ります。 WHERE句で name = 'taro'  を指定し、 $result = mysql_query( "SELECT COUNT(id) AS rows FROM `account` WHERE name = 'taro' ", $conn) or die("result取得エラー");  とすると、 string(20) "Array --line_a " ユーザ名:taro --line_b taro-abc--line_c Resource id #3--line_d となり、やはり、$result にResource id #3 が返ります。password を追加し、WHERE name = 'taro' AND password = 'abc' としても、Resource id #3--line_d と出ます。 ところが、18行の taro を $_SERVER [ 'PHP_AUTH_USER' ] に置き換え、 $result = mysql_query( "SELECT COUNT(id) AS rows FROM `account` WHERE name = $_SERVER [ 'PHP_AUTH_USER' ] AND password = 'abc'", $conn) or die("result 取得エラー") ; string(20) "Array --line_a " ユーザ名:taro --line_b result 取得エラー となって、$result に値が入りません。 $_SERVER [ 'PHP_AUTH_USER' ] を’’で囲んでも同じ。 何故でしょうか? どのようにすれば不具合の解決ができるでしょうか?

    • ベストアンサー
    • PHP
  • PHPのソケット通信について

    PHPにおいてのソケット通信についての質問です。マイページ機能をもたせたシステムの構築をしています。 マイページで認証を行い、そのユーザのユーザIDと乱数を一緒にデータベースに認証成功時に格納しています。 そして、マイページから別サーバへリンクしたときにPOSTしてこのユーザIDと乱数を送ります。 ユーザがマイページを経由して別サーバにアクセスしてきているかどうかということを確認するために、別サーバからこのマイページを運用するサーバに対してユーザIDと乱数をソケット通信によって送り、データベースに登録されているかどうかを別サーバ上のページを遷移するたびに確認したいのです。 データベースに登録されているユーザなら、マイぺージを経由してアクセスしてきているということでページを表示させて、登録されていないなら、マイページのログインページを表示させるようにしたいです。 Socket通信について調べてみたもののわかりにくいものが多くて、理解しかねますので、よろしくお願いします。 サンプルのコードをのせていただくと、なお嬉しいです。 開発環境は OS windows vista 言語 PHP5 サーバ Apache DBMS MYSQL です。 よろしくお願いします。

    • 締切済み
    • PHP
  • URLクリックによる認証について

    http://●●●/xxx.php?username=abcde というURLをクリックします。 ('abcde'はユーザがサイトにログインする時のIDです。) すると、xxx.php内で認証処理を行い、 IDが正しければ認証済の画面を表示させることは可能でしょうか。 (勿論パスワードはIDから取得できます) DBはMySQL、DB処理部分はPEARのAUTHを使っています。 GOOGLE検索等で調べたのですが、 載ってるのはフォーム上でのログイン認証についてでした。 以上、よろしくお願いいたします。

    • 締切済み
    • PHP
  • PHPでのID、パスワード認証

    学校の宿題でログインページからデータベースに入っているIDとパスワードでログインし、2枚目ページにたどり着くというコードを書いています。 ログオンページにはphpコードは一切なく、ログイン後のページにすべてphpを入れるというやり方です。 データベースに接続はしているのですが、ログインの認証ができず、正しいIDとパスワードをいれてもエラーメッセージ「IDとパスワードが正しくありません」が返ってきます。 コードは $u =$_POST['userid']; $p =$_POST['password']; $result = mysql_query("SELECT * FROM valid_logon"); while($row=mysql_fetch_array($result)) { $username = $row['userid']; $passcode = $row['password']; } if($username == $userid && $pass==$password) { header("Location: mybill.php"); } else if($passcode != $p ||$username != $u ) { echo("Please Enter Correct Username and Password ..."); exit; } としているのですが、何故すべてエラーになってしまうのか、もし宜しかったら教えてください!! どうぞ宜しくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう