我正在尝试通过登录页面登录。每次我在字段中输入一个值或者只是按下登录时我会注意到我的浏览器在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方法,似乎无法找到此错误的来源。
答案 0 :(得分:1)
错误消息表明您在Login_Model
内没有Login
的实例。
尝试在private $model
内的构造函数上方插入Login
,然后在构造函数中使用$model = new Login_Model()