1、数据库表创建-user
序号 |
字段名称 |
类型 |
名称 |
属性 |
默认值-说明 |
1 |
user_id |
int(10) |
pk |
自动编号 |
|
2 |
username |
varchar(64) |
用户名 |
uniq |
|
3 |
nickname |
varchar(64) |
昵称 |
||
4 |
password |
varchar(32) |
密码 |
2、登陆控制器 - controllers/LoginController.php
<?php /** * 用户登陆 * * @author Ttall <ttall.su@gmail.com> * @link http://www.ttall.net/ * @copyright Copyright © 2012-2015 ttall.net * @license http://www.ttall.net/license/ */ class LoginController extends Controller { // 用户登陆 public function actionIndex() { $username = ''; if ($_POST['submit-login']) { $user = new User(); $errorMsg = ''; $username = isset($_POST['username']) ? trim($_POST['username']) : ''; $password = isset($_POST['password']) ? trim($_POST['password']) : ''; if ($username && $password) { $attributes = array('username' => $username); user = User::model() -> findByAttributes($attributes); if ($user) { $userpasswd = md5($password ); $loginErrorTimes=(int)Yii::app()->session['login_error_times']; if ($loginErrorTimes > 0) { $loginErrorTimes++; } else { $loginErrorTimes = 1; } // 错误大于3次,需要输入验证码。 if ($loginErrorTimes >= 3) { $verifyCode=isset($_POST['verify_code'])?trim($_POST['verify_code']) : ''; $captcha = Yii::app() -> session['captcha']; if (strtolower($captcha) != strtolower($verifyCode)) { //$this -> assign('errorMsg', '验证码错误!'); $errorMsg = '验证码错误!'; } $this -> assign('login_error_times', $loginErrorTimes); } // 登陆次数,提交超过三次需要输入验证码 Yii::app() -> session['login_error_times'] = $loginErrorTimes; if (empty($errorMsg)) { if ($userpasswd != $user -> password) { // 登陆错误次数 //$this -> assign('errorMsg', '密码错误!'); errorMsg = '密码错误!'; } else { // 登陆成功, Yii::app()->session['username']=$user['username']; Yii::app() -> session['nickname'] = $user['nickname']; Yii::app() -> session['user_id'] = $user['user_id']; Yii::app() -> session['is_login'] = TRUE; Yii::app() -> session['visitor'] = $user; // 更新用户记录:登陆时间,最近一次IP,登陆次数等 $user -> last_login = time(); $user -> last_ip = $this -> getIp(); $user -> login_times = $user -> login_times + 1; $user -> last_login = time(); $user -> save(); // 重置登陆错误次数 Yii::app() -> session['login_error_times'] = null; $this -> redirect("/index.php?r=ucenter/default"); return; } } } else { $errorMsg = '用户名不存在!'; } } else if (empty($username)) { $errorMsg = '用户名不可以为空!'; } else if (empty($password)) { $errorMsg = '密码不可以为空!'; } } $this -> assign('errorMsg', $errorMsg); $this -> assign('username', $username); $this -> display('login.html'); } // 配置类 public function actions() { // return external action classes, e.g.: return array(); } }
3、模型 - models/User.php
<?php /** * 用户模型 * models/User.php * * @author Ttall <ttall.su@gmail.com> * @link http://www.ttall.net/ * @copyright Copyright © 2012-2015 ttall.net * @license http://www.ttall.net/license/ */class User extends CActiveRecord { /** * Returns the static model of the specified AR class. * @param string $className active record class name. * @return Users the static model class */ public static function model($className = __CLASS__) { return parent::model($className); } /** * @return string the associated database table name */ public function tableName() { return '{{user}}'; } /** * @return array validation rules for model attributes. */ public function rules() { // NOTE: you should only define rules for those attributes that // will receive user inputs. return array( array('password', 'required'), array('username, password', 'length', 'max' => 32), array('created', 'safe'), // The following rule is used by search(). // Please remove those attributes that should not be searched. array('user_id, username, password, created', 'safe', 'on' => 'search'), ); } /** * @return array relational rules. */ public function relations() { // NOTE: you may need to adjust the relation name and the related // class name for the relations automatically generated below. return array( 'newscomment' => array(self::HAS_MANY, 'NewsComment', 'user_id'), 'myMessage' => array(self::HAS_MANY, 'Message', 'receiver_uid'), 'sendMessage' => array(self::HAS_MANY, 'Message', 'sender_uid'), ); }
4、模型 - views/login.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset=utf-8 /> <title>登陆 - <!--{$site_name}--> - <!--{$domain}--></title> <link href="/static/css/base.css" rel="stylesheet" type="text/css" /> <link href="/static/css/main.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="/static/js/jquery.min.js"></script> <script type="text/JavaScript" src="/static/js/curvycorners.js"></script> <script type="text/JavaScript" src="/static/js/common.js"></script> </head> <body> <!--header--> <!--{include file="header.html"}--> <!--/header--> <div class="wrap login_container"> <form action="" method="post"> <h2 class="login_title">登 录</h2> <div class="login_le"> <p class="login_le_title">使用师说网帐号登录:</p> <p class="error_p"> <span class="login_le_text"> </span> <!--{if $errorMsg}--> <span class="error"> <em><!--{$errorMsg}--></em> </span> <!--{/if}--> </p> <p> <span class="login_le_text">邮箱:</span> <input name="username" type="text" class="login_input" value="<!--{$username}-->"/> </p> <p> <span class="login_le_text">密 码:</span> <input name="password" type="password" class="login_input" value="123456"/> </p> <!--{if $login_error_times}--> <p> <span class="yzm_info"> <img src="/index.php?r=login/captcha&v=<!--{$login_error_times}-->" id="captcha" class="" /> <a href="#captcha" id="changeCaptcha">看不清,换一张图片</a></span> <!--{if $verifyCodeErrorMsg}--> <span class="error"> <em><!--{$verifyCodeErrorMsg}--></em> </span> <!--{/if}--> </p> <p> <span class="login_le_text">验证码:</span> <input name="verify_code" type="text" class="login_input" style="width: 52px;"/> </p> <!--{/if}--> <p> <span class="login_le_text"> </span> <input name="remember_me" type="checkbox" value="" /> <span class="f12px"> 下次自动登录 <a href="" target="_blank" title="" class="forget_password">忘记密码?</a> </span> </p> <p> <span class="login_le_text"> </span> <input name="submit-login" type="submit" value="登录" class="login_commit" /> </p> </div> <div class="login_ri"> <p class="login_le_title">您还可以用以下帐号登录:</p> <p> <a href="" class="login_commit_btn1"></a> </p> </div> </form> </div> <!--//footer--> <!--{include file="footer.html"}--> <!--//footer--> <script type="text/javascript"> // 验证码修改 $("#changeCaptcha").click(function() { var src = "/index.php?r=login/captcha&rand=regist" + "&x=" + Math.floor((Math.random() * 100) + 1); $('#captcha').attr("src", src); return false; }) </script> </body> </html>
相关推荐
资源名称:PHP YII框架实战项目实例视频教程 教程内容: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
yii框架入门实例
该文档能指导大家使用Yii框架从搭建环境到最后开发出三个小实例,浅显易懂,里面描述了使用Yii框架访问表单,访问数据库等操作,对于Yii框架入门来说足够了,前提是配置好了PHP开发环境,我的资源下有PHP环境搭建的...
本文实例讲述了Yii框架用户登录session丢失问题解决方法。分享给大家供大家参考,具体如下: 最近做项目,使用的是YII框架,用户的登录总是出现有时候能登录,有时候不能登录的情况。调试了很多次,开始以为是服务器...
带有sphinx搜索功能的yii2框架实例
此文介绍了yii框架的基础,及文件结构,引导用户熟悉YII框架,并结出实例,使用户完成简单的PHP网页设计
PHP生成二维码实例附演示地址.rar,yii框架生成二维码.
主要介绍了Yii框架页面渲染操作,结合实例形式详细分析了Yii框架页面渲染的原理、流程及相关操作技巧,需要的朋友可以参考下
下载下来的是文本文件,里面有百度云盘的下载链接,永久有效!
主要介绍了Yii框架分页技术,结合实例形式详细分析了Yii框架相关控制器、模型与视图使用技巧,需要的朋友可以参考下
配合《带有sphinx搜索功能的yii2框架实例》的资源
主要介绍了Yii框架应用组件用法,结合实例形式分析了Yii应用组件基本功能、定义、使用方法及操作注意事项,需要的朋友可以参考下
本文实例讲述了Yii框架核心组件类。分享给大家供大家参考,具体如下: CComponent类为YII框架的基于组件和事件驱动编程提供了基础,YII框架中的大部分类都将CComponent类作为基类。 CComponent类为它的子类提供3个...
主要介绍了Yii框架form表单用法,实例分析了Yii中form表单的实现方法与相关技巧,非常具有实用价值,需要的朋友可以参考下
PHP实例开发源码—Yii Framework php框架.zip PHP实例开发源码—Yii Framework php框架.zip PHP实例开发源码—Yii Framework php框架.zip
主要介绍了Yii框架中memcache用法,以实例形式分析了在Yii框架中加入memcache的具体操作方法,是非常实用的技巧,需要的朋友可以参考下
本文实例讲述了Yii 框架使用Forms操作。分享给大家供大家参考,具体如下: 创建模型 模型类 EntryForm 代表从用户那请求的数据, 该类如下所示并存储在 models/EntryForm.php 文件中。 请参考类自动加载章节获取更多...