yii中的登錄如何實現
1、創建數據表shop_admin
CREATE?TABLE?`shop_admin`?( ??`adminid`?int(10)?UNSIGNED?NOT?NULL?COMMENT?'主鍵ID', ??`adminuser`?varchar(32)?NOT?NULL?DEFAULT?''?COMMENT?'管理員賬號', ??`adminpass`?char(32)?NOT?NULL?DEFAULT?''?COMMENT?'管理員密碼', ??`adminemail`?varchar(50)?NOT?NULL?DEFAULT?''?COMMENT?'管理員郵箱', ??`logintime`?int(10)?UNSIGNED?NOT?NULL?DEFAULT?'0'?COMMENT?'登陸時間', ??`loginip`?bigint(20)?NOT?NULL?DEFAULT?'0'?COMMENT?'登陸IP', ??`createtime`?int(10)?UNSIGNED?NOT?NULL?DEFAULT?'0'?COMMENT?'創建時間' )?ENGINE=InnoDB?DEFAULT?CHARSET=utf8;
2、登陸頁面
<?php use yiibootstrapActiveForm; use yiihelpersHtml; $form = ActiveForm::begin([ 'id' =>?'abc-form', ????'options'?=>?['class'?=>?'form-horizontal'], ])?> =?$form->field($model,?'adminuser')->textInput(['placeholder'?=>?"用戶名"])->label('賬號')??> =?$form->field($model,?'adminpass')->passwordInput()->label('密碼')??> =?Html::submitButton('提交')??> <?php ActiveForm::end() ?>
3、控制器
相關文章教程推薦:yii教程
<?php namespace appcontrollers; use yiiwebController; use appmodelsAdmin; use Yii; class IndexController extends Controller { public function actionIndex() { // 不使用布局 $this->layout?=?false; ????????$model?=?new?Admin; //????????是否是post提交 ????????if?(Yii::$app->request->isPost)?{ //????????????獲得post提交參數 ????????????$post?=?Yii::$app->request->post(); ????????????if($model->login($post)){ ????????????????return?"登陸成功"; ????????????}?else?{ ????????????????return?"登陸失敗"; ????????????} ????????}?else?{ ????????????return?$this->render("index",?['model'?=>?$model]); ????????} ????} ? }
4、模型
<?php namespace appmodels; use yiidbActiveRecord; use Yii; class Admin extends ActiveRecord { public static function tableName() { return "{{%admin}}"; } public function rules() { return [ ['adminuser', 'required'], ['adminpass', 'required'], // 驗證密碼是否正確 ['adminpass', 'validatePass'] ]; } public function validatePass() { if (!$this->hasErrors())?{ //????????????判斷用戶名密碼是否正確 ????????????$data?=?self::find() ????????????????->where(['adminuser'?=>?$this->adminuser]) ????????????????->andwhere(['adminpass'?=>?md5($this->adminpass)]) ????????????????->one(); ????????????if?(is_null($data))?{ ????????????????$this->addError('adminpass',?'adminuser?or?adminpass?error'); ????????????} ????????} ????} ????public?function?login($data) ????{ ????????if($this->load($data)?&&?$this->validate())?{ //????????????登陸信息寫入session ????????????$session?=?Yii::$app->session; ????????????$session->open(); ????????????$session->set('adminuser',?$this->adminuser); //???????????更新登陸時間和IP ????????????$this->updateAll(['logintime'?=>?time(),?'loginip'?=>?ip2long(Yii::$app->request->userIP)],?['adminuser'?=>?$this->adminuser]); ????????????return?true; ????????} ????????return?false; ????} }
更多yiiyii教程教程,請關注PHP中文網。? ? ? ??
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END