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 相关文章推荐
example2.php
Oct 09 PHP
php5 and xml示例
Nov 22 PHP
How do I change MySQL timezone?
Mar 26 PHP
php循环检测目录是否存在并创建(循环创建目录)
Jan 06 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
Jul 18 PHP
smarty简单入门实例
Nov 28 PHP
php使用unset()删除数组中某个单元(键)的方法
Feb 17 PHP
PHP提高编程效率的20个要点
Sep 23 PHP
浅谈PHP链表数据结构(单链表)
Jun 08 PHP
PHP Callable强制指定回调类型的方法
Aug 30 PHP
YII2框架中使用yii.js实现的post请求
Apr 09 PHP
php实现的pdo公共类定义与用法示例
Jul 19 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
php中转义mysql语句的实现代码
2011/06/24 PHP
PHP操作数组的一些函数整理介绍
2011/07/17 PHP
PHP数组排序之sort、asort与ksort用法实例
2014/09/08 PHP
yii中widget的用法
2014/12/03 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
2016/05/16 PHP
PHP中set_include_path()函数相关用法分析
2016/07/18 PHP
PDO操作MySQL的基础教程(推荐)
2017/08/18 PHP
学习YUI.Ext第七日-View&amp;JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
jQuery实现手机上输入后隐藏键盘功能
2017/01/04 Javascript
Angular2开发——组件规划篇
2017/03/28 Javascript
jquery网页加载进度条的实现
2017/06/01 jQuery
详解前端路由实现与react-router使用姿势
2017/08/07 Javascript
详解JSONObject和JSONArray区别及基本用法
2017/10/25 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
nodejs搭建本地服务器并访问文件操作示例
2019/05/11 NodeJs
python使用内存zipfile对象在内存中打包文件示例
2014/04/30 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
python数据挖掘需要学的内容
2019/06/23 Python
py-charm延长试用期限实例
2019/12/22 Python
使用Python 自动生成 Word 文档的教程
2020/02/13 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
实习自我鉴定范文
2013/10/30 职场文书
奉献家乡演讲稿
2014/09/13 职场文书
大学生学习计划书
2014/09/15 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
护士节慰问信
2015/02/15 职场文书
普通员工辞职信范文
2015/05/12 职场文书
信息技术国培研修日志
2015/11/13 职场文书
公司晚会主持词
2019/04/17 职场文书
Java 在线考试云平台的实现
2021/11/23 Java/Android
Zabbix对Kafka topic积压数据监控的解决方案
2022/07/07 Servers