• ベストアンサー

ログイン 作成

私はPHP初心者なのですが 現在PHP5+MySQLにて勉強をしています。 今回、ログインのページを作ろうと思ったのですが 私の買って来た本には、smartyを使ったログイン画面のサンプルしかなく ここで、検索し流用もしてみましたが うまく動作しませんでした・・・・ 誰か簡単なログイン認証のサンプルを作って 頂けないでしょうか セッション等は、後から勉強して付け加えていきたいと思ってますので どうか、よろしくお願いします。

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

  • ベストアンサー
noname#24096
noname#24096
回答No.5

エラーの場合は、私に限らず、そのエラーメッセージを書いたほうが回答が得やすいと思います:) 恐らくですが >print("OK") の末尾に「;」がないからでは?

cimajr
質問者

お礼

あ・・・ ありがとうございます。 「;」と「}」が抜けてました・・・・orz やはりソースをちゃんと見直さないといけないですね・・・

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

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

セッションを絡めたログインは必ずしも使い勝手 がよいとは思いません。 mod_auth_mysqlなどは興味ないでしょうか?

参考URL:
http://search.yahoo.co.jp/search?p=mod_auth_mysql+apache
cimajr
質問者

お礼

アドバイスありがとうございます。 参考URLを見させて頂きましたが 私には、まだまだ・・・(汗 お気に入りに追加させて頂き 今後の参考にさせていただきます ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
noname#24096
noname#24096
回答No.3

#1です。 すいません。ちょっと訂正します。 mysql_query()はクエリを実行するだけで、成功したらリソースが返るだけです。 IDの認証という意味では mysql_num_rows() でselectの件数を取得し、チェックしたほうがいいですね(汗

参考URL:
http://jp2.php.net/manual/ja/function.mysql-num-rows.php
cimajr
質問者

補足

回答ありがとうございます。 返信したはずが、返信出来ていないみたいですね・・・・(汗 現在、回答と参考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 と正常に返ってくるので 結果の表示のさせ方が問題なのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
noname#24096
noname#24096
回答No.2

#1です。 提示していただいたソースを拝見しました。 セキュリティ的にはともかく、見る限り、動作は問題ないように思いますが動きませんか? まぁシステム的に言うと、他に気になるのは多重ログインをどうするかとか。。。 (すでにログインしているのに、同じIDでログインされたらエラーなのか/正常なのか。エラーの場合はセッション情報と絡めて…とか) PHPのセキュリティの問題に関してはこちらをどうぞ。 http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html

全文を見る
すると、全ての回答が全文表示されます。
noname#24096
noname#24096
回答No.1

簡単なログインというなら、そんなに複雑に考えることはなくて  (1).idとpass入力画面(単なるHTML)  (2).(1)の内容を受け取ってDBなり、テキストファイルの内容とマッチング だけでいいんじゃないですか? ネットで検索すればいっぱいでてくると思いますが、まぁ一応さんぷるらしきものを。。。 動くかどうかは検証してませんのであしからず:) http://ns1.php.gr.jp/pipermail/php-users/2004-July/023371.html

cimajr
質問者

補足

早速の回答ありがとうございます。 私は、後々にやりたい事から考え 一応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") ?>

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ログイン管理について

    こんばんは。  phpを始めたばかりで分からないことがあり、細かく教えて くださる方がいましたらお願いします。  いまphpで会員制のサイトを作成しようと思っています。 分かりやすく言いますと「Yahoo!」さんのようなサイトを です。  そこで登録や修正・削除のページを作成しました。 次にユーザーIDとパスワードを入力してもらい、それによる 認証を実行し結果を出すページも作成しました。 ログイン情報の保持はセッションを利用しています。 そこまで作成し行き詰まりました。 参考にしたページは:http://php.dori-mu.net/session.htmlで このページに記されている「definition.php」ファイルに ログイン情報を格納しようと思いました。 問題となっているのは下記のとおりです。 ●まずユーザの想定するフローは  1.ログインページ(001.php)  2.認証および結果ページ(002.php)  3.会員制ページ(003.php~009.php)  4.ログアウトページ(010.php) でしたが ●想定外のフローは  1.ログインページ(001.php)  2.認証および結果ページ(002.php)  3.会員制ページ(003.php~009.php)   ※この会員制のサイトのログイン中に他のページ    (google等)に遷移する。  4.googleにて色々な操作し「戻る」の操作を行わないで   再度3.の会員制のサイトに遷移  5.会員制ページ(003.php~009.php) ●上記の想定外のフローを行うと、セッション情報が  空となってしまいます。  「戻る」による操作で会員制に戻ると、セッション情報は  保たれています。  「Yahoo!」さんのサイトでは「Yahoo!」にログイン中に 他のサイトに遷移し「戻る」の操作を行わないで「Yahoo!」に 戻ってもログイン情報を保たれています。  ネットで検索を行ったところ、「Yahoo!」さんでは セッションの他にCookieを利用していると拝見しました。 この二つを両立させるには、どのようにしたら 良いのでしょうか? また、もし「Yahoo!」さんが、この方法で無い場合は どうような方法なのでしょうか?  サンプルや参考になるページがありましたら よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpで操作中ログイン時間を延長させたい

    現在、会員ページを制作中なのですが、 SESSIONによるログイン認証で ログイン時にページ操作中にセッションが切れる事が度々あるため 操作中にログイン時間を延長したいと考えております。 php・mysqlで制作中なのですが、具体的な方法が 分からずに困っております。 どなたかご教授の程、よろしくお願いいたします。

    • 締切済み
    • PHP
  • セッションについて

    php初心者&ど素人です 勉強のためにphpとmysqlで簡単なログイン機能を作ってみようと思いました しかし、Locationでページ移動したときのセッションがセキュリティ的に安全なのかわかりません ログインフォームのlogin.phpから自分自身に送信、ログインできたらセッションを付けてから header("Location:hoge.php");でhoge.phpに飛ばしています ログインした後のhoge.phpページではログイン確認をセッションidがあるかだけ確認しています セッションidがなかったらログインページ戻す if(!$_SESSION['id']){ header('Location: login.php'); exit(); } 質問1 セッションidは表示されている誰でも見れるidなのでセキュリティ的にまずいですか? 簡単にセッションのっとれるもんなんでしょうか? 質問2 一般的にはどうやているのでしょうか? ログインページ全て(例えば編集画面とか会員情報とか)にmysqlから暗号化されたパスワードを取得して、それをセクションに入れて、また、mysqlからパスワードと照合したりしてるんでしょうか? よろしくお願いします

    • ベストアンサー
    • PHP
  • phpとmysqlでログインページの作成

    phpとmysqlを使いMAMPでログインページの作成をしようと考えています。 idやpasswordなどはもうsqlに格納されている状態を想定しています。 そこで手順を知りたいのですがこれであっているでしょうか? dbに接続してidやpasswordなどをdbから引っ張ってきて取得する。 if文でsql上のidなどとログインページに入力した情報があっているかで条件わけをする。 合っていなければエラーメッセージを返す。合っていれば次のメイン画面に飛ばす。 初歩的な質問で恥ずかしいのですがdbの情報を取得するときは「mysql_fetch_assoc」関数でいいのでしょうか。 また、ログインページのサンプルを調べているとCookie版とSession版がありますがこの違いはCookieが一定時間情報を保持するのに対してSessionはブラウザなどを閉じるとリセットという解釈で間違いないでしょうか。 文がぐちゃぐちゃで申し訳ないのですが、お暇な時にでも回答お願い致します。

    • 締切済み
    • PHP
  • セッションをログインについて

    はじめまして。 今、セッションを使ったログインのページを作っています。 流れは、 1.ログインページでIDとパスワードを入力。 2.入力したID・パスワードがあらかじめMysqlに保存してあったのと一致していたら会員ページに移動。 3.セッションにID・パスワードを保存してブラウザを閉じない限り、次回はログイン無しで会員ページに直接いけるようにする。セッションに保存されてないときはログインページにもどす。 以上の流れにそってプログラムを作りました しかし1・2は上手くいったのですが3の部分がうまくいきません。セッションにIDとパスワードを保存することができてるようなのですが、ブラウザを閉じずに、いったん別にページに行き、もう一度会員ページにもどろうとすると、ログインページ戻されてしまい、もう一度ログインしなければいけません。 以下に今回のプログラムを書きました。このプログラムのどこを直せば、いいのかお分かりになる方いらっしゃいましたらアドバイスのほうよろしくお願いします。 使用環境は PHP 5.2.5(xampp使用) MySQL 5.0.51a register_globals = Onになっています。 /*ログインページは省略しました。パスワードとユーザーIDを入力してこのページに飛びます。*/ <?php function redirect($url) { header("Location: ".$url); exit; } session_start(); /*保存していたセッションが存在するか確認なければログインのページにもどす。$_SESSION['username']) の部分を$_POST…にしたのですがそれでも結果は同じでした。*/ if(empty($_SESSION['username']) || empty($_SESSION['password'])) redirect("loginpage.php"); $user = $_POST['username']; $pass = md5($_POST['password']); /*Mysqlへ接続。セッションの問題が解決したらMysql用のクラスを作る予定です。*/ $dbHost = "localhost"; $dbUser = "*****"; $dbPass = "******"; $dbDatabase = "mysql"; $db = mysql_connect("$dbHost", "$dbUser", "$dbPass") or die ("Error connecting to database."); mysql_select_db("$dbDatabase", $db) or die ("Couldn't select the database."); $result=mysql_query("select * from users where username='$user' AND password='$pass'", $db); $rowCheck = mysql_num_rows($result); /*ID・パスワードが間違ってたら、ログインページに戻す。*/ if(empty($rowCheck)) redirect("loginpage.php"); $row = mysql_fetch_array($result); /*IDとパスワードをセッションに保存*/ $_SESSION['username'] = $user; $_SESSION['password'] = $pass; if($rowCheck > 0) { while($row = mysql_fetch_array($result)) { } /*ログイン成功したら会員ページを表示。*/ echo "Login Succeeded!".$_SESSION['username'];/*←セッションに保存されてるかのテスト。ちゃんと表示されました*/ include("C:/xampp/htdocs/cvptoylibrary.com.au/assets/includes/link1.php"); include("C:/xampp/htdocs/cvptoylibrary.com.au/assets/includes/link3.php"); } else { /*ID・パスワードを間違えてたらログインページに戻す。*/ echo 'Incorrect login name or password. Please try again.'; redirect("loginPage.php" ); } ?>

    • ベストアンサー
    • PHP
  • JavaでMySQLを利用したログイン画面

    フォームにユーザ名とパスワードを入力させ、MySQLのデータベース内にそのユーザ名とパスワードがあればログインを認証するJavaサーブレットを作りたいと考えています 以前、PHPでならセッションを利用して同じものを作ったことがあるのですがJavaの場合はどのようにMySQLからデータを持ってきたりログイン状態を管理すればいいのかよく分かりません 色々なサイトを見たりしましたがレルム?を使っているサイトもあればそうでもないサイトがあって混乱しています このサイトが特に分かりやすい!やこのサンプルソースが分かりやすい!などありましたら教えてください よろしくお願いします

  • ログイン認証で

    ログイン認証で <? session_start(); $con=mysql_connect(localhost,***,***); mysql_select_db("***"); $passwd=addslashes($_POST['passwd']); $email=addslashes($_POST['email']); $name=addslashes($_POST['name']); $sql="select * from users where email='{$_POST['email']}' and passwd='{$_POST['passwd']}'"; $_session['name']=$name; $rs=mysql_query($sql); if(mysql_num_rows($rs)>0){ $_session['login']=1; header('location:'. "top.php"); exit; } mysql_close($con); ?> <html> <head> <title> </title> </head> 認証失敗 <br> <a href="login.php"> 戻る</a> <body> と入力したのですが、 emailとpasswdに合ったnameを違うページに表示したいのに、それができないんです・・・ ようこそ<? $_SESSION['name']?> さん<br> どこかおかしなところありますか?

    • ベストアンサー
    • PHP
  • PHPでcookieのみを使ったログインページ

    学校で「PHPでタイムカードを作成せよ」という課題がでました。 そこで、まずログインページを作ろうと思い、 検索をかけてサンプルプログラムを見たり、 分からない命令を調べてみたりしているのですが プログラミングが大の苦手でありまして・・ 残念なぐらいにわかりません。 実際に http://ml.php.gr.jp/pipermail/php-users/2004-July/023371.html にあったプログラムを動かしてみても、 ログインフォームの次のページ(認証ページ)で 「idが未入力です」と表示されてしまいます。 (idとpwは何度も確認して入力しています) どなたか簡単なログインページのサンプルを作っていただけないでしょうか 出来ればセキュリティー面などは考慮せずに、 クッキーのみを使った簡易なものをお願いしたいです。 それを拝見して勉強したいと思います・・ よろしくお願いします。

    • 締切済み
    • PHP
  • ログインできない

    こんばんは。いつもお世話になっております。 些か抽象的な質問になってしまいますが、以下のような状況に困っております。 1.ページを移動したりすると、時に勝手に’ログアウトしてしまう事がある’。 2.ログイン状態で、他のサイト(違うサーバ)からリンクを辿って訪問すると、’ログアウトしてしまう事がある’。 以上のような感じなのですが、勝手にログアウトした時は、なかなかログイン出来ず、またログイン出来ても、ページ移動の際、直ぐにログアウトしてしまうといった状況です。 尚、ログインする際は、DB(MySQL)に問い合わせ、ログイン状態を保つため、登録データのidなどを、$_SESSION["id"]=$id; としてセッションに代入しており、ページ移動の際(ログインのみ閲覧可能なときは)、auth.php(ログイン画面、DB問い合わせページ)に移動するよう、 <?php session_start(); require_once("./auth.php"); としたり、 if($_SESSION["id"]==""){ header("Location: http://○○○.com/"); } のようにしています。 些か抽象的で、かつお恥ずかしい質問かと重々承知しているつもりですが、レンタルサーバを借り、実際にアップロードしたところ、開発環境では問題なかった状況で、非常に困っております。 DBの設計が可笑しいのか?PHPのソースが可笑しいのか?色々考えられる点はあるかと思いますが、何処を見直せばいいのか分からず、考えられる点などご意見を伺えれば幸いに思っております。 お忙しい中恐縮ですが、ご指導のほど宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • セッションを使ったログインページでのエラー

    前にもセッションを使ったログインページについて質問したものです。 上記の通りセッションを使ったログインページを作っております。 前回このソースを載せたときセキュリティー的にとても危険だというご意見をいただきました。何分まだ初心者ですのでどうかご了承ください。 ソース /*ログインのページは省略しました。ログイン後ID・パスワードが正しいか、そして訪問者がログインせずにこのページに直接アクセスした際にログインページにジャンプするようにするようにするプログラムです*/ <?PHP if (!isset($user) || !isset($pass)) { header( "Location: loginPage.php" ); } elseif (empty($user) || empty($pass)) { header( "Location: loginPage.php" ); } else { $user = addslashes($_POST['username']); $pass = md5($_POST['password']); $dbHost = "localhost"; $dbUser = "*****"; $dbPass = "*****"; $dbDatabase = "mysql"; $db = mysql_connect("$dbHost", "$dbUser", "$dbPass") or die ("Error connecting to database."); mysql_select_db("$dbDatabase", $db) or die ("Couldn't select the database."); $result=mysql_query("select * from users where username='$user' AND password='$pass'", $db); $rowCheck = mysql_num_rows($result); if($rowCheck > 0){ while($row = mysql_fetch_array($result)){ session_start(); session_register('username'); echo 'Success!'; header( "Location: checkLogin.php" ); } } else { echo 'Incorrect login name or password. Please try again.'; } } ?> このようなプログラムを作ったのですが、ちゃんとパスワードをいれても、ちゃんと認証されずに、ログインのページ戻されてしまいます。 おそらく if (!isset($user) || !isset($pass)) { header( "Location: loginPage.php" ); } elseif (empty($user) || empty($pass)) { header( "Location: loginPage.php" ); } の部分がおかしいのかと思いますがどう変えたら良いのかよく分かりません。また、おかしいと思った部分を削除したら普通にログインはできるのですが、今度は一度ログインしても他のページに移動した後もう一度このページに行くと、もう一度ログインしないとアクセスできなくなりました。 まとめると、お聞きしたいことは、2つです。 (1)紹介したのプログラムでログインしてもちゃんとログインが認証されない。これを解消するにはどうすればいいのか? (2)ユーザーがログインした後もう一度このページにアクセスした場合もう一度ログインさせなくてもいいようにすればどうすればよいのか。 もし可能でしたら、解決するためのプログラムを(さらに可能でしたら紹介したプログラムを生かした形で)添えてアドバイスしていただけないでしょうか?よろしくお願いいたします。

    • ベストアンサー
    • PHP
このQ&Aのポイント
  • 1型糖尿病の血糖値を下げる方法について教えてください。
  • 1型糖尿病患者が体重を増やす方法についてお知りになりたいです。
  • 1型糖尿病の管理において、血糖値のコントロールと体重管理が重要です。
回答を見る