sql >> データベース >  >> RDS >> Mysql

PHPスクリプトの未定義の変数エラー

    コードには多くの問題があります。エラーが発生する主な理由は、 $ usernameが原因です。 および$userstatus 事前定義も検証もされていません。
    しかし、私の意見では、これはコードの主な問題ではありません。

    質問したいことがいくつかあります:

    • 1つの行をフェッチする必要があるのに、なぜ2つのループを作成するのですか?
    • 答えがわかっているのに、なぜデータベースに2回クエリを実行するのですか?
    • $ usernameをエスケープしていますか および$password mysql_real_escape_string> 方法は?

    このコードは次のようになります。

    $query1 = "SELECT user_type,user_staus FROM `user_info` WHERE name='{$username}' AND password='{$password}' LIMIT 1";
    
    $fetched = mysql_query($query1);
    
    //check if record exists otherwise you would receive another notice that can 
    //break redirect functionality
    if (mysql_num_rows($fetched))
    {
        $record = mysql_fetch_assoc($fetched);
    
        // make sure that value is integer
        if ((int)$record["user_staus"])
        {
            exit("Please login after some time");
        }
        else
        {
            $url = (bool)$record["user_type"] ? 'admin_form.php' : 'user_form.php';
    
            header("Location: {$url}");
    
            exit(0);
        }
    
    }
    else
    {
        echo "please register to login";
    }
    

    更新
    nikc.org が提案したとおり 、第3レベルの ifを削除 ネストして3値比較に置き換え



    1. PDOを使用したデータベース内の行の一致に問題がある

    2. ClusterControl 1.5-自動バックアップ検証、バックアップとクラウド統合からスレーブを構築

    3. 自己満足は次のことにつながります:リスクが現実になる

    4. 既存のテーブルをプライマリファイルグループから別のファイルグループに移動する