好的,我有一个问题。我试图通过检查用户输入的电子邮件地址(用户名)和密码来验证用户的合法性。用户表具有以下列:
# 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 子句,但确实如此。有人可以帮我指出我的代码中的 FLAW 还是给我一个更好的检查方法。
以防万一您需要“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();
}
?>