cakephp会员注册及登录验证实例
2013-09-10 09:15
405 查看
一:首先数据库要有一张users表:
CREATE TABLE `users` (
`id` int(10) NOT NULL auto_increment,
`username` varchar(50) collate utf8_unicode_ci NOT NULL,
`password` varchar(50) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
二 :创建注册register视图:在目录app/view/users下创建文件register.ctp,编辑代码如下:
<h3>Please fill out the form below to register an account.</h3>
<?php
echo $form->create("User",array("action"=>"register"));//点击register后提交到users控制器里的action register方法处理
echo $form->input("username");
echo $form->input("password");//注意此处的字段要与数据库里的字段一致
?>
<?php
echo $form->end("register");
?>
三:在app/controller目录下创建users_controller.php文件,在app/model下创建user.php文件:
users_controller.php代码如下:
<?php
class UsersController extends AppController
{
var $name = "Users";
var $helper = array("Html","Form");
//会员注册功能模块
function register()
{
if (!empty($this->data))
{
//对会员注册的密码使用md5加密
$this->data['User']['password'] = md5($this->data['User']['password']);
if ($this->User->save($this->data))
{
$this->Session->setFlash('Your registration information was accepted.');
$this->redirect(array('action'=>'login'));
} else {
$this->Session->setFlash('There was a problem with your registration');
$this->redirect(array('action'=>'register'));
}
}
}
}
?>
user.php代码如下:
<?php
class User extends AppModel{
var $name = "User";
//此处是对各字段规则校验,如果需要了解的可参考我的博文:cakephp如何实现数据校验
var $validate = array(
'username'=>array(
array(
'rule'=>'notEmpty',
'message'=>'Username must not be empty!'
),
array(
'rule'=>'isUnique',
'message'=>'Username must be Unique!'
)
),
'password'=>array(
array(
'rule'=>'NotEmpty',
'message'=>'Password must not be empty!'
),
array(
'rule'=>array('minLength','8'),
'message'=>'password must be at least 8 characters!'
)
)
);
}
?>
Ok,至此,如果cakephp其它的设置正确,用户点击注册后即将在数据库表users生成一对应的用户并将密码用md5加密;注册成功后跳转至login.ctp页面即登录页面;
四:现在继续完成登录及验证用户功能的实现:
先在/app/view/users下创建login.ctp,代码如下:
<h3>Please login.</h3>
<?php echo $form->create('User', array('action' => 'login')); ?>
<?php
echo $form->input('username');
echo $form->input('password');
?>
<?php echo $form->end('Login');?>
修改users_controller.php如下:
<?php
class UsersController extends AppController
{
var $name = "Users";
var $helper = array("Html","Form");
function register()
{
if (!empty($this->data))
{
$this->data['User']['password'] = md5($this->data['User']['password']);
if ($this->User->save($this->data))
{
$this->Session->setFlash('Your registration information was accepted.');
$this->redirect(array('action'=>'login'));
} else {
$this->Session->setFlash('There was a problem with your registration');
$this->redirect(array('action'=>'register'));
}
}
}
function login()
{
if($this->data)
{
//根据login.ctp页面上用户输入的用户名查找users表看是否有对应的用户:
$results = $this->User->findByusername($this->data['User']['username']);
//如果用户名存在,核对login.ctp页面上用户输入的密码用md5加密后是否与users表中的密码一致:
if($results&&$results['User']['password'] == md5($this->data['User']['password']))
{
//用户名以及密码都正确,此时我们把用户名保存到session中,如果下次需要调用只需用$this->Session->read('user')
$this->Session->write('user',$this->data['User']['username']);
$this->redirect(array('action'=>'index'));
}
else
{
$this->Session->setFlash("Wrong username or password,please try again!");
$this->redirect(array('action'=>'login'));
}
}
}
}
?>
OK,至此登录页面及验证也完成,此文源于:http://my.oschina.net/adamboy
CREATE TABLE `users` (
`id` int(10) NOT NULL auto_increment,
`username` varchar(50) collate utf8_unicode_ci NOT NULL,
`password` varchar(50) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
二 :创建注册register视图:在目录app/view/users下创建文件register.ctp,编辑代码如下:
<h3>Please fill out the form below to register an account.</h3>
<?php
echo $form->create("User",array("action"=>"register"));//点击register后提交到users控制器里的action register方法处理
echo $form->input("username");
echo $form->input("password");//注意此处的字段要与数据库里的字段一致
?>
<?php
echo $form->end("register");
?>
三:在app/controller目录下创建users_controller.php文件,在app/model下创建user.php文件:
users_controller.php代码如下:
<?php
class UsersController extends AppController
{
var $name = "Users";
var $helper = array("Html","Form");
//会员注册功能模块
function register()
{
if (!empty($this->data))
{
//对会员注册的密码使用md5加密
$this->data['User']['password'] = md5($this->data['User']['password']);
if ($this->User->save($this->data))
{
$this->Session->setFlash('Your registration information was accepted.');
$this->redirect(array('action'=>'login'));
} else {
$this->Session->setFlash('There was a problem with your registration');
$this->redirect(array('action'=>'register'));
}
}
}
}
?>
user.php代码如下:
<?php
class User extends AppModel{
var $name = "User";
//此处是对各字段规则校验,如果需要了解的可参考我的博文:cakephp如何实现数据校验
var $validate = array(
'username'=>array(
array(
'rule'=>'notEmpty',
'message'=>'Username must not be empty!'
),
array(
'rule'=>'isUnique',
'message'=>'Username must be Unique!'
)
),
'password'=>array(
array(
'rule'=>'NotEmpty',
'message'=>'Password must not be empty!'
),
array(
'rule'=>array('minLength','8'),
'message'=>'password must be at least 8 characters!'
)
)
);
}
?>
Ok,至此,如果cakephp其它的设置正确,用户点击注册后即将在数据库表users生成一对应的用户并将密码用md5加密;注册成功后跳转至login.ctp页面即登录页面;
四:现在继续完成登录及验证用户功能的实现:
先在/app/view/users下创建login.ctp,代码如下:
<h3>Please login.</h3>
<?php echo $form->create('User', array('action' => 'login')); ?>
<?php
echo $form->input('username');
echo $form->input('password');
?>
<?php echo $form->end('Login');?>
修改users_controller.php如下:
<?php
class UsersController extends AppController
{
var $name = "Users";
var $helper = array("Html","Form");
function register()
{
if (!empty($this->data))
{
$this->data['User']['password'] = md5($this->data['User']['password']);
if ($this->User->save($this->data))
{
$this->Session->setFlash('Your registration information was accepted.');
$this->redirect(array('action'=>'login'));
} else {
$this->Session->setFlash('There was a problem with your registration');
$this->redirect(array('action'=>'register'));
}
}
}
function login()
{
if($this->data)
{
//根据login.ctp页面上用户输入的用户名查找users表看是否有对应的用户:
$results = $this->User->findByusername($this->data['User']['username']);
//如果用户名存在,核对login.ctp页面上用户输入的密码用md5加密后是否与users表中的密码一致:
if($results&&$results['User']['password'] == md5($this->data['User']['password']))
{
//用户名以及密码都正确,此时我们把用户名保存到session中,如果下次需要调用只需用$this->Session->read('user')
$this->Session->write('user',$this->data['User']['username']);
$this->redirect(array('action'=>'index'));
}
else
{
$this->Session->setFlash("Wrong username or password,please try again!");
$this->redirect(array('action'=>'login'));
}
}
}
}
?>
OK,至此登录页面及验证也完成,此文源于:http://my.oschina.net/adamboy
相关文章推荐
- Ajax-HelloWorld(运用AJAX技术实现会员注册登录验证功能)
- cakephp用户登录验证实例
- 【MVC】会员注册/登录,普通验证,会员名是否注册Ajax验证以及会员邮件验证实现原理
- 【MVC】会员注册/登录,普通验证,会员名是否注册Ajax验证以及会员邮件验证实现原理
- 【MVC】会员注册/登录,普通验证,会员名是否注册Ajax验证以及会员邮件验证实现原理
- 【MVC】会员注册/登录,普通验证,会员名是否注册Ajax验证以及会员邮件验证实现原理
- web编程之注册以及登录验证模块(PHP+mysql)
- 新会员注册页面提示会话已过期请重新登录
- [转]xajax会员注册实例
- Android——XUtils3实现登录和注册页面校验,正则验证
- ucenter整合uc.php接口,discuz上初次注册会员后,即可实现自动登录的方法
- java实现登录窗口(含验证码验证、账户注册等)
- 基于JSP + servlet + javabean的MVC简单验证登录实例
- Struts 2+Hibernate实现完整登录注册(带验证)
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
- 第十五章 加密算法实例1--注册登录(消息摘要算法)
- 第十五章 加密算法实例1--注册登录(消息摘要算法)
- 1 完成登录页面(到记事本文件进行密码和用户名的验证)。 2 完成 用户注册页面(将注册信息显示在本页面 div 中)。
- 注册登录过程点滴(二):使用MVC Remote验证的注意点
- 验证用户是否登录,是否有过注册信息