簡體   English   中英

MVC PHP將模型傳遞給控制器

[英]MVC php passing model to controller

我有這個登錄系統,當我將模型鏈接到控制器時,控制器無法獲取模型變量,例如$ 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();

您的代碼中有很多問題。

第一: empty($username)將始終返回false,因為您尚未在該函數中定義$ username。

第二:變量$row['username']在其他函數中,您無法訪問外部變量。

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 
      // do the validation and exception handling too
    }
}

控制器:

//require_once("../model/db.php"); No need to imprt this 
require_once("../model/loginModel.php");

class loginController{
    $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";
        }
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM