問題があります。入力したメールアドレス(ユーザー名)とパスワードをチェックして、ユーザーの正当性を検証しようとしています。users テーブルには次の列があります。
# Name Type Collation
1 User_ID int(10)UNSIGNED
3 Phone bigint(10)
4 Street_Address varchar(30) latin1_swedish_ci
5 Apartment int(5)
6 City varchar(35) latin1_swedish_ci
7 State varchar(35) latin1_swedish_ci
8 Zip_Code int(5)
10 Login_Password char(32) latin1_swedish_ci
11 UserType varchar(5) latin1_swedish_ci
電子メールとパスワードの入力を検証し、それらが制約を満たした後。ブール変数「$insert」を true に設定しました。次に、次の PHP コードがあります。
$check= "SELECT Name FROM users WHERE Email='$emailLogin' AND Login_Password='$passwordLogin'";
if(($result= ($db->query($check))) != false) // <--- PROBLEM HERE
{
$resultArray = $result->fetch();
$name= $resultArray['Name'];
$checkID= "SELECT User_ID FROM users WHERE Name= '$name'";
$idResult= $db->query($checkID);
if(count($idResult) >0)
{
$idArray= $idResult->fetch();
$id= $idArray['User_ID'];
echo "userID is = ". $id;
$_SESSION['user']= $name;
$_SESSION['login']= true;
$_SESSION['userID']= $id;
//header('location:../view/userHome.php');
}
else
{
include("../view/error.php?message=19");
exit();
}
}
else
{
header("location: ../controller/login.php");
}
}//end function
簡単に言えば、「if($result= ($db->query($check))) != false」で、問題が発生した場合に上記のコードに含まれています。一致する電子メール アドレスとパスワードが見つからない場合は、if 句を入力しないでください。誰かが私のコードの欠陥を指摘するか、より良いチェック方法を教えてくれますか?
「database.php」ファイルが必要な場合に備えて、次のファイルがあります。
<?php
$dsn = 'mysql:host=localhost;dbname=store';
$username = 'alex';
$password = 'asdf1234';
try {
$db = new PDO($dsn, $username, $password);
} catch (PDOException $e) {
$error_message = $e->getMessage();
include('database_error.php');
exit();
}
?>