我有這樣的登錄系統,當我的模型鏈接到我的控制器,該控制器不能得到模型中的變量是$用戶名,密碼$等 如何處理正確方式這個模型和控制器?我沒有使用任何框架只是純粹的PHP,只是遵循mvc模式。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;'行即可。 –
我加回來$ row;我仍然收到用戶名或密碼爲空,當我試圖把這一個回聲$ row ['username'];在函數queryUser()的末尾,即時獲取用戶輸入。 @AmanRawat –
不,你不能這樣做。您已將'$ this-> query'中的值分配給不在行中。所以你必須檢查'$ this-> query ['username']'insted to'$ row ['username']' –