あなたは多くのことを間違ってやっています。認証のために、データベースに顧客によって送信されたユーザーがいるかどうかを確認する必要があります。そのためには、次のようなものを使用する必要があります。
$validationsql = mysql_query("SELECT Validation FROM users WHERE Username = '".$username."' AND Password = '".$password."'"); //Retrives data from database
$usersfound = mysql_num_rows($validationsql) or die('error'); //counts how many records have been retrieved
/*
*If number of data is not 1 (assuming you have unique users) validation fails
*/
if ($usersfound !== 1)
{
echo "<h1>Validation Error</h1>";
die;
}
ただし、プリペアドステートメントを使用しない場合は、セキュリティのためにデータをエスケープする必要があります(SQLインジェクション)。これを行うには、を使用できますmysql_real_escape_string
。この後、コードは次のようになります。
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
$validationsql = mysql_query("SELECT Validation FROM users WHERE Username = '".$username."' AND Password = '".$password."'"); //Retrives data from database
$usersfound = mysql_num_rows($validationsql) or die('error'); //counts how many records have been retrieved
/*
*If number of data is not 1 (assuming you have unique users) validation fails
*/
if ($usersfound !== 1)
{
echo "<h1>Validation Error</h1>";
die;
}
そして、それでもあなたがすべてを正しくやっているという意味ではありません。mysql_*
関数は非推奨になりました。PDO
またはmysqli_*
関数のいずれかを使用する必要があります。また、プリペアドステートメントを積極的に使用する必要があります。