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

时间:2022-11-18 23:41:39
<?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'=>'生成帖子失败')));
}
?>