2016-04-07 3 views
0

Я создал вход с классами, но дает мне ошибкуФатальная ошибка: Uncaught Ошибка: Вызов неопределенной метод UserController

(!) Fatal error: Uncaught Error: Call to undefined method UserController::checkLogin() in C:\xampp\htdocs\progettoPersonale\controllers\User Controller.php on line 17

(!) Error: Call to undefined method UserController::checkLogin() in C:\xampp\htdocs\progettoPersonale\controllers\User Controller.php on line 17 Call Stack # Time Memory Function Location 1 0.0010 360312 {main}() ...\login.php:0 2 0.0030 384208 UserController->__construct() ...\login.php:7

два класса являются:

class UserController 
{ 
    public $username = ''; 
    private $logged = false; 
    private $usermodel = ''; 

    public function __construct() 
    { $this->usermodel = new UserModel(); 
     session_start(); 


     if ($_SERVER['REQUEST_METHOD']=='POST' && isset($_GET['action'])&& $_GET['action']== 'login'){ 
      $username = (isset($_POST['username']))? $_POST['username'] :false ; 
      $password = (isset($_POST['password']))? $_POST['password'] :false ; 
      var_dump($password,$username); 
      if ($username !=false && $password !=false && $this->usermodel->checkLogin($username, $password)){ 

       $this->username =$username ; 
       $this->logged = true ; 

       $_SESSION['username']= $username ; 
       $_SESSION['logged']= true ; 
       $_SESSION[ 'message' ] = 'Login effettuato correttamente'; 
      }else{ 
       $_SESSION[ 'message' ] = 'Errore con il login; riprovare!'; 
      } 
     } 
     elseif (isset($_GET['action'])&& $_GET['action']== 'logout'){ 
      unset($_SESSION['username']); 
      unset($_SESSION['logged']); 
      $_SESSION[ 'message' ] = 'Logout effettuato correttamente'; 
     } 
     elseif (isset($_SESSION['username'])&& isset($_SESSION['logged'])){ 

      $this->username = $_SESSION['username'] ; 
      $this->logged = true ; 
     } 
     $this->redirectToProperArea(); 
    } 
class UserModel 
{ 
    private $dbconn = null ; 

    public function __construct() 
    { 
     $this->dbconn = new DbConnector(); 
    } 


    public function checkLogin($username, $password){ 

     $newpassword =password_hash($password, PASSWORD_DEFAULT); 

     $res=$this->dbconn->select(
      array('id_utente'), 
      'iscritti', 
      'nome_utente='.$username.'&& password='.$newpassword 

     ); 
     $num_rows=$this->dbconn->num_rows($res); 
     if ($num_rows ==1){ 
      return true ; 
     }else { 
      return false ; 
     } 
    } 
} 
+0

Является ли это точной копией в одном файле? Потому что вам не хватает '}' для закрытия вашего класса UserController. –

ответ

1

В строке 17, вы вызывают UserController::checkLogin(), но класс User Controller не имеет метода checkLogin. Эта функция принадлежит классу UserModel, поэтому вы должны позвонить UserModel::checkLogin()

+0

Вызов '$ this-> usermodel-> checkLogin (..' и ранее определенное свойство '$ this-> usermodel = new UserModel();' должны сделать эту работу прекрасной – rjdown

Смежные вопросы