Ich habe dieses Login-System, wenn ich das Modell mit meinem Controller verknüpfen, kann der Controller nicht die Variablen des Modells, das ist $ username, $ Passwort usw. Wie zur richtigen Handhabung Dieses Modell und Controller? Ich benutze kein Framework nur reines PHP und nur nach dem MVC-Muster.MVC PHP Modell an Controller übergeben
Wenn ich führen Sie den Code, um es zu Benutzername oder Passwort ungültig
Modell
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";
}
}
}
Controller
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();
Sie haben nicht den Wert aus der Funktion queryUser() zurückgegeben wird. Geben Sie einfach die Zeile wie diese 'return $ row;' am Ende Ihrer Funktion 'queryUser()' zurück. –
Ich füge return $ row hinzu; Ich bekomme immer noch Benutzername oder Passwort ist leer, als ich versucht habe, diese eine echo $ row ['username']; am Ende der Funktion queryUser(), ich bekomme die Benutzereingabe. @ AmanRawat –
Nein, das kann man nicht tun. Sie haben die Werte in '$ this-> query' nicht in der Zeile zugewiesen. Also musst du nach '$ this-> query ['username']' 'statt $' row ['username'] '' –