1

DBにアクセスすると、ユーザーファイルの配列を取得できます。私が見逃しているのは、その配列を使用してユーザーからの入力を検証する方法です。配列には、キャプチャして後のページで使用する必要がある別のデータも含まれていますか?

これは、配列を生成するコードと、私が作業しようとしていた foreach の一部です。私は正しい軌道に乗っていますか?

$sql = "SELECT * from users;";
$result = mysql_query($sql, $dbc); //run the query
if ($result)
{
    $html .= '<h2>Result Found </h2>'.PHP_EOL; 

    //Grab arrays from the result
    for($i = 0; $i < mysql_num_rows($result); $i++)
    {
        $array = mysql_fetch_array($result, MYSQL_ASSOC);
        print_r($array);
        foreach ('username' as $inputUsername){

        echo 'password';

    }

    }
}
else
{
    $html .= '<h2>Error: '.mysql_error().' </h2>';
}
4

3 に答える 3

0

できるだけ早く PDO または mysqli の使用に変更する必要があります (mysql は非推奨になります)。なお、ご利用いただける場合は、ご利用いただく必要はございませSELECT * from usersSELECT * from users WHERE username = $username;。レコードが多い場合の作業負荷を軽減します。

于 2013-10-06T16:14:20.620 に答える
0

アプリケーションでこのコードを作成しました。これが役立つことを願っています。

    <?php
    $username = preg_replace('/[^a-zA-Z0-9]/','',$_POST['username']);
    $password = base64_encode($_POST['password']);

    $mysqli = 新しい mysqli($dbc); // データベース接続の設定

    $sql = $mysqli->query("SELECT * from users where `username` = '$username'");
    $num = $sql->num_rows;
    もし ($num) {
        // ユーザーが見つかりました
        $row = $sql->fetch_assoc();
        if($password != $row['password']) {
            echo "パスワードが違います";
        }
        そうしないと {
            // 配列内のユーザー データ
            print_r($行);
        }
    }
    そうしないと {
        echo "ユーザーが見つかりません";
    }
    $mysqli->close();
    ?>

preg_replace('/[^a-zA-Z0-9]/','',$_POST['username'])→不要な入力を防ぐため

base64_encode($_POST['password']);この入力には常に暗号化を使用します。

于 2013-10-06T16:25:35.930 に答える