【发布时间】:2017-01-21 05:51:12
【问题描述】:
我有这个登录系统,当我将模型链接到我的控制器时,控制器无法获取模型的变量 $username、$password 等。 如何正确处理此模型和控制器?我没有使用任何框架,只是纯 php,只是遵循 mvc 模式。
当我运行代码时,它会转到无效的用户名或密码
型号
require_once("db.php");
class loginModel{
public function __construct(){
$dbCon = new DbConnector();
$this->dbCon = $dbCon->getConnection();
}
public function queryUser($username, $password){ // use parameters
$username = mysqli_real_escape_string($this->dbCon, $username);
$password = mysqli_real_escape_string($this->dbCon, sha1($password));
$empty = "da39a3ee5e6b4b0d3255bfef95601890afd80709";
$myQuery = "SELECT * FROM login WHERE username = '".$username."' and password = '".$password."'";
$results = $this->dbCon->query($myQuery);
return $results->fetch_array(); // return the result
if(empty($username) or $password == $empty){
return "Username or Password is empty";
}elseif($username == $row['username'] and $password == $row['password']){
if($results->num_rows == 1){
session_start();
$_SESSION['user'] = $username;
header('Location: ../view/index.php');
}else{
return "Login Unsuccessful";
}
}else{
return "Invalid Username or Password";
}
}
}
控制器
require_once("../model/loginModel.php");
class loginController{
public $loginModel;
public function __construct(){
$loginModel = new loginModel(); // create object of model
}
public function select(){
$userData = $this->loginModel->queryUser($_POST['username'], $_POST['password']);
if($userData) {
session_start();
$_SESSION['user'] = $userData;
header('Location: ../view/index.php');
} else {
return "Invalid Username or Password";
}
}
}
$loginController = new loginController();
$loginController->select();
【问题讨论】:
-
您还没有从函数 queryUser() 返回值。只需在函数
queryUser()的末尾返回这样的行return $row;。 -
我添加了 return $row;当我尝试输入这个 echo $row['username']; 时,我仍然收到用户名或密码为空。在函数 queryUser() 结束时,我正在获取用户输入。 @AmanRawat
-
不,你不能那样做。您已在
$this->query中分配值,而不是在行中。所以你必须检查$this->query['username']insted 到$row['username'] -
我认为第一个问题是 $username 和 $password,因为这个 if(empty($username) or $password == $empty){ } 这个总是返回 false @AmanRawat