0

メンバーがページにアクセスしたときに検証されるかどうかをチェックするphpsciptを作成しようとしています。そうでない場合は、エラーメッセージと指示とともにログインするように再設定されます。したがって、このページには次のコードがあります。

<?php
    if (loggedin()) {
        $check_active = "SELECT active FROM members WHERE username == '$username'";
        $active = mysql_query($check_active);
        if ($active < 1) {
            header("Location: login.php?verify=true");
        } else {
            exit();
        }
    }
?>

ユーザーをログインページにリダイレクトしますが、アクティブかどうかに関係なくリダイレ​​クトします。アクティブメンバーの値は0(未確認)と1(確認済み)です。私が使用しているスクリプトに何か問題がありますか?

ありがとうございました

4

3 に答える 3

3

$active結果を処理し、それを PHP 変数/配列に入れる必要があります。$activeコードにあるように、単なるリソースですここを参照)これを試してください:

$active = mysql_query($check_active); // run query and return resource

$row = mysql_fetch_assoc($active);  // put resource data into php array   

if ($row['active'] < 1) {
    header("Location: login.php?verify=true");
} else {
    exit();
}
于 2013-03-15T20:44:07.297 に答える
0

http://php.net/manual/en/function.mysql-query.phpの古いトピックを使用したりmysql、使用したり、読んだりしないでください。mysqli_

代わりに、MySQLi または PDO_MySQL 拡張機能を使用する必要があります。詳細については、MySQL: API ガイドの選択および関連する FAQ も参照してください。

于 2013-03-15T20:44:36.837 に答える
0

クエリの後にデータを正しくフェッチしていません。

mysql_query 関数を実行した直後。これを試して:

$output = mysql_fetch_assoc($active);
$active_result = $ouput['active'];

それがうまくいくかどうかわからない。

そして、そこに SQL インジェクションのセキュリティをもう少し追加します。また、SQL インジェクションを自分で防止することに熱心ではないため、代わりに MySQLi を使用してください。

于 2013-03-15T20:45:10.030 に答える