为了账号安全,请及时绑定邮箱和手机立即绑定

Yii2.0全力出击打造完整电商平台--第五章小问题

Yii2.0全力出击打造完整电商平台--第五章小问题

PHP
tngh 2017-06-21 19:58:52
        如题,本人小白,刚开始学就拿了这个教程,不知是不是起点有点高了。在第五章的时候遇到问题,希望老师或者兄弟姐妹们给于帮助。        第五章中一共提到三个文件     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组合,慢慢找到原因。


查看完整回答
1 反对 回复 2017-06-26
?
慕容0585378

TA贡献1条经验 获得超0个赞

为什么我的前后台模板都不能用呢?谁可以分享一下吗

查看完整回答
反对 回复 2019-11-10
?
侠客岛的含笑

TA贡献552条经验 获得超285个赞

做完了吗

查看完整回答
反对 回复 2017-06-24
  • 3 回答
  • 0 关注
  • 2140 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信