ThinkPHP之用户注册登录留言完整实例


Posted in PHP onJuly 22, 2014

本文以实例形式讲述ThinkPHP实现的包括用户的注册、登录以及留言等功能,这里需要大家注意的是,在存在用户模型的情况下实例化一个用户类的时候使用D方法来实现
 
UserActiion.class.php页面:

<?php
class UserAction extends Action{
public function add(){
$user = D("user");
$user->create();
$result = $user->add();
if($result){
$this->assign("jumpUrl","__APP__/index/index");
$this->success('注册成功!');
}else{
//echo $user->getError();
$this->assign("jumpUrl","__APP__/user/register");
$this->error($user->getError());
}
}
public function register(){
$this->display();
}
public function login(){
$this->display();
}
public function checklogin(){
$username = $_POST['username'];
$passwd = $_POST['passwd'];
$user = D("user");
//$User->where('id=8')->find();这里的where 语句要注意一下,如果是其他字段的话后面一定要有单引号
$userinfo = $user->where("username ='$username'")->find();
if(!empty($userinfo)){
if($userinfo['passwd'] == $passwd){
Cookie::set('userid',$userinfo['id'],time()+3600*24);
Cookie::set('username',$username,time()+3600*24);
Cookie::set('lastlogintime',time(),time()+3600*24);
$this->assign("jumpUrl","__APP__/index/index");
$this->success('登陆成功!');
}else{
$this->assign("jumpUrl","__APP__/user/login");
$this->error('密码出错,请重新输入!');
}
}else{
$this->assign("jumpUrl","__APP__/user/login");
$this->error('用户名不存在!');
}
}
public function loginout(){
Cookie::delete('username');
Cookie::delete('lastlogintime');
$this->assign("jumpUrl","__APP__/index/index");
$this->success('您已经成功退出,欢迎您的下次登录!');
}
}

IndexAction.class.php页面:

<?php
// 本类由系统自动生成,仅供测试用途
class IndexAction extends Action{
public function insert() {   
$content = new ContentModel();
$result = $content->create();
if(!$result){
$this->assign("jumpUrl","__URL__/index");
$this->error($content->getError());//如果创建失败,表示验证没有通过,输出错误信息
}else{//验证通过,进行其他操作
$content->userid=Cookie::get('userid');
$content->add();
$this->assign("jumpUrl","__URL__/index");
$this->success('添加成功!');
}
} 
// 数据查询操作  
public function index() {
$content = new ContentModel();
$list = $content->findAll();  
//用户的cookie
$username = Cookie::get('username');
$lastlogintime = Cookie::get('lastlogintime');
$this->assign('list',$list);    
$this->assign('title','我的首页');
$this->assign('username',$username);
$this->assign('lastlogintime',$lastlogintime);
$this->display();  
} 
// 删除操作
public function delete(){
$content = new ContentModel();
$id = $_GET['id'];
if($content->where("id=$id")->delete()){
$this->assign("jumpUrl","__URL__/index");
$this->success('删除成功!');
}else{
$this->assign("jumpUrl","__URL__/index");
$this->error('删除失败!');
}
} 
// 编辑操作
public function edit(){
$content = new ContentModel();
$id = $_GET['id'];
if($id != '')
{
//$data = $content->select($id);
$data = $content->where("id=$id")->select();
if(!empty($data)){
$this->assign('data',$data);
}else{
echo "数据为空!";
}
}
$this->assign('title','编辑页面');
$this->display();
}
// 更新操作
public function update(){
$content = new ContentModel();
//直接使用create(),自动会帮你进行数据的传值
/*$content->create();
$content->save(); // 根据条件保存修改的数据
echo "更新数据成功!";*/
// 使用post 传值过来,进行更新
$id = $_POST['id'];
if($id != '')
{
$data['id'] = $id;
$data['title'] = $_POST['title'];
$data['content'] = $_POST['content'];
if($content->save($data))// 根据条件保存修改的数据
{
$this->assign("jumpUrl","__URL__/index");
$this->success('更新数据成功!');
}
else{
$this->assign("jumpUrl","__URL__/index");
$this->success('更新数据失败!');
}
}else
{
echo "保存数据失败!";
}
}
}
?>

