- ベストアンサー
ログイン 作成
私はPHP初心者なのですが 現在PHP5+MySQLにて勉強をしています。 今回、ログインのページを作ろうと思ったのですが 私の買って来た本には、smartyを使ったログイン画面のサンプルしかなく ここで、検索し流用もしてみましたが うまく動作しませんでした・・・・ 誰か簡単なログイン認証のサンプルを作って 頂けないでしょうか セッション等は、後から勉強して付け加えていきたいと思ってますので どうか、よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
エラーの場合は、私に限らず、そのエラーメッセージを書いたほうが回答が得やすいと思います:) 恐らくですが >print("OK") の末尾に「;」がないからでは?
その他の回答 (4)
- yambejp
- ベストアンサー率51% (3827/7415)
セッションを絡めたログインは必ずしも使い勝手 がよいとは思いません。 mod_auth_mysqlなどは興味ないでしょうか?
お礼
アドバイスありがとうございます。 参考URLを見させて頂きましたが 私には、まだまだ・・・(汗 お気に入りに追加させて頂き 今後の参考にさせていただきます ありがとうございました。
#1です。 すいません。ちょっと訂正します。 mysql_query()はクエリを実行するだけで、成功したらリソースが返るだけです。 IDの認証という意味では mysql_num_rows() でselectの件数を取得し、チェックしたほうがいいですね(汗
補足
回答ありがとうございます。 返信したはずが、返信出来ていないみたいですね・・・・(汗 現在、回答と参考URLを参考にさせて頂き $sql = "SELECT * FROM user_table WHERE user_id ='$user_id'and pass_word = '$passwd'"; $res = mysql_query($sql,$conn); $num_rows = mysql_num_rows($res); if($num_rows){ print("OK") に変えてみたのですが、エラー表示が出ます $sql = "SELECT * FROM user_table WHERE user_id ='$user_id'and pass_word = '$passwd'"; $res = mysql_query($sql,$conn); $num_rows = mysql_num_rows($res); echo "$num_rows Rows\n"; ですと 1rows と正常に返ってくるので 結果の表示のさせ方が問題なのでしょうか?
#1です。 提示していただいたソースを拝見しました。 セキュリティ的にはともかく、見る限り、動作は問題ないように思いますが動きませんか? まぁシステム的に言うと、他に気になるのは多重ログインをどうするかとか。。。 (すでにログインしているのに、同じIDでログインされたらエラーなのか/正常なのか。エラーの場合はセッション情報と絡めて…とか) PHPのセキュリティの問題に関してはこちらをどうぞ。 http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html
簡単なログインというなら、そんなに複雑に考えることはなくて (1).idとpass入力画面(単なるHTML) (2).(1)の内容を受け取ってDBなり、テキストファイルの内容とマッチング だけでいいんじゃないですか? ネットで検索すればいっぱいでてくると思いますが、まぁ一応さんぷるらしきものを。。。 動くかどうかは検証してませんのであしからず:) http://ns1.php.gr.jp/pipermail/php-users/2004-July/023371.html
補足
早速の回答ありがとうございます。 私は、後々にやりたい事から考え 一応DBとの連動で考えています。 なんせ、まだまだ解らない事が多く 現在↓まで書いてみたのですが、「・・・で?・・・あれ?」 パニクってしまってます。 とりあえずは、こんな感じで詰めていけばいいのでしょうか? 見当違いの事をしてたら すいません。 <?php $user_id=$_POST['user_id']; $passwd=$_POST['passwd']; $host = "localhost"; if (!$conn = mysql_connect($host, "ユーザ名", "パスワード")){ die("MySQL接続エラー.<br />"); } mysql_select_db("データベース名", $conn); $sql = "SELECT * FROM user_table WHERE user_id ='$user_id'and pass_word = '$passwd'"; $res = mysql_query($sql,$conn); if($res){ print("OK") ?>
お礼
あ・・・ ありがとうございます。 「;」と「}」が抜けてました・・・・orz やはりソースをちゃんと見直さないといけないですね・・・