• 技术文章 >php教程 >PHP开发

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

    高洛峰高洛峰2016-12-21 16:35:45原创562
    本文以实例形式讲述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>


    更多ThinkPHP之用户注册登录留言完整实例相关文章请关注PHP中文网!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:ThinkPHP
    上一篇:thinkphp制作404跳转页的简单实现方法 下一篇:thinkphp分页实现效果
    大前端线上培训班

    相关文章推荐

    • PHP使用glob函数遍历目录或文件夹的方法• Apache的性能优化(三)• Zend Framework教程之Zend_Db_Table用法详解• 用PEAR来写你的下一个php程序• AngularJS辅助库browserTrigger用法示例

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网