每当我尝试登录或按登录时,我都会遇到运行方法

时间:2015-11-12 23:14:26

标签: php mysql login

我正在尝试通过登录页面登录。每次我在字段中输入一个值或者只是按下登录时我会注意到我的浏览器在run方法停止并且我的页面留空。

我的数据库有两列,实际标题为“用户名”和“密码”。 我似乎无法弄清楚造成这种情况的原因。

这是我的login_model.php文件:

<?php

class Login_Model extends BaseModel {

  public function __contruct(){
    parent:: __construct();
  }

  public function run() {

    $sth = $this->database->prepare("SELECT id FROM users WHERE
      Username = :username AND Password = :password");
      $sth->execute(array(
        ':username' => $_POST['username'],
        ':password' => $_POST['password']
      ));

      //$data = $sth->fetchAll();
      $count =  $sth->rowCount();
      if ($count > 0){
        //login
        Session::init();
        Session::set('loggedIn', true);
        header('location: ../controllers/dashboard');
      } else {
        //show error
        header('location: ../login/loginIndex');
      }
  }
}


?>

这是我在控制器的login.php文件中所拥有的内容:

<?php

class Login extends BaseController {

  function __construct(){
    parent::__construct();
  }
  //this is to avoid interference with the page that I want to call
  function index() {
    $this->view->render('../views/login/loginIndex');
  }

  function run(){
  $this->model->run();
  }

  // public function other() {
  //   require '../models/loginModel.php';
  //   $model = new loginModel();
  // }

}

这是我想要结束的地方:

<?php

class Dashboard extends BaseController {

  function __construct(){
    parent::__construct();
    Session::init();
    // You set the variable session: LoggedIn if they pass the condition
    $logged = Session::get('loggedIn');
    if ($logged == false){
      Session::destroy();
      header('location: ../login/loginIndex');
      exit;
    }
  }
  //this is to avoid interference with the page that I want to call
  function index() {
    $this->view->render('../views/dashboard/adminPage');
  }
}

更新

所以在添加了你提到的以下代码之后,这就是我得到的:

  

注意:未定义的属性:第19行的/apps/help-i-need-a-tutor/controllers/login.php中的Login :: $ model

     

致命错误:在第19行的/apps/help-i-need-a-tutor/controllers/login.php中的非对象上调用成员函数run()

我如何在这里找到问题的原因?我已经查看了我的login_model.php类中的run方法,似乎无法找到此错误的来源。

1 个答案:

答案 0 :(得分:1)

错误消息表明您在Login_Model内没有Login的实例。

尝试在private $model内的构造函数上方插入Login,然后在构造函数中使用$model = new Login_Model()

分配给它