人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPについて質問です。
現在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命令で値(行数)をきちんと抽出できた場合に条件分岐します。という風にするにはどのように上の命令文を変えればよろしいでしょうか?
大変お手数をおかけしますが分かるかたおりましたらご回答よろしくお願いいたします。


●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:PHP SELECT SQL データ ボタン
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● HALSPECIAL
●30ポイント

こちらでいかがでしょうか?

$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のパスワードがセッションの変数に入ります。


2 ● taramonera
●27ポイント

mysql_num_rows()で、取得できた行数をチェックすればよいと思います。


if(mysql_num_rows($sql) > 0){

header('Location:kounyuu_2.php');

}else{

header('Location:kounyuu_error.php');

}

◎質問者からの返答

ご回答ありがとうございます。


3 ● Snufkinski
●30ポイント ベストアンサー

mysql_num_rows関数で結果の行数を取得できます。

あえて一行で書くなら、

<?php
<略>
if(mysql_num_rows($sql)){header('Location:kounyuu_2.php');}else{header('Location:kounyuu_error.php');}
<略>
?>

結果における行の数を得る - PHPプロ!マニュアル

◎質問者からの返答

ご回答ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