如题,本人小白,刚开始学就拿了这个教程,不知是不是起点有点高了。在第五章的时候遇到问题,希望老师或者兄弟姐妹们给于帮助。 第五章中一共提到三个文件 admin.php 代码如下:<?php
namespace app\modules\models;
use yii\db\ActiveRecord;
use YIi;
class Admin extends ActiveRecord{
public $rememberMe = true;
public static function TableName(){
return "{{%admin}}";
}
public function rules(){
return[
['adminuser','required','message'=>'管理员帐号不能为空'],
['adminpass','required','message'=>'管理员密码不能为空'],
['rememberMe','boolean'],
['adminpass','validatePass'],
];
}
public function validatePass(){
if(!$this->hasErrors()){
$data = self::find()->where('adminuser = :user and adminpass = :pass',[":user"=>$this->adminuser,":pass"=>md5($this->adminpass)])->one();
if(is_null($data)){
$this->addError("adminpass","用户名或者密码错误");
}
}
}
public function login($data){
if($this->load($data) && $this->validatePass()){
//做点有意义的事
$lifetime = $this ->rememberMe ? 24*3600 : 0;
$session = Yii::$app->session;
session_set_cookie_params($lifetime);
$session['admin']=['adminuser'=>$this->adminuser,'isLogin'=>1,];
return (bool)$session['admin']['isLogin'];
}
return false;
}
} PublicController.php文件中的代码:<?php
namespace app\modules\controllers;
use yii\web\Controller;
use app\modules\models\Admin;
use yii;
class PublicController extends Controller{
public function actionLogin(){
$this->layout=false;
$modle =new Admin;
if (Yii::$app->request->isPost){
$post= Yii::$app->request->post();
//var_dump($post);
if($modle->login($post)){
$this->redirect(['default/index']);
Yii::$app->end();
}
}
return $this->render("login",['model'=>$modle]);
}
}
前台login.php文件中用到的代码:<?php $form=ActiveForm::begin(['fieldConfig'=>['template'=>'{error}{input}',],]);?>
<div class="span4 box">
<div class="content-wrap">
<h6>慕课商城 - 后台管理</h6>
<?php echo $form->field($model,'adminuser')->textInput(["class"=>"span12","placeholder"=>"管理员账号"]);?>
<?php echo $form->field($model,'adminpass')->passwordInput(["class"=>"span12","placeholder"=>"管理员密码"]);?>
<!-- <input class="span12" type="text" placeholder="管理员账号" />
<input class="span12" type="password" placeholder="管理员密码" />-->
<a href="#" class="forgot">忘记密码?</a>
<?php echo $form->field($model,'rememberMe')->checkbox(["id"=>"remember-me","template"=>"<div class='remember'>{input}<label for='remember-me'>记11住我</label></div>",]);?>
<!-- <div class="remember">
<input id="remember-me" type="checkbox" />
<label for="remember-me">记住我</label>
</div>-->
<?php echo Html::submitButton('登录',['class'=>'btn_glow primary login']);?>
<!-- <a class="btn-glow primary login" href="index.html">登录</a>-->
</div>
</div>
<?php ActiveForm::end();?>上面是我看视频书写的代码,问题如下: 当提交的用户名与密码 错误的时候,会正常报错。但当提交正常的用户名和密码的时候,就没有反映,不跳转到default/index页中。看了好多遍还是没有发现问题。望大神们给答复。是不是我回头先去看基础课去。。。。。。
3 回答
天使之翼死神之镰
TA贡献81条经验 获得超102个赞
if($modle->login($post))这个判断应该为假,从而判断 if($this->load($data) && $this->validatePass())这个判断也为假,进而推断 $this->load($data)和 $this->validatePass())都为假,突然发现admin.php中并没有load()方法,是没贴上来还是本身就没有;$data是否为空,validatePass()方法为何执行结果为假,一步步判断,一步步排错,多用var_dump()加exit组合,慢慢找到原因。
- 3 回答
- 0 关注
- 2140 浏览
添加回答
举报
0/150
提交
取消