• Discuz!用户注册,登陆,生成帖子功能实现


    <?php 
    
    /*
     * Disucz!部分功能使用说明:
     */
     
     /********************************************************************** 用户注册 ***************************************************************************/
     /* uc_user_register接口只是把用户数据验证后插入到pre_ucenter_members表中
      * 所以需要手动将数据同步到pre_common_member表中
      */
     if(!function_exists('uc_user_register')) {  loaducenter(); }
        $uid = uc_user_register($nickname,$password,$email,'你的昵称加什么?',$nickname);
        if($uid > 0){
            //同步用户
            $uc_members = DB::fetch_all("select * from pre_ucenter_members where email = '$email' limit 1");
            $uc_members = empty($uc_members[0]) ? '' : $uc_members[0];
            if(!empty($uc_members)){
                $com_mem_data = array('email'=>$uc_members['email'],'username'=>$uc_members['username'],'password'=>$uc_members['password'],'groupid'=>$define_group_id,'regdate'=>$uc_members['regdate'],'timeoffset'=>9999);
                DB::insert('common_member',$com_mem_data);
            }
        }else{
            if($uid == -1) {
                die(json_encode(array('status'=>0,'msg'=>'用户名不合法')));
            } elseif($uid == -2) {
                die(json_encode(array('status'=>0,'msg'=>'包含要允许注册的词语')));
            } elseif($uid == -3) {
                die(json_encode(array('status'=>0,'msg'=>'用户名已经存在')));
            } elseif($uid == -4) {
                die(json_encode(array('status'=>0,'msg'=>'Email 格式有误')));
            } elseif($uid == -5) {
                die(json_encode(array('status'=>0,'msg'=>'Email 不允许注册')));
            } elseif($uid == -6) {
                die(json_encode(array('status'=>0,'msg'=>'该 Email 已经被注册')));
            } else{
                die(json_encode(array('status'=>0,'msg'=>'注册失败')));
            }
        }
        
        /*************************************************************** 用户登陆 ********************************************************************************/
        /* 使用setloginstatus函数登陆,
         * 接受两个参数,pre_common_member用户记录,和记录cookie的时间
         */
        $members = DB::fetch_all("select * from pre_common_member where email = '$email' limit 1");
        $member = empty($members[0]) ? '' : $members[0];
        if( !empty($member) ){
            //登陆成功,设置cookie,记录cookie 10年
            setloginstatus($member,315360000);
            die(json_encode(array('status'=>1,'msg'=>'登录成功')));
        }else{
            die(json_encode(array('status'=>0,'msg'=>'登录失败')));
        }
        
        /**************************************************************** 生成帖子 *******************************************************************************/
        /* 生成帖子流程:
         * 1、从pre_forum_post_tableid获取生成帖子的tid
         * 2、构造pre_forum_thread表中数据,并插入到pre_forum_thread表中。pre_forum_thread表中数据保存帖子概要信息,用于显示帖子列表
         * 3、构造pre_forum_post表中数据,并插入到pre_forum_post表中。pre_forum_post表中保存帖子的详情信息。无论是帖子,还是回复都是一条独立的pre_forum_post记录
         */
        $pid = C::t('forum_post_tableid')->insert(array('pid' => null), true);
        $thread_data = array(
            'tid'=>$pid,                    //主题id
            'fid'=>37,                        //栏目id
            'author'=>$post_author,            //作者    
            'authorid'=>$uid,                //作者uid,是pre_common_member表中uid
            'subject'=>$title,                //标题
            'dateline'=>time(),
            'lastpost'=>time(),
            'lastposter'=>$post_author,
            'status'=>32                    //状态
        );
        if( DB::insert('forum_thread',$thread_data) ){
            //帖子内容
            $message = "<div>test";$message .= "</div>";
            $post_data = array(
                'pid'=>$pid,                            //帖子id
                'fid'=>37,                                //栏目id
                'tid'=>$pid,                            //主题id
                'first'=>1,                                //是否第一层
                'author'=>$post_author,                    //作者
                'authorid'=>$uid,                        //作者uid
                'subject'=>$title,                        //标题
                'dateline'=>time(),
                'message'=>htmlspecialchars($message),    //内容
                'useip'=>$_G['clientip'],
                'port'        => '',
                'usesig'    => 1,
                'bbcodeoff'    => '-1',
                'smileyoff'    => '-1',
                'tags'        => '',
                'position'    => 1,                        //楼层数
                'type'        => 1,
                'sort_order'    => 2,
                'list_content' => ''
            );
            if( DB::insert('forum_post',$post_data) ){
                //生成帖子成功
                die(json_encode(array('status'=>1,'msg'=>$pid)));
            }else{
                die(json_encode(array('status'=>1,'msg'=>'生成帖子失败')));
            }
        }else{
            die(json_encode(array('status'=>-1,'msg'=>'生成帖子失败')));
        }
    ?>
        
  • 相关阅读:
    mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案
    WebAPI 用户认证防篡改实现HMAC(二)签名验证 AbsBaseAuthenticationAttribute--转
    Calling a Web API From a .NET Client (C#)
    http状态码有那些?分别代表是什么意思
    html 之表单,div标签等。。。。。。。
    mysql之视图,触发器,事务等。。。
    pymysql模块
    MySQL之IDE工具介绍及数据备份
    mysql老是停止运行该怎么解决
    前端基础之html
  • 原文地址:https://www.cnblogs.com/pandang/p/4980183.html
Copyright © 2020-2023  润新知