ContentModel.class.php页面:

<?php
class ContentModel extends Model{
/*
* 自动验证
* array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间)
*/ 
protected $_validate = array(
array('title','require','标题必须填写!'),
array('content','require','内容必须填写!'), 
);
/* 
* 自动填充
* array(填充字段,填充内容,填充条件,附加规则)
*/
protected $_auto = array(
array('addtime','time',1,'function'),
);
}
?>

UserModel.class.php页面:

<?php
class UserModel extends Model{
protected $_validate = array(
array('username','','帐号名称已经存在!',0,'unique',1), 
);  
}
?>

 
这里需要注意的是,使用自动验证的时候 实例化时要用 $user = D("user") 而不能用 $user = M("user"),用M这种方法会报错,D函数用于实例化Model,M函数用户实例化一个没有模型的文件。
 
success.html页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="refresh" content="20; url='{$jumpUrl}'" />
<title>信息提示</title>
</head>
<body>
<div id="man_zone">
<table width="40%" border="1" align="center" cellpadding="3" cellspacing="0" class="table" style="margin-top:100px;">
<tr>
<th align="center" style="background:#cef">信息提示</th>
</tr>
<tr>
<td><p>{$message}<br />
2秒后返回指定页面!<br />
如果浏览器无法跳转,<a href="{$jumpUrl}" rel="external nofollow" >请点击此处</a>。</p></td>
</tr>
</table>
</div>
</body>
</html>
PHP 相关文章推荐
linux下为php添加curl扩展的方法
Jul 29 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
Feb 22 PHP
解析PHP汉字转换拼音的类
Jun 18 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
Jan 09 PHP
解析WordPress中函数钩子hook的作用及基本用法
Dec 22 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
May 13 PHP
php版微信自动登录并获取昵称的方法
Sep 23 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
Feb 23 PHP
php实现基于pdo的事务处理方法示例
Jul 21 PHP
php识别翻转iphone拍摄的颠倒图片
May 17 PHP
PHP支付宝当面付2.0代码
Dec 21 PHP
laravel 解决强制跳转 https的问题
Oct 22 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
Jul 22 #PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
Jul 22 #PHP
async和DOM Script文件加载比较
Jul 20 #PHP
Eclipse的PHP插件PHPEclipse安装和使用
Jul 20 #PHP
php多任务程序实例解析
Jul 19 #PHP
php实现斐波那契数列的简单写法
Jul 19 #PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
Jul 19 #PHP
You might like
web方式ftp
2006/10/09 PHP
PHP中一个控制字符串输出的函数
2006/10/09 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
javaScript中的原型解析【推荐】
2016/05/05 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
AnjularJS中$scope和$rootScope的区别小结
2016/09/18 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
js控制文本框禁止输入特殊字符详解
2017/04/07 Javascript
详解JS中的attribute属性
2017/04/25 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
Vue 样式切换及三元判断样式关联操作
2020/08/09 Javascript
Element-ui upload上传文件限制的解决方法
2021/01/22 Javascript
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
Python中int()函数的用法浅析
2017/10/17 Python
python基础教程项目二之画幅好画
2018/04/02 Python
win10 64bit下python NLTK安装教程
2018/09/19 Python
对pandas里的loc并列条件索引的实例讲解
2018/11/15 Python
python 常见字符串与函数的用法详解
2018/11/23 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
Python数据结构dict常用操作代码实例
2020/03/12 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
Python就将所有的英文单词首字母变成大写
2021/02/12 Python
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
说一下mysql, oracle等常见数据库的分页实现方案
2012/09/29 面试题
生物医学工程专业学生求职信范文分享
2013/12/14 职场文书
《小猫刮胡子》教学反思
2014/02/21 职场文书
座谈会主持词
2014/03/20 职场文书
小学生优秀评语大全
2014/04/22 职场文书
社团活动总结模板
2014/06/30 职场文书
庆国庆活动总结
2014/08/28 职场文书
四则混合运算教学反思
2016/02/23 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书