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'=>'生成帖子失败')));
    }
?>
    
原文地址:https://www.cnblogs.com/pandang/p/4980183.html