現在IDとPWを入力した後にボタンを押し会員かどうかという判定を行っています。
$sql=mysql_query("SELECT * FROM ID_PW WHERE ID='".$_SESSION["id"]."' and PW = '".$_SESSION["pw"]."'");
上のようにSESSIONを使用してデータの照合を行っています。
$sqlを条件分岐の判定に使用したいのですが
if($sql){header('Location:kounyuu_2.php');}else{header('Location:kounyuu_error.php');}
SELECT命令で値(行数)をきちんと抽出できた場合に条件分岐します。という風にするにはどのように上の命令文を変えればよろしいでしょうか?
大変お手数をおかけしますが分かるかたおりましたらご回答よろしくお願いいたします。
mysql_num_rows関数で結果の行数を取得できます。
あえて一行で書くなら、
<?php <略> if(mysql_num_rows($sql)){header('Location:kounyuu_2.php');}else{header('Location:kounyuu_error.php');} <略> ?>
こちらでいかがでしょうか?
$result=mysql_query("SELECT * FROM ID_PW WHERE ID='".$_SESSION["id"]."' and PW = '".$_SESSION["pw"]."'"); //エラーが発生していないか確認 if ($result) { //行を取得 $row = mysql_fetch_assoc($result); //行が取得できたか確認 if ($row){ //行が取得できた! } }
また、SQLインジェクション対策として、SQLにセットするパラメータは適宜
mysql_real_escape_string 等でサニタイズしてくださいね。
http://phpspot.net/php/man/php/function.mysql-real-escape-string...
それと、気になったのは、ログインの処理って、普通はリクエストのパラメータで判断するんじゃないんですか?
ログイン前に、ユーザIDのパスワードがセッション変数に入っちゃってるんでしょうか。
ご回答ありがとうございます。
回答とても勉強になりました。今回の処理ではログイン前にユーザーIDのパスワードがセッションの変数に入ります。
mysql_num_rows()で、取得できた行数をチェックすればよいと思います。
if(mysql_num_rows($sql) > 0){
header('Location:kounyuu_2.php');
}else{
header('Location:kounyuu_error.php');
}
ご回答ありがとうございます。
mysql_num_rows関数で結果の行数を取得できます。
あえて一行で書くなら、
<?php <略> if(mysql_num_rows($sql)){header('Location:kounyuu_2.php');}else{header('Location:kounyuu_error.php');} <略> ?>
ご回答ありがとうございます。
ご回答ありがとうございます。