ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

PHPプログラミングについて語るコミュのPHPでユーザー認証・・・・

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして、コミュニティーに参加させていただきました。
PHPを最近はじめていまユーザー認証のフォームを作っていますが、つまずいてしまって・・・・
もしよろしければアドバイスをいただけませんでしょうか?

開発環境
OS Windows2000
サーバー アパッチ
データベースサーバー MySQL4
PHP5

コードを貼ります。
login.html

<html>
<head>
<title>ユーザー認証</title>
</head>
<body>
<form name="form1" method="post"action="login2.php">
名前:
<input type="text" name="userid">
<br>
パスワード:
<input type="password" name="passwd">
<br>
<input type="submit" value="Enter" style="font-size:25pt">
</body>
</html>

login2.php

<?php
$user_id=$_POST['userid'];
$passwd=$_POST['passwd'];
$host="localhost";
if($conn = mysql_connect("localhost","root","")){
die("MySQL接続エラー<br/>");
}
mysql_select_db("testuser_db",$conn);
$sql="SELECT * FROM userist_tb WHERE username='$user_id'and password='$passwd'";
$res = mysql_query($sql,$conn);
if($res){
print("ようこそ");
}

SQLを実行する文

$sql="SELECT * FROM userist_tb WHERE username='$user_id'and password='$passwd'";

ですが

$sql="SELECT * FROM テーブル名 WHERE フィールド名='user_id'and フィールド名='$passwd'";
でいいのでしょうか?

よろしければアドバイスおねがいします。
エラーはでませんが”MySQL接続エラー”と出てしまいます;;
不明な点がございましたらすみません;;



コメント(10)

連続書き込みすみません
いま少しコードを変えてつくってみました。

<?php
$user_id=$_POST['userid'];
$passwd=$_POST['passwd'];
$host="localhost";
$con = mysql_connect("localhost","root","")
or die("MySQL接続エラー<br/>");
mysql_select_db("testuser_db",$con);
$sql="SELECT * FROM userist_tb WHERE username='$user_id'and password='$passwd'";
$res = mysql_query($sql,$con);
if($res){
print("ようこそ");
}
mysql_close($con);
?>

”ようこそ”とはでるんですが、パスワードもユーザーIDも入れずにEnterを押しただけで、ページに飛んでしまいます;;
なにがいけないのでしょう;;
たとえば途中から以下のように変更してみては。

$sql ="SELECT * FROM userist_tb WHERE ○○。。。";
$res = mysql_query($sql,$con);
$dat = mysql_fetch_assoc($res); //※1
mysql_close($con);

if($dat){ print("ようこそ"); }
else { print("入力ミス"); }
exit;

※1は
$dat = mysql_num_rows($res);
とかでもOK。それっぽいの使ってください。

そんな感じでいけると思いますよ。
追記ですが、
インジェクション対策はやっといたほうがいいと思います。

$user_id=$_POST['userid'];
$passwd=$_POST['passwd'];

SELECT * FROM userist_tb WHERE username='$user_id'and password='$passwd'

上記のように
POSTやGETで受け取った文字をそのままMySQLのクエリに突っ込むのは危険なので。

既知でしたらスルーしてください。

http://www.thinkit.co.jp/free/books/2/3/1/1.html
$res = mysql_query($sql,$con);

ではヒット0件でもTrueになってしまうと思います。

$res = mysql_query($sql,$con);
$num = mysql_num_rows($res);

のように $num 件ヒットしたか(通常1件ですが)を調べないと、すべて認証されてしまいます。
いろいろアドバイスありがとうございます。
なんとかログイン画面が完成しました。
じつは研究で遠隔問診システムを作ることになりまして、前までJSPを勉強してたんですが、挫折してPHPに逃げてきました。
ほんとにすばらしい言語ですね。

ちなみに なんとかできたコードを公開させていただきます。

<html>
<head>
<title>BMI</title>
</head>
<body>
<?php
//login.htmlの入力を格納
$user_id=$_POST['userid'];
$passwd=$_POST['passwd'];
//データベース接続
$host="localhost";
$con = mysql_connect("localhost","root","")
or die("MySQL接続エラー<br/>只今サーバーが落ちています。申し訳ございませんがもうしばらくたってから再ログインしてください。");
//SQL文
mysql_select_db("testuser_db",$con);
$sql="SELECT * FROM userist_tb WHERE username='$user_id'and password='$passwd'";

$res = mysql_query($sql,$con);
//if文
if (mysql_num_rows($res) == 1) {
//メニュー画面
print"<center>";
print"$user_id";
print"さん";
print"のメニュー画面です。";
print"<br>";
print"<br>";
print"BMI計算";
print"</center>";
?>
<center>
<form name="form2" method="POST" action="">

<input type="button" name="botanbmi" value="BMI計測" style="font-size:18pt" onClick="location.href='http://localhost/test/bmi1.php'">
<br>
<br>
<input type="button" name="botan" value="BBS" style="font-size:18pt" onClick="location.href='http://localhost/test/form1.php'">
</center>
<?php
}else{
//IDとパスワードが違っていたときの処理
print"IDもしくはパスワードがちがいます。";
print"<br>";
print"もう一度IDとパスワードを入れなおしてください";
}

mysql_close($con);
?>
</body>
</html>

もし何かおかしいとこ、もしくはアドバイスなどいただけたらお願いします。

そして新たな質問です。聞いてばっかでもうしわけないです;;
ログイン画面で使ったユーザーIDを他のページにも、表示できないでしょうか?
例えば、1ページ目のログイン画面でユーザーIDとパスワードが合っていれば2ページ目のメニュー画面に移動します。その2ページから3ページ目に移動して、3ページ目に1ページ目で使用したユーザーIDを画面上に表示したいのですが・・・
説明下手ですみません;;
ユーザIDを継続的に表示させるには、
?セッション
?クッキー
?常にIDを持ちまわす。

のどれか、かなあ。
>>inter
なるほど〜〜、ググッて調べてみます。

>>J-LOCK
マルチバイト!!自分的新ワードです!早速調べてみます!!!

アドバイスありがとうございます!!!
PHPってほんと面白い言語ですね。かなり気に入りましたw
プログラムのセンスがない僕にはなかなか難しいですが^^;

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

PHPプログラミングについて語る 更新情報

PHPプログラミングについて語るのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。