@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
return array(
|
||||
'name' => '用户',
|
||||
'version' => '1.2',
|
||||
'desc' => '用户中心,积分,头衔',
|
||||
'url' => 'http://www.thinksaas.cn',
|
||||
'email' => 'thinksaas@qq.com',
|
||||
'author' => '邱君',
|
||||
'author_url' => 'http://www.thinksaas.cn',
|
||||
'isoption' => '1',
|
||||
'isinstall' => '1',
|
||||
'issql' => '1',
|
||||
'issystem' => '1',
|
||||
'isappnav' => '1',
|
||||
'ismy'=>'0',
|
||||
);
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
//管理入口
|
||||
|
||||
if(is_file('app/'.$app.'/action/admin/'.$mg.'.php')){
|
||||
include_once 'app/'.$app.'/action/admin/'.$mg.'.php';
|
||||
}else{
|
||||
tsNotice('sorry:no index!');
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
switch($ts){
|
||||
|
||||
//用户组列表
|
||||
case "list":
|
||||
|
||||
$arrGroup = $new['user']->findAll('user_group',null,'ugid asc');
|
||||
|
||||
include template('admin/group_list');
|
||||
break;
|
||||
|
||||
//创建用户组
|
||||
case "add":
|
||||
|
||||
$ugname = tsTrim($_POST['ugname']);
|
||||
$uginfo = tsTrim($_POST['uginfo']);
|
||||
|
||||
if($ugname && $uginfo){
|
||||
$new['user']->create('user_group',array(
|
||||
'ugname'=>$ugname,
|
||||
'uginfo'=>$uginfo,
|
||||
));
|
||||
}
|
||||
|
||||
header('Location: '.SITE_URL.'index.php?app=user&ac=admin&mg=group&ts=list');
|
||||
|
||||
break;
|
||||
|
||||
case "edit":
|
||||
|
||||
$ugid = tsIntval($_POST['ugid']);
|
||||
$ugname = tsTrim($_POST['ugname']);
|
||||
$uginfo = tsTrim($_POST['uginfo']);
|
||||
|
||||
if(in_array($ugid,array(1,2,3,4))) qiMsg('非法操作!');
|
||||
|
||||
$new['user']->update('user_group',array(
|
||||
'ugid'=>$ugid,
|
||||
),array(
|
||||
'ugname'=>$ugname,
|
||||
'uginfo'=>$uginfo,
|
||||
));
|
||||
|
||||
header('Location: '.SITE_URL.'index.php?app=user&ac=admin&mg=group&ts=list');
|
||||
|
||||
break;
|
||||
|
||||
//删除用户组
|
||||
case "delete":
|
||||
$ugid = tsIntval($_GET['ugid']);
|
||||
|
||||
if(in_array($ugid,array(1,2,3,4))){
|
||||
qiMsg('非法操作!');
|
||||
}
|
||||
|
||||
$new['user']->delete('user_group',array(
|
||||
'ugid'=>$ugid,
|
||||
));
|
||||
|
||||
#降为普通用户
|
||||
$new['user']->update('user_info',array(
|
||||
'ugid'=>$ugid,
|
||||
),array(
|
||||
'ugid'=>3,
|
||||
));
|
||||
|
||||
header('Location: '.SITE_URL.'index.php?app=user&ac=admin&mg=group&ts=list');
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
switch($ts){
|
||||
|
||||
case "list":
|
||||
|
||||
$page = tsIntval($_GET['page'],1);
|
||||
$url = SITE_URL.'index.php?app=user&ac=admin&mg=guestbook&ts=list&page=';
|
||||
$lstart = $page*20-20;
|
||||
|
||||
$arrGuestbook = $new['user']->findAll('user_gb',null,'addtime desc',null,$lstart.',20');
|
||||
|
||||
$guestNum = $new['user']->findCount('user_gb');
|
||||
|
||||
$pageUrl = pagination($guestNum, 20, $page, $url);
|
||||
|
||||
include template('admin/guestbook_list');
|
||||
|
||||
break;
|
||||
|
||||
case "delete":
|
||||
|
||||
$guestid = tsIntval($_GET['guestid']);
|
||||
$page = tsIntval($_GET['page']);
|
||||
|
||||
$new['user']->delete('user_gb',array(
|
||||
'id'=>$guestid,
|
||||
));
|
||||
|
||||
header('Location: '.SITE_URL.'index.php?app=user&ac=admin&mg=guestbook&ts=list&page='.$page);
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
switch($ts){
|
||||
|
||||
//基本配置
|
||||
case "":
|
||||
$strOption = getAppOptions('user');
|
||||
|
||||
include template("admin/options");
|
||||
|
||||
break;
|
||||
|
||||
case "do":
|
||||
|
||||
$arrOption = $_POST['option'];
|
||||
|
||||
#更新app配置选项
|
||||
upAppOptions('user',$arrOption);
|
||||
|
||||
#更新app导航和我的导航
|
||||
upAppNav('user',$arrOption['appname']);
|
||||
|
||||
qiMsg('修改成功!');
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
switch($ts){
|
||||
|
||||
case "":
|
||||
|
||||
$ugid = tsIntval($_GET['ugid'],1);
|
||||
|
||||
$arrUg = $new['user']->findAll('user_group',null,'ugid asc');
|
||||
|
||||
|
||||
|
||||
|
||||
include template('admin/permissions');
|
||||
|
||||
break;
|
||||
|
||||
case "do":
|
||||
|
||||
/**
|
||||
* 权限参数说明,app,action必须,其他参数可选
|
||||
* app-action-ts
|
||||
* app-action-mg-ts 当action=admin
|
||||
* app-action-api-ts 当action=api
|
||||
*/
|
||||
|
||||
$ugid = tsIntval($_POST['ugid']);
|
||||
|
||||
$arrOption = $_POST['option'];
|
||||
|
||||
aac('pubs')->upAppPermissions($ugid,'user',$arrOption);
|
||||
|
||||
qiMsg('操作成功!');
|
||||
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
switch($ts){
|
||||
|
||||
//角色列表
|
||||
case "list":
|
||||
|
||||
$arrRole = $new['user']->findAll('user_role');
|
||||
|
||||
include template('admin/role_list');
|
||||
break;
|
||||
|
||||
//角色修改
|
||||
case "do":
|
||||
|
||||
$arrRoleName = $_POST['rolename'];
|
||||
$arrScoreStart = $_POST['score_start'];
|
||||
$arrScoreEnd = $_POST['score_end'];
|
||||
|
||||
//先清空
|
||||
$db->query("TRUNCATE TABLE `".dbprefix."user_role`");
|
||||
|
||||
//后添加
|
||||
foreach($arrRoleName as $key=>$item){
|
||||
$rolename = tsTrim($item);
|
||||
$score_start = tsTrim($arrScoreStart[$key]);
|
||||
$score_end = tsTrim($arrScoreEnd[$key]);
|
||||
|
||||
if($rolename){
|
||||
$new['user']->create('user_role',array(
|
||||
'rolename'=>$rolename,
|
||||
'score_start'=>$score_start,
|
||||
'score_end'=>$score_end,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
//再生成缓存文件
|
||||
$arrRole = $new['user']->findAll('user_role',null,null,'rolename,score_start,score_end');
|
||||
|
||||
fileWrite('user_role.php','data',$arrRole);
|
||||
$tsMySqlCache->set('user_role',$arrRole);
|
||||
|
||||
qiMsg("修改成功!");
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
switch($ts){
|
||||
|
||||
case "list":
|
||||
|
||||
$arrScore = $new['user']->findAll('user_score');
|
||||
|
||||
include template('admin/score_list');
|
||||
break;
|
||||
|
||||
case "adddo":
|
||||
|
||||
$scorekey = tsTrim($_POST['scorekey']);
|
||||
$scorename = tsTrim($_POST['scorename']);
|
||||
$score = tsIntval($_POST['score']);
|
||||
|
||||
$app = tsTrim($_POST['app']);
|
||||
$action = tsTrim($_POST['action']);
|
||||
$mg = tsTrim($_POST['mg']);
|
||||
$api = tsTrim($_POST['api']);
|
||||
$ts = tsTrim($_POST['ts']);
|
||||
$status = tsIntval($_POST['status']);
|
||||
|
||||
$new['user']->create('user_score',array(
|
||||
'scorekey'=>$scorekey,
|
||||
'scorename'=>$scorename,
|
||||
'score'=>$score,
|
||||
'app'=>$app,
|
||||
'action'=>$action,
|
||||
'mg'=>$mg,
|
||||
'api'=>$api,
|
||||
'ts'=>$ts,
|
||||
'status'=>$status,
|
||||
));
|
||||
|
||||
header('Location: '.SITE_URL.'index.php?app=user&ac=admin&mg=score&ts=list');
|
||||
|
||||
break;
|
||||
|
||||
case "editdo":
|
||||
|
||||
$scoreid = tsIntval($_POST['scoreid']);
|
||||
$score = tsIntval($_POST['score']);
|
||||
$app = tsTrim($_POST['app']);
|
||||
$action = tsTrim($_POST['action']);
|
||||
$mg = tsTrim($_POST['mg']);
|
||||
$api = tsTrim($_POST['api']);
|
||||
$ts = tsTrim($_POST['ts']);
|
||||
$status = tsIntval($_POST['status']);
|
||||
|
||||
$new['user']->update('user_score',array(
|
||||
'scoreid'=>$scoreid,
|
||||
),array(
|
||||
'score'=>$score,
|
||||
'app'=>$app,
|
||||
'action'=>$action,
|
||||
'mg'=>$mg,
|
||||
'api'=>$api,
|
||||
'ts'=>$ts,
|
||||
'status'=>$status,
|
||||
));
|
||||
|
||||
header('Location: '.SITE_URL.'index.php?app=user&ac=admin&mg=score&ts=list');
|
||||
|
||||
break;
|
||||
|
||||
//加积分
|
||||
case "send":
|
||||
|
||||
include template('admin/score_send');
|
||||
|
||||
break;
|
||||
|
||||
case "senddo":
|
||||
|
||||
$userid = tsIntval($_POST['userid']);
|
||||
$score = tsIntval($_POST['score']);
|
||||
$status = tsIntval($_POST['status']);
|
||||
$scorename = tsTrim($_POST['scorename']);
|
||||
|
||||
if($userid && $score && $scorename){
|
||||
|
||||
$return = false;
|
||||
|
||||
if($status==1){
|
||||
//减积分
|
||||
$return = $new['user']->delScore($userid,$scorename,$score);
|
||||
$jiajian = '减去';
|
||||
}else{
|
||||
//加积分
|
||||
$return = $new['user']->addScore($userid,$scorename,$score,1);
|
||||
$jiajian = '增加';
|
||||
}
|
||||
|
||||
if($return==true){
|
||||
//发送系统消息
|
||||
$msg_userid = '0';
|
||||
$msg_touserid = $userid;
|
||||
$msg_content = $scorename.$jiajian.$score.'积分';
|
||||
aac('message')->sendmsg($msg_userid,$msg_touserid,$msg_content);
|
||||
}
|
||||
|
||||
qiMsg('操作成功!');
|
||||
}else{
|
||||
qiMsg('操作失败!');
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case "delete":
|
||||
$scoreid = tsIntval($_GET['scoreid']);
|
||||
|
||||
$new['user']->delete('user_score',array(
|
||||
'scoreid'=>$scoreid,
|
||||
));
|
||||
|
||||
qiMsg('删除成功!');
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,403 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
switch($ts){
|
||||
|
||||
//用户列表
|
||||
case "list":
|
||||
|
||||
$page = tsIntval($_GET['page'],1);
|
||||
|
||||
$userid = tsIntval($_GET['userid']);
|
||||
$username = tsFilter($_GET['username']);
|
||||
|
||||
$arrData = null;
|
||||
if($userid > 0 && $username==''){
|
||||
$arrData = array('userid'=>$userid);
|
||||
}elseif($userid==0 && $username != ''){
|
||||
$arrData = array('username'=>$username);
|
||||
}elseif($userid>0 && $username != ''){
|
||||
$arrData = array('userid'=>$userid,'username'=>$username);
|
||||
}
|
||||
|
||||
$lstart = $page*20-20;
|
||||
|
||||
$url = SITE_URL.'index.php?app=user&ac=admin&mg=user&ts=list&userid='.$userid.'&username='.$username.'&page=';
|
||||
|
||||
$arrAllUser = $new['user']->findAll('user_info',$arrData,'userid desc',null,$lstart.',20');
|
||||
|
||||
$userNum = $new['user']->findCount('user_info');
|
||||
|
||||
$pageUrl = pagination($userNum, 20, $page, $url);
|
||||
|
||||
|
||||
#用户组
|
||||
$arrUg = $new['user']->findAll('user_group',"`ugid`!=4",'ugid asc');
|
||||
foreach($arrUg as $key=>$item){
|
||||
$arrUg1[$item['ugid']] = $item['ugname'];
|
||||
}
|
||||
|
||||
|
||||
include template("admin/user_list");
|
||||
|
||||
break;
|
||||
|
||||
//用户编辑
|
||||
case "edit":
|
||||
$userid = $_GET['userid'];
|
||||
$strUser = $new['user']->getOneUser($userid);
|
||||
|
||||
include template("admin/user_edit");
|
||||
break;
|
||||
|
||||
//用户查看
|
||||
case "view":
|
||||
$userid = $_GET['userid'];
|
||||
|
||||
$strUser = $new['user']->getOneUser($userid);
|
||||
|
||||
include template("admin/user_view");
|
||||
break;
|
||||
|
||||
//用户停用启用
|
||||
case "isenable":
|
||||
|
||||
$userid = tsIntval($_GET['userid']);
|
||||
|
||||
if($userid==1) qiMsg('无法停用该用户!');
|
||||
|
||||
$page = tsIntval($_GET['page']);
|
||||
|
||||
$strUser = $new['user']->find('user_info',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
|
||||
if($strUser['isadmin']==1) qiMsg('管理员不能停用!');
|
||||
|
||||
//禁用
|
||||
if($strUser['isenable']==0){
|
||||
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'isenable'=>1,
|
||||
));
|
||||
|
||||
//封用户Id
|
||||
$isuser = $new['user']->findCount('anti_user',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
if($isuser==0){
|
||||
$new['user']->create('anti_user',array(
|
||||
'userid'=>$userid,
|
||||
'addtime'=>date('Y-m-d H:i:s'),
|
||||
));
|
||||
}
|
||||
|
||||
//封IP
|
||||
$isip = $new['user']->findCount('anti_ip',array(
|
||||
'ip'=>$strUser['ip']
|
||||
));
|
||||
if($isip==0 && $strUser['ip']){
|
||||
$new['user']->create('anti_ip',array(
|
||||
'ip'=>$strUser['ip'],
|
||||
'addtime'=>date('Y-m-d H:i:s'),
|
||||
));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
//启用
|
||||
if($strUser['isenable']==1){
|
||||
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'isenable'=>0,
|
||||
));
|
||||
|
||||
$new['user']->delete('anti_user',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
$new['user']->delete('anti_ip',array(
|
||||
'ip'=>$strUser['ip'],
|
||||
));
|
||||
}
|
||||
|
||||
#qiMsg('操作成功!');
|
||||
|
||||
header('Location: '.SITE_URL.'index.php?app=user&ac=admin&mg=user&ts=list&page='.$page);
|
||||
|
||||
break;
|
||||
|
||||
//修改密码
|
||||
case "pwd":
|
||||
|
||||
$userid = tsIntval($_GET['userid']);
|
||||
|
||||
$strUser = $new['user']->find('user',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
|
||||
include template('admin/user_pwd');
|
||||
break;
|
||||
|
||||
//执行修改密码
|
||||
case "pwddo":
|
||||
|
||||
$userid = tsIntval($_POST['userid']);
|
||||
|
||||
$pwd = tsTrim($_POST['pwd']);
|
||||
|
||||
if($pwd == '') qiMsg('密码不能为空!');
|
||||
|
||||
$strUser = $new['user']->find('user',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
|
||||
$salt = md5(rand());
|
||||
|
||||
$new['user']->update('user',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'pwd'=>md5($salt.$pwd),
|
||||
'salt'=>$salt,
|
||||
));
|
||||
|
||||
qiMsg('密码修改成功:'.$pwd);
|
||||
|
||||
break;
|
||||
|
||||
//清空用户数据
|
||||
case "deldata":
|
||||
$userid = tsIntval($_GET['userid']);
|
||||
|
||||
if($userid==1) qiMsg('该用户数据无法清空!');
|
||||
|
||||
aac('user')->toEmpty($userid);
|
||||
qiMsg('清空数据成功!');
|
||||
|
||||
break;
|
||||
|
||||
//管理员
|
||||
case "admin":
|
||||
|
||||
$userid = tsIntval($_GET['userid']);
|
||||
|
||||
if($userid==1) qiMsg('该用户无法取消管理员!');
|
||||
|
||||
$strUser = $new['user']->find('user_info',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
|
||||
if($strUser['isadmin']==1){
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'isadmin'=>'0',
|
||||
'isverify'=>'0',
|
||||
'isverifyphone'=>'0',
|
||||
'isrenzheng'=>'0',
|
||||
));
|
||||
}elseif($strUser['isadmin']==0){
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'isadmin'=>'1',//系统管理员
|
||||
'isverify'=>'1',//Email验证
|
||||
'isverifyphone'=>'1',//手机号验证
|
||||
'isrenzheng'=>'1',//人工认证
|
||||
));
|
||||
}
|
||||
|
||||
qiMsg('操作成功!');
|
||||
|
||||
break;
|
||||
|
||||
//清空全部被禁用的用户数据并保存垃圾Email
|
||||
case "clean":
|
||||
|
||||
$arrUser = $new['user']->findAll('user_info',array(
|
||||
'isenable'=>1,
|
||||
));
|
||||
foreach($arrUser as $key=>$item){
|
||||
//执行删除用户数据
|
||||
aac('user')->toEmpty($item['userid']);
|
||||
}
|
||||
|
||||
qiMsg('垃圾用户清空完毕!');
|
||||
|
||||
break;
|
||||
|
||||
case "face":
|
||||
$userid = tsIntval($_GET['userid']);
|
||||
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'path'=>'',
|
||||
'face'=>'',
|
||||
));
|
||||
|
||||
qiMsg('操作成功!');
|
||||
|
||||
break;
|
||||
|
||||
//是否手工认证
|
||||
case "isrenzheng":
|
||||
$userid = tsIntval($_GET['userid']);
|
||||
|
||||
if($userid==1) qiMsg('该用户无法操作!');
|
||||
|
||||
$strUser = $new['user']->find('user_info',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
|
||||
|
||||
//开通认证
|
||||
if($strUser['isrenzheng']==0){
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'isrenzheng'=>1,
|
||||
));
|
||||
|
||||
|
||||
//发系统消息
|
||||
$msg_userid = '0';
|
||||
$msg_touserid = $userid;
|
||||
$msg_content = '恭喜你,系统已经通过你的个人信息认证!';
|
||||
aac('message')->sendmsg($msg_userid,$msg_touserid,$msg_content);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
//取消认证
|
||||
if($strUser['isrenzheng']==1){
|
||||
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'isrenzheng'=>0,
|
||||
));
|
||||
|
||||
//发系统消息
|
||||
$msg_userid = '0';
|
||||
$msg_touserid = $userid;
|
||||
$msg_content = '很抱歉,系统取消了你的个人信息认证!';
|
||||
aac('message')->sendmsg($msg_userid,$msg_touserid,$msg_content);
|
||||
|
||||
}
|
||||
|
||||
qiMsg('操作成功!');
|
||||
break;
|
||||
|
||||
case "isverify":
|
||||
|
||||
$userid = tsIntval($_GET['userid']);
|
||||
$strUser = $new['user']->find('user_info',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
|
||||
if($strUser['isverify']==0){
|
||||
$isverify = 1;
|
||||
}else{
|
||||
$isverify = 0;
|
||||
}
|
||||
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'isverify'=>$isverify,
|
||||
));
|
||||
|
||||
qiMsg('操作成功!');
|
||||
|
||||
break;
|
||||
|
||||
case "isverifyphone":
|
||||
|
||||
$userid = tsIntval($_GET['userid']);
|
||||
$strUser = $new['user']->find('user_info',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
|
||||
if($strUser['isverifyphone']==0){
|
||||
$isverifyphone = 1;
|
||||
}else{
|
||||
$isverifyphone = 0;
|
||||
}
|
||||
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'isverifyphone'=>$isverifyphone,
|
||||
));
|
||||
|
||||
qiMsg('操作成功!');
|
||||
|
||||
break;
|
||||
|
||||
case "ugid":
|
||||
|
||||
$userid = tsIntval($_POST['userid']);
|
||||
$ugid = tsIntval($_POST['ugid']);
|
||||
|
||||
if($userid==1) $ugid=1;
|
||||
|
||||
if($ugid==4) qiMsg('非法操作!');
|
||||
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'ugid'=>$ugid,
|
||||
));
|
||||
|
||||
break;
|
||||
|
||||
case "add":
|
||||
|
||||
include template('admin/user_add');
|
||||
break;
|
||||
|
||||
case "adddo":
|
||||
|
||||
$email = tsTrim($_POST['email']);
|
||||
$username = tsTrim($_POST['username']);
|
||||
$pwd = tsTrim($_POST['pwd']);
|
||||
|
||||
if($email=='' || $username=='' || $pwd==''){
|
||||
qiMsg('信息输入不完整');
|
||||
}
|
||||
|
||||
#判断Email是否存在
|
||||
$isEmail = $new['user']->findCount('user',array(
|
||||
'email'=>$email,
|
||||
));
|
||||
|
||||
if($isEmail > 0){
|
||||
qiMsg('账号已经注册');
|
||||
}
|
||||
|
||||
if(count_string_len($username) < 4 || count_string_len($username) > 20){
|
||||
qiMsg('姓名长度必须在4和20之间');
|
||||
}
|
||||
|
||||
#判断用户名是否存在
|
||||
$isUserName = $new['user']->findCount('user_info',array(
|
||||
'username'=>$username,
|
||||
));
|
||||
|
||||
if($isUserName > 0){
|
||||
qiMsg('用户名已经存在,请换个用户名!');
|
||||
}
|
||||
|
||||
$new['user']->register($email,$username,$pwd,$fuserid,$invitecode,1);
|
||||
|
||||
header('Location: '.SITE_URL.'index.php?app=user&ac=admin&mg=user&ts=list');
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
$userid = tsIntval($TS_USER['userid']);
|
||||
|
||||
if($userid){
|
||||
|
||||
//过滤用户
|
||||
$tsSystemAntiUser = aac('system')->antiUser();
|
||||
if($tsSystemAntiUser){
|
||||
if(in_array($userid,$tsSystemAntiUser)){
|
||||
aac('user')->logout();
|
||||
}
|
||||
}
|
||||
|
||||
echo 1;
|
||||
|
||||
}else{
|
||||
echo 0;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
defined ( 'IN_TS' ) or die ( 'Access Denied.' );
|
||||
|
||||
// api入口
|
||||
if (is_file ( 'app/' . $TS_URL['app'] . '/action/api/' . $TS_URL['api'] . '.php' )) {
|
||||
include_once 'app/' . $TS_URL['app'] . '/action/api/' . $TS_URL['api'] . '.php';
|
||||
} else {
|
||||
qiMsg ( 'sorry:no api!' );
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
echo '<pre>
|
||||
-----------------------------------------------
|
||||
User Http Api List
|
||||
URL:https://demo.thinksaas.cn
|
||||
-----------------------------------------------
|
||||
-----------------------------------------------
|
||||
-----------------------------------------------
|
||||
-----------------------------------------------
|
||||
-----------------------------------------------
|
||||
-----------------------------------------------
|
||||
-----------------------------------------------
|
||||
-----------------------------------------------
|
||||
-----------------------------------------------
|
||||
-----------------------------------------------
|
||||
-----------------------------------------------
|
||||
-----------------------------------------------
|
||||
-----------------------------------------------
|
||||
-----------------------------------------------
|
||||
</pre>';
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
include 'userinfo.php';
|
||||
|
||||
$page = tsIntval($_GET['page'],1);
|
||||
$url = tsUrl ( 'user', 'article', array ('id'=>$strUser['userid'],'page' => '' ) );
|
||||
$lstart = $page * 20 - 20;
|
||||
|
||||
$arrArticle = $new ['user']->findAll ( 'article', array (
|
||||
'userid' => $strUser['userid'],
|
||||
), 'addtime desc','articleid,userid,cateid,title,gaiyao,score,path,photo,count_comment,count_love,count_view,addtime', $lstart . ',20' );
|
||||
|
||||
foreach($arrArticle as $key=>$item){
|
||||
$arrArticle [$key]['title'] = tsTitle($item['title']);
|
||||
$arrArticle [$key]['gaiyao'] = tsTitle($item['gaiyao']);
|
||||
$arrArticle [$key] ['cate'] = $new ['user']->find( 'article_cate', array (
|
||||
'cateid' => $item ['cateid']
|
||||
) );
|
||||
}
|
||||
|
||||
$articleNum = $new ['user']->findCount ( 'article', array (
|
||||
'userid' => $strUser['userid'],
|
||||
) );
|
||||
|
||||
$pageUrl = pagination ( $articleNum, 20, $page, $url );
|
||||
|
||||
$title = $strUser['username'].'的文章';
|
||||
include template('article');
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
include 'userinfo.php';
|
||||
|
||||
$page = isset($_GET['page']) ? intval($_GET['page']) : '1';
|
||||
$url = tsUrl('user','collect',array('id'=>$strUser['userid'],'page'=>''));
|
||||
$lstart = $page*30-30;
|
||||
|
||||
$arrTopicLists = $new['user']->findAll('group_topic_collect',array(
|
||||
'userid'=>$strUser['userid'],
|
||||
),'addtime desc',null,$lstart.',30');
|
||||
|
||||
foreach($arrTopicLists as $key=>$item){
|
||||
$arrTopicList[] = aac('group')->getOneTopic($item['topicid']);
|
||||
}
|
||||
|
||||
$topicNum = $new['user']->findCount('group_topic_collect',array(
|
||||
'userid'=>$strUser['userid'],
|
||||
));
|
||||
$pageUrl = pagination($topicNum, 30, $page, $url);
|
||||
|
||||
$title = $strUser['username'].'的喜欢';
|
||||
include template('collect');
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
include 'userinfo.php';
|
||||
|
||||
$page = isset($_GET['page']) ? intval($_GET['page']) : '1';
|
||||
$url = tsUrl('user','comment',array('id'=>$strUser['userid'],'page'=>''));
|
||||
$lstart = $page*20-20;
|
||||
|
||||
$arrComments = $new['user']->findAll('group_topic_comment',array(
|
||||
'userid'=>$strUser['userid'],
|
||||
),'addtime desc',null,$lstart.',20');
|
||||
|
||||
foreach($arrComments as $key=>$item){
|
||||
$arrComment[] = $item;
|
||||
$arrComment[$key]['topic']=aac('group')->getOneTopic($item['topicid']);
|
||||
}
|
||||
|
||||
$commentNum = $new['user']->findCount('group_topic_comment',array(
|
||||
'userid'=>$strUser['userid'],
|
||||
));
|
||||
|
||||
$pageUrl = pagination($commentNum, 20, $page, $url);
|
||||
|
||||
$title = $strUser['username'].'的评论';
|
||||
|
||||
//SEO
|
||||
$sitekey = '';
|
||||
$sitedesc = '';
|
||||
|
||||
|
||||
|
||||
include template('comment');
|
||||
@@ -0,0 +1,123 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
switch($ts){
|
||||
case "":
|
||||
include 'userinfo.php';
|
||||
|
||||
$page = tsIntval($_GET['page'],1);
|
||||
$url = tsUrl('user','follow',array('id'=>$strUser['userid'],'page'=>''));
|
||||
$lstart = $page*80-80;
|
||||
|
||||
//关注的用户
|
||||
$arrUsers = $new['user']->findAll('user_follow',array(
|
||||
'userid'=>$strUser['userid'],
|
||||
),'addtime desc',null,$lstart.',80');
|
||||
|
||||
$userNum = $new['user']->findCount('user_follow',array(
|
||||
'userid'=>$strUser['userid'],
|
||||
));
|
||||
$pageUrl = pagination($userNum, 80, $page, $url);
|
||||
|
||||
if(is_array($arrUsers)){
|
||||
foreach($arrUsers as $item){
|
||||
$arrUser[] = $new['user']->getSimpleUser($item['touserid']);
|
||||
}
|
||||
}
|
||||
|
||||
$title = $strUser['username'].'关注的人';
|
||||
include template("follow");
|
||||
|
||||
break;
|
||||
|
||||
//关注执行
|
||||
case "do":
|
||||
|
||||
$userid = tsIntval($TS_USER['userid']);
|
||||
$touserid = tsIntval($_POST['userid']);
|
||||
|
||||
|
||||
if($userid == 0){
|
||||
echo json_encode(array(
|
||||
'status'=>0,
|
||||
'msg'=>'你还没有登录!',
|
||||
));
|
||||
exit;
|
||||
}
|
||||
|
||||
if($userid == $touserid){
|
||||
echo json_encode(array(
|
||||
'status'=>0,
|
||||
'msg'=>'自己不能关注自己哦',
|
||||
));
|
||||
exit;
|
||||
}
|
||||
|
||||
$isFollow = $new['user']->findCount('user_follow',array(
|
||||
'userid'=>$userid,
|
||||
'touserid'=>$touserid,
|
||||
));
|
||||
|
||||
if($isFollow>0){
|
||||
|
||||
echo json_encode(array(
|
||||
'status'=>1,
|
||||
'msg'=>'你已经关注此用户!',
|
||||
));
|
||||
exit;
|
||||
|
||||
}
|
||||
|
||||
$new['user']->create('user_follow',array(
|
||||
'userid'=>$userid,
|
||||
'touserid'=>$touserid,
|
||||
));
|
||||
|
||||
//统计用户关注数和粉丝数
|
||||
$new['user']->countFollowFans($userid);
|
||||
$new['user']->countFollowFans($touserid);
|
||||
|
||||
|
||||
#发个消息
|
||||
|
||||
|
||||
echo json_encode(array(
|
||||
'status'=>2,
|
||||
'msg'=>'关注成功!',
|
||||
));
|
||||
exit;
|
||||
|
||||
break;
|
||||
|
||||
//取消关注
|
||||
case "un":
|
||||
|
||||
$userid = tsIntval($TS_USER['userid']);
|
||||
$touserid = tsIntval($_POST['userid']);
|
||||
|
||||
|
||||
if($userid == 0){
|
||||
echo json_encode(array(
|
||||
'status'=>0,
|
||||
'msg'=>'你还没有登录!',
|
||||
));
|
||||
exit;
|
||||
}
|
||||
|
||||
$new['user']->delete('user_follow',array(
|
||||
'userid'=>$userid,
|
||||
'touserid'=>$touserid,
|
||||
));
|
||||
|
||||
//统计用户关注数和粉丝数
|
||||
$new['user']->countFollowFans($userid);
|
||||
$new['user']->countFollowFans($touserid);
|
||||
|
||||
echo json_encode(array(
|
||||
'status'=>1,
|
||||
'msg'=>'解除关注成功',
|
||||
));
|
||||
exit;
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
include 'userinfo.php';
|
||||
|
||||
$page = tsIntval($_GET['page'],1);
|
||||
$url = tsUrl('user','followed',array('id'=>$strUser['userid'],'page'=>''));
|
||||
$lstart = $page*80-80;
|
||||
|
||||
//跟随他的用户
|
||||
$arrUsers = $new['user']->findAll('user_follow',array(
|
||||
'touserid'=>$strUser['userid'],
|
||||
),'addtime desc',null,$lstart.',80');
|
||||
|
||||
$userNum = $new['user']->findCount('user_follow',array(
|
||||
'touserid'=>$strUser['userid'],
|
||||
));
|
||||
$pageUrl = pagination($userNum, 80, $page, $url);
|
||||
|
||||
if(is_array($arrUsers)){
|
||||
foreach($arrUsers as $item){
|
||||
$arrUser[$key] = $new['user']->getSimpleUser($item['userid']);
|
||||
}
|
||||
}
|
||||
|
||||
$title = $strUser['username'].'的粉丝';
|
||||
include template('followed');
|
||||
@@ -0,0 +1,143 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
|
||||
switch($ts){
|
||||
|
||||
/**
|
||||
* 通过Email找回密码
|
||||
*/
|
||||
case "":
|
||||
|
||||
if ($GLOBALS['TS_USER']){
|
||||
header('Location: '.SITE_URL);
|
||||
exit;
|
||||
}
|
||||
|
||||
$title = '找回登陆密码';
|
||||
include template("forgetpwd");
|
||||
|
||||
break;
|
||||
|
||||
/**
|
||||
* 重置Email密码
|
||||
*/
|
||||
case "resetpwd":
|
||||
|
||||
$js = tsIntval($_GET['js']);
|
||||
|
||||
|
||||
$email = tsTrim($_POST['email']);
|
||||
$pwd = tsTrim($_POST['pwd']);
|
||||
$authcode = strtolower($_POST['authcode']);
|
||||
$emailcode = tsTrim($_POST['emailcode']);
|
||||
|
||||
if($email == '' || $pwd=='' || $authcode=='' || $emailcode==''){
|
||||
getJson('所有输入项都不能为空',$js);
|
||||
}
|
||||
|
||||
if(valid_email($email)==false){
|
||||
getJson('Email邮箱输入不正确',$js);
|
||||
}
|
||||
|
||||
$strUser = $new['user']->find('user',array(
|
||||
'email'=>$email,
|
||||
));
|
||||
|
||||
if($strUser==''){
|
||||
getJson("Email邮箱不存在,你可能还没有注册^_^",$js);
|
||||
}
|
||||
|
||||
|
||||
if ($authcode != $_SESSION['verify']) {
|
||||
getJson('图片验证码输入有误,请重新输入!', $js);
|
||||
}
|
||||
|
||||
|
||||
#验证手机验证码
|
||||
if(aac('pubs')->verifyEmailCode($email,$emailcode)==false){
|
||||
getJson('Email验证码输入有误',$js);
|
||||
}
|
||||
|
||||
$salt = md5(rand());
|
||||
|
||||
$new['user']->update('user',array(
|
||||
'userid'=>$strUser['userid'],
|
||||
),array(
|
||||
'pwd'=>md5($salt.$pwd),
|
||||
'salt'=>$salt,
|
||||
));
|
||||
|
||||
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$strUser['userid'],
|
||||
),array(
|
||||
'email'=>$strUser['email'],
|
||||
'isverify'=>'1',
|
||||
));
|
||||
|
||||
$_SESSION['tsuser']['isverify']=1;
|
||||
|
||||
getJson('密码修改成功!',$js,2,tsUrl('user','login'));
|
||||
|
||||
break;
|
||||
|
||||
/**
|
||||
* 通过手机号找回密码
|
||||
*/
|
||||
case "phone":
|
||||
|
||||
$title = '找回登陆密码';
|
||||
include template("forgetpwd_phone");
|
||||
|
||||
break;
|
||||
|
||||
//执行登录
|
||||
case "do":
|
||||
|
||||
$js = tsIntval($_GET['js']);
|
||||
|
||||
|
||||
$email = tsTrim($_POST['email']);
|
||||
|
||||
if(valid_email($email)==false){
|
||||
getJson('Email输入不正确',$js);
|
||||
}
|
||||
|
||||
$emailNum = $new['user']->findCount('user',array(
|
||||
'email'=>$email,
|
||||
));
|
||||
|
||||
if($email==''){
|
||||
getJson('Email输入不能为空^_^',$js);
|
||||
}elseif($emailNum == '0'){
|
||||
getJson("Email不存在,你可能还没有注册^_^",$js);
|
||||
}else{
|
||||
|
||||
//加密
|
||||
$resetpwd = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36);
|
||||
|
||||
$new['user']->update('user',array(
|
||||
'email'=>$email,
|
||||
),array(
|
||||
'resetpwd'=>$resetpwd,
|
||||
));
|
||||
|
||||
//发送邮件
|
||||
$subject = $TS_SITE['site_title'].'会员密码找回';
|
||||
|
||||
$content = '您的登陆信息:<br />Email:'.$email.'<br />重设密码链接:<br /><a href="'.$TS_SITE['site_url'].'index.php?app=user&ac=resetpwd&mail='.$email.'&set='.$resetpwd.'">'.$TS_SITE['site_url'].'index.php?app=user&ac=resetpwd&mail='.$email.'&set='.$resetpwd.'</a>';
|
||||
|
||||
$result = aac('mail')->postMail($email,$subject,$content);
|
||||
|
||||
if($result == '0'){
|
||||
getJson('找回密码所需信息不完整^_^',$js);
|
||||
}elseif($result == '1'){
|
||||
getJson('系统已经向你的邮箱发送了邮件,请尽快查收^_^',$js);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
include 'userinfo.php';
|
||||
|
||||
$arrGroupsList = $new['user']->findAll('group_user',array(
|
||||
'userid'=>$strUser['userid'],
|
||||
),null,'groupid');
|
||||
|
||||
|
||||
foreach($arrGroupsList as $key=>$item){
|
||||
$arrGroupList[] = aac('group')->getOneGroup($item['groupid']);
|
||||
}
|
||||
|
||||
|
||||
$title = $strUser['username'].'的小组';
|
||||
include template('group');
|
||||
@@ -0,0 +1,130 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
switch($ts){
|
||||
|
||||
case "":
|
||||
|
||||
include 'userinfo.php';
|
||||
|
||||
$page = tsIntval($_GET['page'],1);
|
||||
$url = tsUrl('user','guestbook',array('id'=>$strUser['userid'],'page'=>''));
|
||||
$lstart = $page*20-20;
|
||||
|
||||
$arrGuestList = $new['user']->findAll('user_gb',array(
|
||||
'touserid'=>$strUser['userid'],
|
||||
),'addtime desc',null,$lstart.',20');
|
||||
|
||||
foreach($arrGuestList as $key=>$item){
|
||||
$arrGuestList[$key]['content'] = tsTitle($item['content']);
|
||||
$arrGuestList[$key]['user']=$new['user']->getSimpleUser($item['userid']);
|
||||
|
||||
$arrGuestList[$key]['reply'] = $new['user']->find('user_gb',array(
|
||||
'reid'=>$item['id'],
|
||||
));
|
||||
if($arrGuestList[$key]['reply']){
|
||||
$arrGuestList[$key]['reply']['content'] = tsTitle($arrGuestList[$key]['reply']['content']);
|
||||
}
|
||||
}
|
||||
|
||||
$guestNum = $new['user']->findCount('user_gb',array(
|
||||
'touserid'=>$strUser['userid'],
|
||||
));
|
||||
|
||||
$pageUrl = pagination($guestNum, 20, $page, $url);
|
||||
|
||||
$title = $strUser['username'].'的留言板';
|
||||
include template('guestbook');
|
||||
|
||||
break;
|
||||
|
||||
case "do":
|
||||
|
||||
$userid = $new['user']->isLogin();
|
||||
$touserid = tsIntval($_POST['touserid']);
|
||||
$content = tsTrim($_POST['content']);
|
||||
|
||||
if($content == ''){
|
||||
|
||||
tsNotice('留言内容不能为空!');
|
||||
|
||||
}
|
||||
|
||||
$content = antiWord($content);
|
||||
|
||||
$new['user']->create('user_gb',array(
|
||||
'userid'=>$userid,
|
||||
'touserid'=>$touserid,
|
||||
'content'=>$content,
|
||||
'addtime'=>date('Y-m-d H:i:s'),
|
||||
));
|
||||
|
||||
//发送系统消息
|
||||
$msg_userid = '0';
|
||||
$msg_touserid = $touserid;
|
||||
$msg_content = '有人在你的留言板上留言了哦,快去看看吧';
|
||||
$msg_tourl = tsUrl('user','space',array('id'=>$touserid));
|
||||
aac('message')->sendmsg($msg_userid,$msg_touserid,$msg_content,$msg_tourl);
|
||||
|
||||
#tsNotice('留言成功!');
|
||||
header('Location: '.tsUrl('user','guestbook',array('id'=>$touserid)));
|
||||
exit;
|
||||
|
||||
break;
|
||||
|
||||
case "redo":
|
||||
$userid = $new['user']->isLogin();
|
||||
$touserid = tsIntval($_POST['touserid']);
|
||||
$reid = tsIntval($_POST['reid']);
|
||||
$content = tsTrim($_POST['content']);
|
||||
|
||||
$arrContent = explode('#',$content);
|
||||
|
||||
$content = $arrContent['1'];
|
||||
|
||||
if($content==''){
|
||||
tsNotice('留言不能为空!');
|
||||
}
|
||||
|
||||
$content = antiWord($content);
|
||||
|
||||
$new['user']->create('user_gb',array(
|
||||
'userid'=>$userid,
|
||||
'reid'=>$reid,
|
||||
'touserid'=>$touserid,
|
||||
'content'=>$content,
|
||||
'addtime'=>date('Y-m-d H:i:s'),
|
||||
));
|
||||
|
||||
//发送系统消息
|
||||
$msg_userid = '0';
|
||||
$msg_touserid = $touserid;
|
||||
$msg_content = '有人在你的留言板上留言了哦,快去看看吧!';
|
||||
$msg_tourl = tsUrl('user','guestbook',array('id'=>$touserid));
|
||||
aac('message')->sendmsg($msg_userid,$msg_touserid,$msg_content,$msg_tourl);
|
||||
tsNotice('回复成功!');
|
||||
break;
|
||||
|
||||
//删除留言
|
||||
case "delete":
|
||||
|
||||
$userid = $new['user']->isLogin();
|
||||
$gbid = tsIntval($_GET['gbid']);
|
||||
|
||||
$strGuest = $new['user']->find('user_gb',array(
|
||||
'id'=>$gbid,
|
||||
));
|
||||
|
||||
if($strGuest['touserid'] == $userid){
|
||||
|
||||
$new['user']->delete('user_gb',array(
|
||||
'id'=>$gbid,
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
tsNotice('留言删除成功');
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
//最多积分用户
|
||||
$arrScoreUser = $new['user']->getScoreUser(10);
|
||||
|
||||
//关注最多的用户
|
||||
$arrFollowUser = $new['user']->getFollowUser(10);
|
||||
|
||||
//活跃会员
|
||||
$arrHotUser = $new['user']->getHotUser(10);
|
||||
|
||||
//最新会员
|
||||
$arrNewUser = $new['user']->getNewUser(10);
|
||||
|
||||
$title = '用户';
|
||||
|
||||
$sitekey = $TS_APP['appkey'];
|
||||
$sitedesc = $TS_APP['appdesc'];
|
||||
|
||||
include template('index');
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
//用户是否登录
|
||||
$userid = aac('user')->isLogin();
|
||||
|
||||
$strUser = $new['user']->find('user_info',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
|
||||
//邀请好友
|
||||
switch($ts){
|
||||
case "":
|
||||
|
||||
//计算是否还有邀请码
|
||||
$codeNum = $new['user']->findCount('user_invites',array(
|
||||
'userid'=>$userid,
|
||||
'isused'=>0,
|
||||
));
|
||||
|
||||
$arrCode = $new['user']->findAll('user_invites',array(
|
||||
'userid'=>$userid,
|
||||
'isused'=>0,
|
||||
));
|
||||
|
||||
|
||||
|
||||
#邀请的用户
|
||||
$arrInviteUser = $new['user']->findAll('user_info',array(
|
||||
'fuserid'=>$userid,
|
||||
),'addtime desc','userid,username');
|
||||
|
||||
|
||||
$title = '邀请码';
|
||||
include template("invite");
|
||||
|
||||
break;
|
||||
|
||||
//取邀请码
|
||||
case "code":
|
||||
|
||||
//计算是否还有邀请码
|
||||
$codeNum = $new['user']->findCount('user_invites',array(
|
||||
'userid'=>$userid,
|
||||
'isused'=>0,
|
||||
));
|
||||
|
||||
if($codeNum == 0 && $TS_USER['isadmin']==1){
|
||||
|
||||
//当数据库中没码的时间生成10个码
|
||||
for($i=1;$i<=10;$i++){
|
||||
|
||||
$new['user']->create('user_invites',array(
|
||||
'userid'=>$userid,
|
||||
'invitecode'=>random(18).$userid,
|
||||
'addtime'=>time(),
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
header('Location: '.tsUrl('user','invite'));
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
use EasyWeChat\Factory;
|
||||
|
||||
if(tsIntval($TS_USER['userid']) > 0) {
|
||||
header('Location: '.SITE_URL);exit;
|
||||
}
|
||||
|
||||
#微信公众号授权
|
||||
if(isWeixin()==true && $TS_SITE['is_weixin']==1){
|
||||
$config = [
|
||||
'app_id' => $TS_SITE['weixin_appid'],
|
||||
'oauth' => [
|
||||
'scopes' => ['snsapi_userinfo'],
|
||||
'callback' => SITE_URL.'index.php?app=user&ac=wxlogin',
|
||||
],
|
||||
];
|
||||
$app = Factory::officialAccount($config);
|
||||
$oauth = $app->oauth;
|
||||
$oauth->redirect()->send();
|
||||
exit();
|
||||
}
|
||||
|
||||
//程序主体
|
||||
switch($ts){
|
||||
case "":
|
||||
|
||||
|
||||
//记录上次访问地址
|
||||
$jump = $_SERVER['HTTP_REFERER'];
|
||||
|
||||
$title = '登录';
|
||||
include template("login");
|
||||
break;
|
||||
|
||||
//执行登录
|
||||
case "do":
|
||||
|
||||
//用于JS提交验证
|
||||
$js = tsIntval($_GET['js']);
|
||||
|
||||
$ad = tsIntval($_POST['ad']);
|
||||
|
||||
/*禁止以下IP用户登陆或注册*/
|
||||
/*
|
||||
$arrIp = aac('system')->antiIp();
|
||||
if(in_array(getIp(),$arrIp)){
|
||||
getJson('你的IP已被锁定,暂无法登录!',$js);
|
||||
}
|
||||
*/
|
||||
|
||||
$jump = tsTrim($_POST['jump']);
|
||||
|
||||
$email = tsTrim($_POST['email']);
|
||||
|
||||
$pwd = tsTrim($_POST['pwd']);
|
||||
|
||||
$cktime = tsIntval($_POST['cktime']);
|
||||
|
||||
|
||||
#人机验证
|
||||
$vaptcha_token = tsTrim($_POST ['vaptcha_token']);
|
||||
$vaptcha_server = tsTrim($_POST ['vaptcha_server']);
|
||||
if ($TS_SITE['is_vaptcha'] && $ad==0) {
|
||||
$strVt = vaptcha($vaptcha_token,0,$vaptcha_server);
|
||||
if($strVt['success']==0) {
|
||||
getJson('人机验证未通过!',$js);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($email=='' || $pwd=='') getJson('账号和密码都不能为空!',$js);
|
||||
|
||||
#先判断是否是Email
|
||||
if(valid_email($email)==true){
|
||||
|
||||
$strUser = $new['user']->find('user',array(
|
||||
'email'=>$email,
|
||||
));
|
||||
|
||||
//if($strUser == '') getJson('Email不存在,你可能还没有注册!',$js);
|
||||
if($strUser == '') getJson('账号/密码输入有误!',$js);
|
||||
|
||||
}else{
|
||||
|
||||
#判断是否是手机号
|
||||
if(isPhone($email)==true){
|
||||
|
||||
$strUser = $new['user']->find('user',array(
|
||||
'phone'=>$email,
|
||||
));
|
||||
|
||||
#if($strUser == '') getJson('手机号不存在,你可能还没有注册!',$js);
|
||||
if($strUser == '') getJson('账号/密码输入有误!',$js);
|
||||
|
||||
}else{
|
||||
#getJson('账号不存在,你可能还没有注册!',$js);
|
||||
getJson('账号/密码输入有误!',$js);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(md5($strUser['salt'].$pwd)!==$strUser['pwd']) {
|
||||
#getJson('密码错误!',$js);
|
||||
getJson('账号/密码输入有误!',$js);
|
||||
}
|
||||
|
||||
$new['user']->login($strUser['userid']);
|
||||
|
||||
//对积分进行处理
|
||||
aac('user')->doScore($TS_URL['app'], $TS_URL['ac'],$TS_URL['mg'],$TS_URL['api'], $TS_URL['ts'],0,1);
|
||||
|
||||
if($ad==1){
|
||||
getJson('登录成功!',$js,2,SITE_URL.'index.php?app=system');
|
||||
}
|
||||
|
||||
//跳转
|
||||
if($jump != ''){
|
||||
getJson('登录成功!',$js,2,$jump);
|
||||
}else{
|
||||
|
||||
//登陆是否跳转到我的社区
|
||||
if($TS_SITE['istomy']){
|
||||
getJson('登录成功!',$js,2,tsUrl('my'));
|
||||
}else{
|
||||
getJson('登录成功!',$js,2,SITE_URL);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
aac('user')->logout();
|
||||
//header('Location: '.tsUrl('user','login'));
|
||||
header('Location: '.SITE_URL);
|
||||
exit;
|
||||
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
//用户是否登录
|
||||
$userid = aac('user')->isLogin();
|
||||
|
||||
switch($ts){
|
||||
//发送消息页面
|
||||
case "add":
|
||||
|
||||
$touserid = tsIntval($_GET['touserid']);
|
||||
|
||||
if($userid == $touserid || !$touserid) {
|
||||
tsNotice("Sorry!自己不能给自己发送消息的!& 对方为空!");
|
||||
}
|
||||
|
||||
#互为粉丝的2个人才可以发送消息
|
||||
$isFollow = $new['user']->findCount('user_follow',array(
|
||||
'userid'=>$userid,
|
||||
'touserid'=>$touserid,
|
||||
));
|
||||
|
||||
$isFollow2 = $new['user']->findCount('user_follow',array(
|
||||
'userid'=>$touserid,
|
||||
'touserid'=>$userid,
|
||||
));
|
||||
|
||||
if(($isFollow && $isFollow2) || $TS_USER['isadmin']==1){
|
||||
|
||||
$strUser = $new['user']->getSimpleUser($userid);
|
||||
|
||||
$strTouser = $new['user']->getSimpleUser($touserid);
|
||||
|
||||
if(!$strTouser) tsNotice("Sorry!对方不存在!");
|
||||
$title = "发送短消息";
|
||||
include template("message_add");
|
||||
|
||||
}else{
|
||||
|
||||
tsNotice("互相关注的2个人才可以互相发送私信!");
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case "do":
|
||||
|
||||
$js = tsIntval($_GET['js']);
|
||||
|
||||
$msg_userid = $userid;
|
||||
$msg_touserid = tsIntval($_POST['touserid']);
|
||||
|
||||
if($msg_userid == $msg_touserid || !$msg_touserid) {
|
||||
getJson("Sorry!自己不能给自己发送消息的!& 对方为空!",$js,0);
|
||||
}
|
||||
|
||||
#互为粉丝的2个人才可以发送消息
|
||||
$isFollow = $new['user']->findCount('user_follow',array(
|
||||
'userid'=>$msg_userid,
|
||||
'touserid'=>$msg_touserid,
|
||||
));
|
||||
|
||||
$isFollow2 = $new['user']->findCount('user_follow',array(
|
||||
'userid'=>$msg_touserid,
|
||||
'touserid'=>$msg_userid,
|
||||
));
|
||||
|
||||
if(($isFollow && $isFollow2) || $TS_USER['isadmin']==1){
|
||||
|
||||
$msg_content = tsTrim($_POST['content']);
|
||||
|
||||
if($msg_content==''){
|
||||
getJson('消息内容不能为空!',$js,0);
|
||||
}
|
||||
|
||||
$msg_content = antiWord($msg_content);
|
||||
|
||||
aac('message')->sendmsg($msg_userid,$msg_touserid,$msg_content);
|
||||
|
||||
getJson('消息发送成功',$js,1);
|
||||
|
||||
}else{
|
||||
|
||||
getJson("互相关注的2个人才可以互相发送私信!",$js,0);
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
defined ( 'IN_TS' ) or die ( 'Access Denied.' );
|
||||
|
||||
// 管理入口
|
||||
if (is_file ( 'app/' . $TS_URL['app'] . '/action/my/' . $TS_URL['my'] . '.php' )) {
|
||||
include_once 'app/' . $TS_URL['app'] . '/action/my/common.php';
|
||||
include_once 'app/' . $TS_URL['app'] . '/action/my/' . $TS_URL['my'] . '.php';
|
||||
} else {
|
||||
qiMsg ( 'sorry:no index!' );
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
$userid = aac('user')->isLogin();
|
||||
|
||||
$strUser = aac('user')->getOneUser($userid);
|
||||
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
defined ( 'IN_TS' ) or die ( 'Access Denied.' );
|
||||
|
||||
|
||||
$title = '我的小组';
|
||||
include template('my/index');
|
||||
@@ -0,0 +1,462 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
switch($ts){
|
||||
|
||||
//手机号注册
|
||||
case "":
|
||||
|
||||
if(tsIntval($TS_USER['userid']) > 0) {
|
||||
header('Location: '.SITE_URL);exit;
|
||||
}
|
||||
|
||||
#如果网站只采用Email注册,就跳转到Email注册
|
||||
if($TS_SITE['regtype']==0){
|
||||
header('Location: '.tsUrl('user','register'));exit;
|
||||
}
|
||||
|
||||
//邀请用户ID
|
||||
$fuserid = tsIntval($_GET['fuserid']);
|
||||
|
||||
$title = '手机号注册';
|
||||
|
||||
include template("phone");
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case "do":
|
||||
|
||||
//用于JS提交验证
|
||||
$js = tsIntval($_GET['js']);
|
||||
|
||||
$phone = tsTrim($_POST['email']);
|
||||
$pwd = tsTrim($_POST['pwd']);
|
||||
$repwd = tsTrim($_POST['repwd']);
|
||||
$username = t($_POST['username']);
|
||||
|
||||
$fuserid = tsIntval($_POST['fuserid']);
|
||||
|
||||
$authcode = strtolower($_POST['authcode']);
|
||||
|
||||
$phonecode = tsTrim($_POST['phonecode']);
|
||||
|
||||
|
||||
/*禁止以下IP用户登陆或注册*/
|
||||
$arrIp = aac('system')->antiIp();
|
||||
if(in_array(getIp(),$arrIp)){
|
||||
getJson('你的IP已被锁定,暂无法登录!',$js);
|
||||
}
|
||||
|
||||
|
||||
//是否开启邀请注册
|
||||
if($TS_SITE['isinvite']=='1'){
|
||||
|
||||
$invitecode = tsTrim($_POST['invitecode']);
|
||||
if($invitecode == '') getJson('邀请码不能为空!',$js);
|
||||
|
||||
$codeNum = $new['user']->findCount('user_invites',array(
|
||||
'invitecode'=>$invitecode,
|
||||
'isused'=>0,
|
||||
));
|
||||
|
||||
if($codeNum == 0) getJson('邀请码已经被使用,请更换其他邀请码!',$js);
|
||||
|
||||
}
|
||||
|
||||
if($phone=='' || $pwd=='' || $repwd=='' || $username=='' || $phonecode==''){
|
||||
|
||||
getJson('所有必选项都不能为空!',$js);
|
||||
|
||||
}
|
||||
|
||||
if(isPhone($phone)==false) getJson('手机号输入有误!',$js);
|
||||
|
||||
#验证手机验证码
|
||||
if(aac('pubs')->verifyPhoneCode($phone,$phonecode)==false){
|
||||
getJson('手机验证码输入有误',$js);
|
||||
}
|
||||
|
||||
#手机号是否存在
|
||||
$isPhone = $new['user']->findCount('user',array(
|
||||
'phone'=>$phone,
|
||||
));
|
||||
|
||||
if($isPhone > 0){
|
||||
getJson('手机号已经存在',$js);
|
||||
}
|
||||
|
||||
if($pwd != $repwd){
|
||||
getJson('两次输入密码不正确!',$js);
|
||||
}
|
||||
|
||||
|
||||
if(count_string_len($username) < 4 || count_string_len($username) > 20){
|
||||
getJson('姓名长度必须在4和20之间',$js);
|
||||
}
|
||||
|
||||
#用户名是否存在
|
||||
$isUserName = $new['user']->findCount('user_info',array(
|
||||
'username'=>$username,
|
||||
),'userid');
|
||||
|
||||
if($isUserName > 0){
|
||||
getJson('用户名已经存在,请换个用户名!',$js);
|
||||
}
|
||||
|
||||
|
||||
#验证码
|
||||
if ($authcode != $_SESSION['verify']) {
|
||||
getJson('验证码输入有误,请重新输入!', $js);
|
||||
}
|
||||
|
||||
$salt = md5(rand());
|
||||
|
||||
$userid = $new['user']->create('user',array(
|
||||
'pwd'=>md5($salt.$pwd),
|
||||
'salt'=>$salt,
|
||||
'email'=>$phone,
|
||||
'phone'=>$phone,
|
||||
));
|
||||
|
||||
//插入用户信息
|
||||
$new['user']->create('user_info',array(
|
||||
'userid' => $userid,
|
||||
'fuserid' => $fuserid,
|
||||
'username' => $username,
|
||||
'email' => $phone,
|
||||
'phone' => $phone,
|
||||
'ip' => getIp(),
|
||||
'comefrom'=>'9',
|
||||
'isverifyphone'=>1,
|
||||
'addtime' => time(),
|
||||
'uptime' => time(),
|
||||
));
|
||||
|
||||
//默认加入小组
|
||||
$isGroup = $new['user']->find('user_options',array(
|
||||
'optionname'=>'isgroup',
|
||||
));
|
||||
|
||||
if($isGroup['optionvalue']){
|
||||
$arrGroup = explode(',',$isGroup['optionvalue']);
|
||||
|
||||
if($arrGroup){
|
||||
foreach($arrGroup as $key=>$item){
|
||||
$groupUserNum = $new['user']->findCount('group_user',array(
|
||||
'userid'=>$userid,
|
||||
'groupid'=>$item,
|
||||
));
|
||||
|
||||
if($groupUserNum == 0){
|
||||
$new['user']->create('group_user',array(
|
||||
'userid'=>$userid,
|
||||
'groupid'=>$item,
|
||||
'addtime'=>time(),
|
||||
));
|
||||
|
||||
//统计更新
|
||||
$count_user = $new['user']->findCount('group_user',array(
|
||||
'groupid'=>$item,
|
||||
));
|
||||
|
||||
$new['user']->update('group',array(
|
||||
'groupid'=>$item,
|
||||
),array(
|
||||
'count_user'=>$count_user,
|
||||
));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//用户信息
|
||||
$userData = $new['user']->find('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),'userid,username,email,path,face,isadmin,signin,isverify,isverifyphone,uptime');
|
||||
|
||||
//用户session信息
|
||||
$_SESSION['tsuser'] = $userData;
|
||||
|
||||
//发送消息
|
||||
aac('message')->sendmsg(0,$userid,'亲爱的 '.$username.' :您成功加入了 '.$TS_SITE['site_title'].'。在遵守本站的规定的同时,享受您的愉快之旅吧!');
|
||||
|
||||
//注销邀请码并将关注邀请用户
|
||||
if($TS_SITE['isinvite']=='1'){
|
||||
|
||||
//邀请码信息
|
||||
$strInviteCode = $new['user']->find('user_invites',array(
|
||||
'invitecode'=>$invitecode,
|
||||
));
|
||||
|
||||
$new['user']->create('user_follow',array(
|
||||
'userid'=>$userid,
|
||||
'touserid'=>$strInviteCode['userid'],
|
||||
));
|
||||
|
||||
//注销
|
||||
$new['user']->update('user_invites',array(
|
||||
'invitecode'=>$invitecode,
|
||||
),array(
|
||||
'isused'=>'1',
|
||||
));
|
||||
}
|
||||
|
||||
//对积分进行处理
|
||||
aac('user')->doScore($TS_URL['app'], $TS_URL['ac'],$TS_URL['mg'],$TS_URL['api'], $TS_URL['ts']);
|
||||
|
||||
//跳转
|
||||
getJson('登录成功!',$js,2,SITE_URL);
|
||||
|
||||
break;
|
||||
|
||||
|
||||
//验证手机号
|
||||
case "verify":
|
||||
|
||||
$userid = aac('user')->isLogin();
|
||||
|
||||
$strUser = $new['user']->getOneUser($userid);
|
||||
|
||||
$title = '验证手机号';
|
||||
include template("phone_verify");
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case "verifydo":
|
||||
|
||||
$js = tsIntval($_GET['js']);
|
||||
|
||||
$userid = aac('user')->isLogin();
|
||||
|
||||
$phone = tsTrim($_POST['phone']);
|
||||
|
||||
$authcode = strtolower($_POST['authcode']);
|
||||
$phonecode = tsTrim($_POST['phonecode']);
|
||||
|
||||
if($phone == '' || $authcode=='' || $phonecode==''){
|
||||
getJson('所有输入项都不能为空',$js);
|
||||
}
|
||||
|
||||
if(isPhone($phone)==false){
|
||||
getJson('手机号输入有误!',$js);
|
||||
}
|
||||
|
||||
if ($authcode != $_SESSION['verify']) {
|
||||
getJson('图片验证码输入有误,请重新输入!', $js);
|
||||
}
|
||||
|
||||
#验证手机验证码
|
||||
if(aac('pubs')->verifyPhoneCode($phone,$phonecode)==false){
|
||||
getJson('手机验证码输入有误',$js);
|
||||
}
|
||||
|
||||
|
||||
$strUserInfo = $new['user']->find('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),'phone');
|
||||
|
||||
if($strUserInfo['phone']!=$phone){
|
||||
|
||||
#判断手机号是否存在
|
||||
$isPhone = $new['user']->findCount('user',array(
|
||||
'phone'=>$phone,
|
||||
));
|
||||
|
||||
if($isPhone){
|
||||
getJson('手机号已存在!请更换其他手机号!',$js);
|
||||
}
|
||||
|
||||
//getJson('手机号有误!',$js);
|
||||
}
|
||||
|
||||
#更新手机号
|
||||
$new['user']->update('user',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'phone'=>$phone,
|
||||
));
|
||||
|
||||
#更新手机号和手机验证状态
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'phone'=>$phone,
|
||||
'isverifyphone'=>'1',
|
||||
));
|
||||
|
||||
$_SESSION['tsuser']['isverifyphone']=1;
|
||||
|
||||
getJson('手机号验证成功!',$js,2,SITE_URL);
|
||||
|
||||
break;
|
||||
|
||||
|
||||
//如果手机号不对,可以修改手机号
|
||||
case "setphone":
|
||||
|
||||
$userid = aac('user')->isLogin();
|
||||
|
||||
$phone = tsTrim($_POST['phone']);
|
||||
|
||||
if($phone==''){
|
||||
tsNotice('手机号不能为空!');
|
||||
}
|
||||
|
||||
if(isPhone($phone)==false){
|
||||
tsNotice('手机号输入有误!');
|
||||
}
|
||||
|
||||
$isPhone = $new['user']->findCount('user',array(
|
||||
'phone'=>$phone,
|
||||
));
|
||||
|
||||
if($isPhone>0){
|
||||
tsNotice('手机号已经存在,请更换其他手机号!');
|
||||
}
|
||||
|
||||
$new['user']->update('user',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'phone'=>$phone,
|
||||
));
|
||||
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'phone'=>$phone,
|
||||
));
|
||||
|
||||
|
||||
tsNotice('手机号修改成功!');
|
||||
|
||||
break;
|
||||
|
||||
|
||||
//修改成新手机号
|
||||
case "editphone":
|
||||
|
||||
$js = tsIntval($_GET['js']);
|
||||
|
||||
$userid = aac('user')->isLogin();
|
||||
|
||||
$phone = tsTrim($_POST['phone']);
|
||||
|
||||
$authcode = strtolower($_POST['authcode']);
|
||||
$phonecode = tsTrim($_POST['phonecode']);
|
||||
|
||||
if($phone == '' || $authcode=='' || $phonecode==''){
|
||||
getJson('所有输入项都不能为空',$js);
|
||||
}
|
||||
|
||||
if(isPhone($phone)==false){
|
||||
getJson('手机号输入有误!',$js);
|
||||
}
|
||||
|
||||
if ($authcode != $_SESSION['verify']) {
|
||||
getJson('图片验证码输入有误,请重新输入!', $js);
|
||||
}
|
||||
|
||||
#验证手机验证码
|
||||
if(aac('pubs')->verifyPhoneCode($phone,$phonecode)==false){
|
||||
getJson('手机验证码输入有误',$js);
|
||||
}
|
||||
|
||||
|
||||
$isPhone = $new['user']->findCount('user',array(
|
||||
'phone'=>$phone,
|
||||
));
|
||||
|
||||
if($isPhone>0){
|
||||
getJson('手机号已经存在,请更换其他手机号!',$js);
|
||||
}
|
||||
|
||||
|
||||
$new['user']->update('user',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'phone'=>$phone,
|
||||
));
|
||||
|
||||
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'phone'=>$phone,
|
||||
'isverifyphone'=>'1',
|
||||
));
|
||||
|
||||
$_SESSION['tsuser']['isverifyphone']=1;
|
||||
|
||||
getJson('手机号修改成功!',$js,2,tsUrl('my','setting',array('ts'=>'email')));
|
||||
|
||||
break;
|
||||
|
||||
|
||||
/**
|
||||
* 通过手机号重置密码
|
||||
*/
|
||||
case "resetpwd":
|
||||
|
||||
$js = tsIntval($_GET['js']);
|
||||
|
||||
|
||||
$phone = tsTrim($_POST['phone']);
|
||||
$pwd = tsTrim($_POST['pwd']);
|
||||
$authcode = strtolower($_POST['authcode']);
|
||||
$phonecode = tsTrim($_POST['phonecode']);
|
||||
|
||||
if($phone == '' || $pwd=='' || $authcode=='' || $phonecode==''){
|
||||
getJson('所有输入项都不能为空',$js);
|
||||
}
|
||||
|
||||
if(isPhone($phone)==false){
|
||||
getJson('手机号输入不正确',$js);
|
||||
}
|
||||
|
||||
$strUser = $new['user']->find('user',array(
|
||||
'phone'=>$phone,
|
||||
));
|
||||
|
||||
if($strUser==''){
|
||||
getJson("手机号不存在,你可能还没有注册^_^",$js);
|
||||
}
|
||||
|
||||
|
||||
if ($authcode != $_SESSION['verify']) {
|
||||
getJson('图片验证码输入有误,请重新输入!', $js);
|
||||
}
|
||||
|
||||
|
||||
#验证手机验证码
|
||||
if(aac('pubs')->verifyPhoneCode($phone,$phonecode)==false){
|
||||
getJson('手机验证码输入有误',$js);
|
||||
}
|
||||
|
||||
$salt = md5(rand());
|
||||
|
||||
$new['user']->update('user',array(
|
||||
'userid'=>$strUser['userid'],
|
||||
),array(
|
||||
'pwd'=>md5($salt.$pwd),
|
||||
'salt'=>$salt,
|
||||
));
|
||||
|
||||
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$strUser['userid'],
|
||||
),array(
|
||||
'phone'=>$strUser['phone'],
|
||||
'isverifyphone'=>'1',
|
||||
));
|
||||
|
||||
$_SESSION['tsuser']['isverifyphone']=1;
|
||||
|
||||
getJson('密码修改成功!',$js,2,tsUrl('user','login'));
|
||||
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
if($TS_SITE['isplogin']!=1){
|
||||
tsNotice('短信登录未开启!');
|
||||
}
|
||||
|
||||
/**
|
||||
* 手机验证码登录
|
||||
*/
|
||||
if(tsIntval($TS_USER['userid']) > 0) {
|
||||
header('Location: '.SITE_URL);exit;
|
||||
}
|
||||
|
||||
switch($ts){
|
||||
case "":
|
||||
|
||||
$title = '手机验证码登录';
|
||||
include template("plogin");
|
||||
break;
|
||||
|
||||
case "do":
|
||||
|
||||
$js = tsIntval($_GET['js']);
|
||||
$phone = tsTrim($_POST['email']);
|
||||
$authcode = strtolower($_POST['authcode']);
|
||||
$phonecode = tsTrim($_POST['phonecode']);
|
||||
|
||||
if($phone=='' || $phonecode==''){
|
||||
getJson('所有输入项都不能为空!',$js);
|
||||
}
|
||||
|
||||
if(isPhone($phone)==false) getJson('手机号输入有误!',$js);
|
||||
|
||||
#验证手机验证码
|
||||
if(aac('pubs')->verifyPhoneCode($phone,$phonecode)==false){
|
||||
getJson('手机验证码输入有误!',$js);
|
||||
}
|
||||
|
||||
#手机号是否存在
|
||||
$strUser = $new['user']->find('user',array(
|
||||
'phone'=>$phone,
|
||||
));
|
||||
|
||||
if($strUser){
|
||||
|
||||
$new['user']->login($strUser['userid'],$phone);
|
||||
|
||||
getJson('登录成功!',$js,2,SITE_URL);
|
||||
|
||||
|
||||
}else{
|
||||
|
||||
$new['user']->register($phone);
|
||||
|
||||
}
|
||||
|
||||
//跳转
|
||||
getJson('登录成功!',$js,2,SITE_URL);
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
//插件条件入口
|
||||
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
if(is_file('plugins/'.$app.'/'.$plugin.'/'.$in.'.php')){
|
||||
require_once('plugins/'.$app.'/'.$plugin.'/'.$in.'.php');
|
||||
}else{
|
||||
tsNotice('sorry:no plugin!');
|
||||
}
|
||||
|
||||
//形如这样
|
||||
//index.php?app=group&ac=plugin&plugin=qq&in=do
|
||||
@@ -0,0 +1,190 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
use EasyWeChat\Factory;
|
||||
|
||||
if(tsIntval($TS_USER['userid']) > 0) {
|
||||
header('Location: '.SITE_URL);exit;
|
||||
}
|
||||
|
||||
if($TS_SITE['isinvite']==2){
|
||||
tsNotice('暂不开放用户注册!');
|
||||
}
|
||||
|
||||
#微信公众号授权
|
||||
if(isWeixin()==true && $TS_SITE['is_weixin']==1){
|
||||
$config = [
|
||||
'app_id' => $TS_SITE['weixin_appid'],
|
||||
'oauth' => [
|
||||
'scopes' => ['snsapi_userinfo'],
|
||||
'callback' => SITE_URL.'index.php?app=user&ac=wxlogin',
|
||||
],
|
||||
];
|
||||
$app = Factory::officialAccount($config);
|
||||
$oauth = $app->oauth;
|
||||
$oauth->redirect()->send();
|
||||
exit();
|
||||
}
|
||||
|
||||
//用户注册
|
||||
switch($ts){
|
||||
case "":
|
||||
|
||||
#如果网站只采用手机号注册,就跳转到手机号注册
|
||||
if($TS_SITE['regtype']==1){
|
||||
header('Location: '.tsUrl('user','phone'));exit;
|
||||
}
|
||||
|
||||
//邀请用户ID
|
||||
$fuserid = tsIntval($_GET['fuserid']);
|
||||
if($fuserid){
|
||||
$strFuser = $new['user']->getSimpleUser($fuserid);
|
||||
}
|
||||
|
||||
$title = '注册';
|
||||
|
||||
include template("register");
|
||||
break;
|
||||
|
||||
case "do":
|
||||
|
||||
//用于JS提交验证
|
||||
$js = tsIntval($_GET['js']);
|
||||
|
||||
$email = tsTrim($_POST['email']);
|
||||
$pwd = tsTrim($_POST['pwd']);
|
||||
$repwd = tsTrim($_POST['repwd']);
|
||||
$username = t($_POST['username']);
|
||||
|
||||
$fuserid = tsIntval($_POST['fuserid']);
|
||||
|
||||
$authcode = strtolower(tsTrim($_POST['authcode']));
|
||||
|
||||
|
||||
|
||||
#人机验证
|
||||
$vaptcha_token = tsTrim($_POST['vaptcha_token']);
|
||||
$vaptcha_server = tsTrim($_POST['vaptcha_server']);
|
||||
if ($TS_SITE['is_vaptcha']) {
|
||||
$strVt = vaptcha($vaptcha_token,0,$vaptcha_server);
|
||||
if($strVt['success']==0) {
|
||||
getJson('人机验证未通过!',$js);
|
||||
}
|
||||
}
|
||||
|
||||
//检测垃圾Email后缀
|
||||
$arrEmail = explode('@',$email);
|
||||
|
||||
$emails = array(
|
||||
'chacuo.net',
|
||||
'mail.ru',
|
||||
'yandex.ru',
|
||||
'yandex.com',
|
||||
'027168.net',
|
||||
'027168.com',
|
||||
);
|
||||
|
||||
if(in_array($arrEmail[1],$emails)){
|
||||
getJson('禁止该邮箱注册!',$js);
|
||||
}
|
||||
|
||||
|
||||
/*禁止以下IP用户登陆或注册*/
|
||||
/*
|
||||
$arrIp = aac('system')->antiIp();
|
||||
if(in_array(getIp(),$arrIp)){
|
||||
getJson('你的IP已被锁定,暂无法登录!',$js);
|
||||
}
|
||||
*/
|
||||
|
||||
//是否开启邀请注册
|
||||
if($TS_SITE['isinvite']=='1'){
|
||||
|
||||
$invitecode = tsTrim($_POST['invitecode']);
|
||||
|
||||
if($invitecode == '') getJson('邀请码不能为空!',$js);
|
||||
|
||||
$codeNum = $new['user']->findCount('user_invites',array(
|
||||
'invitecode'=>$invitecode,
|
||||
'isused'=>0,
|
||||
));
|
||||
|
||||
if($codeNum == 0) getJson('邀请码已经被使用/或者不存在,请更换其他邀请码!',$js);
|
||||
|
||||
}
|
||||
|
||||
if($email=='' || $pwd=='' || $repwd=='' || $username==''){
|
||||
getJson('所有必选项都不能为空!',$js);
|
||||
}
|
||||
|
||||
if(valid_email($email) == false){
|
||||
getJson('Email邮箱输入有误',$js);
|
||||
}
|
||||
|
||||
#Email过滤
|
||||
$is_anti_email = $new['user']->find('anti_email',array(
|
||||
'email'=>$email,
|
||||
));
|
||||
if($is_anti_email>0){
|
||||
getJson('非法操作!',$js);
|
||||
}
|
||||
|
||||
|
||||
#验证Email验证码
|
||||
if($TS_SITE['isverify']){
|
||||
$emailcode = tsTrim($_POST['emailcode']);
|
||||
if(aac('pubs')->verifyEmailCode($email,$emailcode)==false){
|
||||
getJson('Email验证码输入有误',$js);
|
||||
}
|
||||
}
|
||||
|
||||
#判断Email是否存在
|
||||
$isEmail = $new['user']->findCount('user',array(
|
||||
'email'=>$email,
|
||||
));
|
||||
|
||||
if($isEmail > 0){
|
||||
getJson('Email已经注册',$js);
|
||||
}
|
||||
|
||||
if($pwd != $repwd){
|
||||
getJson('两次输入密码不正确!',$js);
|
||||
}
|
||||
|
||||
if(count_string_len($username) < 4 || count_string_len($username) > 20){
|
||||
getJson('姓名长度必须在4和20之间',$js);
|
||||
}
|
||||
|
||||
#用户名敏感词
|
||||
$username = antiWord ($username,1);
|
||||
$username = str_replace('.','',$username);
|
||||
|
||||
#判断用户名是否存在
|
||||
$isUserName = $new['user']->findCount('user_info',array(
|
||||
'username'=>$username,
|
||||
));
|
||||
|
||||
if($isUserName > 0){
|
||||
getJson('用户名已经存在,请换个用户名!',$js);
|
||||
}
|
||||
|
||||
if($TS_SITE['isauthcode']){
|
||||
if ($authcode != $_SESSION['verify']) {
|
||||
getJson('验证码输入有误,请重新输入!', $js);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$new['user']->register($email,$username,$pwd,$fuserid,$invitecode);
|
||||
|
||||
|
||||
//对积分进行处理
|
||||
aac('user')->doScore($TS_URL['app'], $TS_URL['ac'],$TS_URL['mg'],$TS_URL['api'], $TS_URL['ts']);
|
||||
|
||||
//跳转
|
||||
getJson('登录成功!',$js,2,SITE_URL);
|
||||
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
//重设密码
|
||||
|
||||
|
||||
switch($ts){
|
||||
case "":
|
||||
|
||||
$email = tsTrim($_GET['mail']);
|
||||
$resetpwd = tsUrlCheck($_GET['set']);
|
||||
|
||||
if(valid_email($email)==false){
|
||||
tsNotice('非法操作');
|
||||
}
|
||||
|
||||
$userNum = $new['user']->findCount('user',array(
|
||||
'email'=>$email,
|
||||
'resetpwd'=>$resetpwd,
|
||||
));
|
||||
|
||||
if($email=='' || $resetpwd==''){
|
||||
tsNotice("你应该去火星生活啦!");
|
||||
}elseif($userNum == 0){
|
||||
tsNotice("你应该去火星生活啦!");
|
||||
}else{
|
||||
|
||||
$title = '重设密码';
|
||||
include template("resetpwd");
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case "do":
|
||||
|
||||
$js = tsIntval($_GET['js']);
|
||||
|
||||
$email = tsTrim($_POST['email']);
|
||||
$pwd = tsTrim($_POST['pwd']);
|
||||
$repwd = tsTrim($_POST['repwd']);
|
||||
|
||||
$resetpwd = tsTrim($_POST['resetpwd']);
|
||||
|
||||
|
||||
|
||||
if($email=='' || $pwd=='' || $repwd=='' || $resetpwd==''){
|
||||
getJson("所有输入项都不能为空!",$js);
|
||||
}
|
||||
|
||||
if(valid_email($email)==false){
|
||||
getJson('Email输入不正确',$js);
|
||||
}
|
||||
|
||||
$userNum = $new['user']->findCount('user',array(
|
||||
'email'=>$email,
|
||||
'resetpwd'=>$resetpwd,
|
||||
));
|
||||
|
||||
if($userNum == '0'){
|
||||
getJson("你应该去火星生活啦!",$js);
|
||||
}
|
||||
|
||||
$salt = md5(rand());
|
||||
|
||||
$new['user']->update('user',array(
|
||||
'email'=>$email,
|
||||
),array(
|
||||
'pwd'=>md5($salt.$pwd),
|
||||
'salt'=>$salt,
|
||||
'resetpwd'=>'',
|
||||
));
|
||||
|
||||
|
||||
getJson("密码修改成功^_^",$js);
|
||||
|
||||
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
$arrRole = $new['user']->findAll('user_role');
|
||||
|
||||
$title = '角色';
|
||||
include template('role');
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
$userid = tsIntval($GLOBALS['TS_USER']['userid']);
|
||||
|
||||
switch($ts){
|
||||
|
||||
case "":
|
||||
|
||||
if($userid==0){
|
||||
echo 2;exit;
|
||||
}
|
||||
|
||||
if($new['user']->signin()){
|
||||
echo 1;exit;
|
||||
}else{
|
||||
echo 0;exit;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case "ajax":
|
||||
|
||||
$strSign = $new['user']->find('sign',array(
|
||||
'userid'=>$userid,
|
||||
'addtime'=>date('Y-m-d'),
|
||||
));
|
||||
|
||||
$strScore = $new['user']->find('user_score',array(
|
||||
'app'=>'user',
|
||||
'action'=>'signin',
|
||||
'mg'=>'',
|
||||
'ts'=>'',
|
||||
));
|
||||
|
||||
include template('signin_ajax');
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
//用户空间
|
||||
include 'userinfo.php';
|
||||
|
||||
//加入的小组
|
||||
$arrGroupUser = $new['user']->findAll('group_user',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
|
||||
if(is_array($arrGroupUser)){
|
||||
foreach($arrGroupUser as $key=>$item){
|
||||
$arrGroup[] = aac('group')->getOneGroup($item['groupid']);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//留言
|
||||
$arrGuest = $new['user']->findAll('user_gb',array(
|
||||
'touserid'=>$strUser['userid'],
|
||||
),'addtime desc',null,10);
|
||||
|
||||
foreach($arrGuest as $key=>$item){
|
||||
$arrGuest[$key]['content'] = tsDecode($item['content']);
|
||||
$arrGuest[$key]['user']=$new['user']->getSimpleUser($item['userid']);
|
||||
}
|
||||
|
||||
$title = $strUser['username'];
|
||||
include template("space");
|
||||
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
$title = '后台登录';
|
||||
include template('system');
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
include 'userinfo.php';
|
||||
|
||||
$page = tsIntval($_GET['page'],1);
|
||||
$url = tsUrl('user','topic',array('id'=>$strUser['userid'],'page'=>''));
|
||||
$lstart = $page*30-30;
|
||||
|
||||
$arrTopic = $new['user']->findAll('topic',array(
|
||||
'userid'=>$strUser['userid'],
|
||||
),'addtime desc',null,$lstart.',30');
|
||||
|
||||
$topicNum = $new['user']->findCount('topic',array(
|
||||
'userid'=>$strUser['userid'],
|
||||
));
|
||||
$pageUrl = pagination($topicNum, 30, $page, $url);
|
||||
|
||||
$title = $strUser['username'].'的帖子';
|
||||
include template('topic');
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
$userid = tsIntval($_GET['id']);
|
||||
|
||||
if($new['user']->isUser($userid)==false){
|
||||
|
||||
header("HTTP/1.1 404 Not Found");
|
||||
header("Status: 404 Not Found");
|
||||
$title = '404';
|
||||
include pubTemplate("404");
|
||||
exit;
|
||||
|
||||
}
|
||||
|
||||
$strUser = $new['user']->getOneUser($userid);
|
||||
|
||||
//是否关注
|
||||
if($TS_USER['userid'] != '' && $TS_USER['userid'] != $strUser['userid']){
|
||||
$followNum = $db->once_num_rows("select * from ".dbprefix."user_follow where userid='".$TS_USER['userid']."' and touserid='$userid'");
|
||||
if($followNum > '0'){
|
||||
$strUser['isfollow'] = true;
|
||||
}else{
|
||||
$strUser['isfollow'] = false;
|
||||
}
|
||||
}else{
|
||||
$strUser['isfollow'] = false;
|
||||
}
|
||||
|
||||
//他关注的用户
|
||||
$followUsers = $db->fetch_all_assoc("select touserid from ".dbprefix."user_follow where userid='$userid' order by addtime desc limit 12");
|
||||
|
||||
if(is_array($followUsers)){
|
||||
foreach($followUsers as $item){
|
||||
$arrFollowUser[] = $new['user']->getSimpleUser($item['touserid']);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,189 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
//用户是否登录
|
||||
|
||||
switch($ts){
|
||||
|
||||
case "":
|
||||
|
||||
$userid = aac('user')->isLogin();
|
||||
|
||||
$strUser = $new['user']->getOneUser($userid);
|
||||
|
||||
$title = '用户验证';
|
||||
include template('verify');
|
||||
break;
|
||||
|
||||
//发送验证
|
||||
case "post":
|
||||
|
||||
$userid = aac('user')->isLogin();
|
||||
|
||||
$strUser = $new['user']->find('user_info',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
if($strUser['verifycode']==''){
|
||||
$verifycode = random(11);
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'verifycode'=>$verifycode,
|
||||
));
|
||||
}else{
|
||||
$verifycode = $strUser['verifycode'];
|
||||
}
|
||||
|
||||
$email = $strUser['email'];
|
||||
|
||||
//发送邮件
|
||||
$subject = $TS_SITE['site_title'].'会员真实性验证';
|
||||
$content = '尊敬的'.$strUser['username'].',<br />请点击以下链接进行会员验证:<a href="'.$TS_SITE['link_url'].'index.php?app=user&ac=verify&ts=do&email='.$email.'&verifycode='.$verifycode.'">'.$TS_SITE['link_url'].'index.php?app=user&ac=verify&ts=do&email='.$email.'&verifycode='.$verifycode.'</a>';
|
||||
|
||||
$result = aac('mail')->postMail($email,$subject,$content);
|
||||
|
||||
if($result == '0'){
|
||||
tsNotice("验证失败,可能是你的Email邮箱错误哦^_^");
|
||||
}elseif($result == '1'){
|
||||
tsNotice("系统已经向你的邮箱发送了验证邮件,请尽快查收^_^");
|
||||
}
|
||||
break;
|
||||
|
||||
//接收验证
|
||||
case "do":
|
||||
$email = tsFilter($_GET['email']);
|
||||
$verifycode = tsFilter($_GET['verifycode']);
|
||||
|
||||
$verify = $new['user']->findCount('user_info',array(
|
||||
'email'=>$email,
|
||||
'verifycode'=>$verifycode,
|
||||
));
|
||||
|
||||
if($verify > 0){
|
||||
|
||||
$new['user']->update('user_info',array(
|
||||
'email'=>$email,
|
||||
),array(
|
||||
'isverify'=>'1',
|
||||
));
|
||||
|
||||
$_SESSION['tsuser']['isverify']=1;
|
||||
|
||||
tsNotice("Email验证成功!",'点击回首页!',SITE_URL);
|
||||
}else{
|
||||
tsNotice("Email验证失败!");
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
//修改Email
|
||||
case "setemail":
|
||||
|
||||
$userid = aac('user')->isLogin();
|
||||
|
||||
|
||||
$strUser = $new['user']->getOneUser($userid);
|
||||
|
||||
$email = tsTrim($_POST['email']);
|
||||
|
||||
if($email=='') tsNotice('Email不能为空!');
|
||||
|
||||
if(valid_email($email) == false) tsNotice('Email输入有误!');
|
||||
|
||||
if($email != $strUser['email']){
|
||||
$emailNum = $new['user']->findCount('user',array(
|
||||
'email'=>$email,
|
||||
));
|
||||
|
||||
if($emailNum > 0) tsNotice("Email帐号已经存在,请换个其他Email帐号!");
|
||||
|
||||
//更新Email
|
||||
$new['user']->update('user',array(
|
||||
'userid'=>$strUser['userid'],
|
||||
),array(
|
||||
'email'=>$email,
|
||||
));
|
||||
|
||||
//修改信息并将用户设为未验证状态
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$strUser['userid'],
|
||||
),array(
|
||||
'email'=>$email,
|
||||
'isverify'=>'0',
|
||||
));
|
||||
|
||||
tsNotice('Email帐号修改成功,请返回重新验证!');
|
||||
|
||||
}else{
|
||||
tsNotice('新Email帐号不能和旧Email帐号一样!');
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
//必须上传头像
|
||||
case "face":
|
||||
|
||||
$userid = aac('user')->isLogin();
|
||||
|
||||
$strUser = $new['user']->getOneUser($userid);
|
||||
|
||||
$_SESSION['tsuser']['face'] = $strUser['face'];
|
||||
|
||||
$title = '上传头像';
|
||||
include template('verify_face');
|
||||
break;
|
||||
|
||||
case "facedo":
|
||||
|
||||
$userid = aac('user')->isLogin();
|
||||
|
||||
if($_FILES['picfile']){
|
||||
|
||||
//上传
|
||||
$arrUpload = tsUpload($_FILES['picfile'],$userid,'user',array('jpg','gif','png','jpeg'));
|
||||
|
||||
if($arrUpload){
|
||||
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'path'=>$arrUpload['path'],
|
||||
'face'=>$arrUpload['url'],
|
||||
'uptime'=>time(),
|
||||
));
|
||||
|
||||
#本地图片验证
|
||||
if($TS_SITE['file_upload_type']=='0' || $TS_SITE['file_upload_type']==''){
|
||||
$filesize=abs(filesize('uploadfile/user/'.$arrUpload['url']));
|
||||
if($filesize<=0){
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'path'=>'',
|
||||
'face'=>'',
|
||||
));
|
||||
tsNotice('上传头像失败!请联系网站管理员处理!');
|
||||
}elseif($filesize>1048576){
|
||||
#限制头像图片1M以内
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'path'=>'',
|
||||
'face'=>'',
|
||||
));
|
||||
tsNotice('请选择1M以内的头像图片');
|
||||
}
|
||||
}
|
||||
|
||||
tsDimg($arrUpload['url'],'user','120','120',$arrUpload['path']);
|
||||
|
||||
header('Location: '.tsUrl('user','verify',array('ts'=>'face')));
|
||||
|
||||
|
||||
}else{
|
||||
tsNotice('头像修改失败');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -0,0 +1,181 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
use EasyWeChat\Factory;
|
||||
|
||||
$config = [
|
||||
'app_id' => $TS_SITE['weixin_appid'],
|
||||
'secret' => $TS_SITE['weixin_appsecret'],
|
||||
];
|
||||
|
||||
$app = Factory::officialAccount($config);
|
||||
$oauth = $app->oauth;
|
||||
|
||||
// 获取 OAuth 授权结果用户信息
|
||||
$user = $oauth->user();
|
||||
|
||||
// $user 可以用的方法:
|
||||
// $user->getId(); // 对应微信的 OPENID
|
||||
// $user->getNickname(); // 对应微信的 nickname
|
||||
// $user->getName(); // 对应微信的 nickname
|
||||
// $user->getAvatar(); // 头像网址
|
||||
// $user->getOriginal(); // 原始API返回的结果
|
||||
// $user->getToken(); // access_token, 比如用于地址共享时使用
|
||||
|
||||
if($user->getToken() && $user->getId()){
|
||||
|
||||
$openid = $user->getId();
|
||||
|
||||
$access_token = $user->getToken();
|
||||
|
||||
$strOpen = $new['user']->find('user_open',array(
|
||||
'sitename'=>'weixin',
|
||||
'openid'=>$openid,
|
||||
));
|
||||
|
||||
//10天更换一次access_token
|
||||
if(time()-10*86400>$strOpen['uptime']){
|
||||
$new['user']->update('user_open',array(
|
||||
'sitename'=>'weixin',
|
||||
'openid'=>$openid,
|
||||
),array(
|
||||
'access_token'=>$access_token,
|
||||
'uptime'=>time(),
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
if($strOpen['userid']){
|
||||
|
||||
|
||||
/*
|
||||
$userid = $strOpen['userid'];
|
||||
$username = $user->getNickname();
|
||||
$userface = $user->getAvatar();
|
||||
|
||||
|
||||
//更新用户头像
|
||||
if($userface!='' && $userface!='/0'){
|
||||
//1000个图片一个目录
|
||||
$menu2=intval($userid/1000);
|
||||
$menu1=intval($menu2/1000);
|
||||
$menu = $menu1.'/'.$menu2;
|
||||
$photo = $userid.'.jpg';
|
||||
$photos = $menu.'/'.$photo;
|
||||
$dir = 'uploadfile/user/'.$menu;
|
||||
$dfile = $dir.'/'.$photo;
|
||||
createFolders($dir);
|
||||
if(!is_file($dfile)){
|
||||
$img = file_get_contents($userface);
|
||||
file_put_contents($dfile,$img);
|
||||
};
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'path'=>$menu,
|
||||
'face'=>$photos,
|
||||
));
|
||||
}
|
||||
*/
|
||||
|
||||
//更新登录时间
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$strOpen['userid'],
|
||||
),array(
|
||||
//'username'=>$username,
|
||||
'ip'=>getIp(), //更新登录ip
|
||||
'uptime'=>time(), //更新登录时间
|
||||
));
|
||||
|
||||
|
||||
//用户session信息
|
||||
$sessionData = $new['user']->sessionData($strOpen['userid']);
|
||||
$_SESSION['tsuser'] = $sessionData;
|
||||
|
||||
if($_COOKIE['wx_jump']){
|
||||
header("Location: ".$_COOKIE['wx_jump']);
|
||||
}else{
|
||||
header("Location: ".SITE_URL);
|
||||
}
|
||||
|
||||
exit;
|
||||
|
||||
}else{
|
||||
|
||||
|
||||
$salt = md5(rand());
|
||||
|
||||
$pwd = random(5,0);
|
||||
|
||||
$userid = $new['user']->create('user',array(
|
||||
'pwd'=>md5($salt.$pwd),
|
||||
'salt'=>$salt,
|
||||
'email'=>$openid,
|
||||
'phone'=>$openid,
|
||||
));
|
||||
|
||||
$username = $user->getNickname();
|
||||
$userface = $user->getAvatar();
|
||||
|
||||
//插入ts_user_info
|
||||
$new['user']->create('user_info',array(
|
||||
'userid' => $userid,
|
||||
'username' => $username,
|
||||
'email' => $openid,
|
||||
'phone' => $openid,
|
||||
'ip' => getIp(),
|
||||
'addtime' => time(),
|
||||
'uptime' => time(),
|
||||
));
|
||||
|
||||
//插入ts_user_open
|
||||
$new['user']->create('user_open',array(
|
||||
'userid'=>$userid,
|
||||
'sitename'=>'weixin',
|
||||
'openid' => $openid,
|
||||
'access_token'=>$access_token,
|
||||
'uptime'=>time(),
|
||||
));
|
||||
|
||||
//更新用户头像
|
||||
if($userface!='' && $userface!='/0'){
|
||||
//1000个图片一个目录
|
||||
$menu2=intval($userid/1000);
|
||||
$menu1=intval($menu2/1000);
|
||||
$menu = $menu1.'/'.$menu2;
|
||||
$photo = $userid.'.jpg';
|
||||
$photos = $menu.'/'.$photo;
|
||||
$dir = 'uploadfile/user/'.$menu;
|
||||
$dfile = $dir.'/'.$photo;
|
||||
createFolders($dir);
|
||||
if(!is_file($dfile)){
|
||||
$img = file_get_contents($userface);
|
||||
file_put_contents($dfile,$img);
|
||||
};
|
||||
$new['user']->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'path'=>$menu,
|
||||
'face'=>$photos,
|
||||
));
|
||||
}
|
||||
|
||||
//发送系统消息(恭喜注册成功)
|
||||
$msg_userid = '0';
|
||||
$msg_touserid = $userid;
|
||||
$msg_content = '亲爱的微信用户 '.$username.' :您成功加入了 '
|
||||
.$TS_SITE['site_title'].'在遵守本站的规定的同时,享受您的愉快之旅吧!';
|
||||
aac('message')->sendmsg($msg_userid,$msg_touserid,$msg_content);
|
||||
|
||||
//用户session信息
|
||||
$sessionData = $new['user']->sessionData($userid);
|
||||
$_SESSION['tsuser'] = $sessionData;
|
||||
|
||||
if($_COOKIE['wx_jump']){
|
||||
header("Location: ".$_COOKIE['wx_jump']);
|
||||
}else{
|
||||
header("Location: ".SITE_URL);
|
||||
}
|
||||
exit;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,828 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
class user extends tsApp {
|
||||
|
||||
//构造函数
|
||||
public function __construct($db){
|
||||
$tsAppDb = array();
|
||||
include 'app/user/config.php';
|
||||
//判断APP是否采用独立数据库
|
||||
if($tsAppDb){
|
||||
$db = new MySql($tsAppDb);
|
||||
}
|
||||
|
||||
parent::__construct($db);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户session信息【修改此处返回session参数,也请修改thinksaas/thinksaas.php文件中自动登录的返回参数,保持同步】
|
||||
*
|
||||
* @param [type] $userid
|
||||
*/
|
||||
public function sessionData($userid){
|
||||
$strUserInfo = $this->find('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),'userid,ugid,username,email,path,face,isadmin,signin,isverify,isverifyphone,uptime');
|
||||
|
||||
return array(
|
||||
'userid' => $strUserInfo['userid'],
|
||||
'ugid' => $strUserInfo['ugid'],
|
||||
'username' => $strUserInfo['username'],
|
||||
'email' => $strUserInfo['email'],
|
||||
'face'=>$this->getUserFace($strUserInfo),
|
||||
'isadmin' => $strUserInfo['isadmin'],
|
||||
'signin' =>$strUserInfo['signin'],
|
||||
'isverify'=>$strUserInfo['isverify'],
|
||||
'isverifyphone'=>$strUserInfo['isverifyphone'],
|
||||
'uptime' => $strUserInfo['uptime'],
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 用户登录
|
||||
*
|
||||
* @param [type] $userid
|
||||
* @param string $phone
|
||||
* @return void
|
||||
*/
|
||||
public function login($userid,$phone=''){
|
||||
|
||||
$this->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'uptime'=>time(),
|
||||
));
|
||||
|
||||
#清空验证码
|
||||
if($phone){
|
||||
$this->update('phone_code',array(
|
||||
'phone'=>$phone,
|
||||
),array(
|
||||
'code'=>'',
|
||||
));
|
||||
}
|
||||
|
||||
//用户session信息
|
||||
$sessionData = $this->sessionData($userid);
|
||||
|
||||
$_SESSION['tsuser'] = $sessionData;
|
||||
|
||||
//更新登录时间,用作自动登录
|
||||
$autologin = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36);
|
||||
$this->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'ip'=>getIp(), //更新登录ip
|
||||
'autologin'=>$autologin,
|
||||
'uptime'=>time(), //更新登录时间
|
||||
));
|
||||
|
||||
//记住登录Cookie,根据用户Email和最后登录时间
|
||||
setcookie("ts_email", $sessionData['email'], time()+2592000,'/');
|
||||
setcookie("ts_autologin", $autologin, time()+2592000,'/');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户注册
|
||||
*
|
||||
* @param [type] $email
|
||||
* @param string $username
|
||||
* @param string $pwd
|
||||
* @param integer $fuserid
|
||||
* @return void
|
||||
*/
|
||||
public function register($email,$username='',$pwd='',$fuserid=0,$invitecode='',$islogin=0){
|
||||
|
||||
$salt = md5(rand());
|
||||
|
||||
if($pwd=='') $pwd = random(6);
|
||||
|
||||
$userid = $this->create('user',array(
|
||||
'pwd'=>md5($salt.$pwd),
|
||||
'salt'=>$salt,
|
||||
'email'=>$email,
|
||||
'phone'=>$email,
|
||||
));
|
||||
|
||||
if($username=='') $username = 'TS'.$userid;
|
||||
|
||||
#Email验证
|
||||
$isverify = 0;
|
||||
if(valid_email($email)==true && $GLOBALS['TS_SITE']['isverify']){
|
||||
$isverify = 1;
|
||||
#清空Email验证码
|
||||
$this->update('email_code',array(
|
||||
'email'=>$email,
|
||||
),array(
|
||||
'code'=>'',
|
||||
));
|
||||
}
|
||||
|
||||
#手机验证
|
||||
$isverifyphone = 0;
|
||||
if(isPhone($email)==true){
|
||||
$isverifyphone = 1;
|
||||
#清空手机验证码
|
||||
$this->update('phone_code',array(
|
||||
'phone'=>$email,
|
||||
),array(
|
||||
'code'=>'',
|
||||
));
|
||||
}
|
||||
|
||||
//插入用户信息
|
||||
$this->create('user_info',array(
|
||||
'userid' => $userid,
|
||||
'fuserid' => intval($fuserid),
|
||||
'ugid' => 3,
|
||||
'username' => $username,
|
||||
'email' => $email,
|
||||
'phone' => $email,
|
||||
'ip' => getIp(),
|
||||
'isverify'=>$isverify,
|
||||
'isverifyphone'=>$isverifyphone,
|
||||
'addtime' => time(),
|
||||
'uptime' => time(),
|
||||
));
|
||||
|
||||
//默认加入小组
|
||||
if($GLOBALS['TS_APP']['isgroup']){
|
||||
$arrGroup = explode(',',$GLOBALS['TS_APP']['isgroup']);
|
||||
if($arrGroup){
|
||||
foreach($arrGroup as $key=>$item){
|
||||
$groupUserNum = $this->findCount('group_user',array(
|
||||
'userid'=>$userid,
|
||||
'groupid'=>$item,
|
||||
));
|
||||
if($groupUserNum == 0){
|
||||
$this->create('group_user',array(
|
||||
'userid'=>$userid,
|
||||
'groupid'=>$item,
|
||||
'addtime'=>time(),
|
||||
));
|
||||
//统计更新
|
||||
$count_user = $this->findCount('group_user',array(
|
||||
'groupid'=>$item,
|
||||
));
|
||||
|
||||
$this->update('group',array(
|
||||
'groupid'=>$item,
|
||||
),array(
|
||||
'count_user'=>$count_user,
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($islogin==0){
|
||||
|
||||
//用户session信息
|
||||
$sessionData = $this->sessionData($userid);
|
||||
|
||||
//用户session信息
|
||||
$_SESSION['tsuser'] = $sessionData;
|
||||
}
|
||||
|
||||
|
||||
//发送消息
|
||||
aac('message')->sendmsg(0,$userid,'亲爱的 '.$username.' :您成功加入了 '.$GLOBALS['TS_SITE']['site_title'].'。在遵守本站的规定的同时,享受您的愉快之旅吧!');
|
||||
|
||||
//注销邀请码并将关注邀请用户
|
||||
if($GLOBALS['TS_SITE']['isinvite']=='1' && $invitecode){
|
||||
|
||||
//邀请码信息
|
||||
$strInviteCode = $this->find('user_invites',array(
|
||||
'invitecode'=>$invitecode,
|
||||
));
|
||||
|
||||
$this->create('user_follow',array(
|
||||
'userid'=>$userid,
|
||||
'touserid'=>$strInviteCode['userid'],
|
||||
));
|
||||
|
||||
//注销
|
||||
$this->update('user_invites',array(
|
||||
'invitecode'=>$invitecode,
|
||||
),array(
|
||||
'isused'=>'1',
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
return $userid;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取用户头像
|
||||
* @param $strUser
|
||||
* @return string
|
||||
*/
|
||||
function getUserFace($strUser){
|
||||
if($strUser['face']){
|
||||
$strFace = tsXimg($strUser['face'],'user',120,120,$strUser['path'],1);
|
||||
|
||||
if($GLOBALS['TS_SITE']['file_upload_type']==1){
|
||||
$strFace .= '&v='.$strUser['uptime'];
|
||||
}else{
|
||||
$strFace .= '?v='.$strUser['uptime'];
|
||||
}
|
||||
|
||||
}else{
|
||||
$strFace = SITE_URL.'public/images/user_large.jpg';
|
||||
}
|
||||
return $strFace;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取最新会员
|
||||
*/
|
||||
function getNewUser($num){
|
||||
$arrUser = $this->findAll('user_info',null,'addtime desc','userid,username,face,path,addtime,uptime',$num);
|
||||
foreach($arrUser as $key=>$item){
|
||||
$arrUser[$key]['face'] = $this->getUserFace($item);
|
||||
}
|
||||
return $arrUser;
|
||||
}
|
||||
|
||||
//获取活跃会员
|
||||
public function getHotUser($num){
|
||||
$arrUser = $this->findAll('user_info',null,'uptime desc','userid,username,face,path,addtime,uptime',$num);
|
||||
foreach($arrUser as $key=>$item){
|
||||
$arrUser[$key]['face'] = $this->getUserFace($item);
|
||||
}
|
||||
return $arrUser;
|
||||
}
|
||||
|
||||
//最多关注的用户
|
||||
public function getFollowUser($num){
|
||||
$arrUser = $this->findAll('user_info',null,'count_followed desc','userid,username,face,path,count_followed,addtime,uptime',$num);
|
||||
foreach($arrUser as $key=>$item){
|
||||
$arrUser[$key]['face'] = $this->getUserFace($item);
|
||||
}
|
||||
return $arrUser;
|
||||
}
|
||||
|
||||
//最多积分的用户
|
||||
public function getScoreUser($num){
|
||||
$arrUser = $this->findAll('user_info',null,'count_score desc','userid,username,face,path,count_score,addtime,uptime',$num);
|
||||
foreach($arrUser as $key=>$item){
|
||||
$arrUser[$key]['face'] = $this->getUserFace($item);
|
||||
}
|
||||
return $arrUser;
|
||||
}
|
||||
|
||||
#获取简单的用户信息
|
||||
function getSimpleUser($userid){
|
||||
$strUser = $this->find('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),'userid,username,face,path,signed,allscore,uptime');
|
||||
if($strUser){
|
||||
$strUser['face'] = $this->getUserFace($strUser);
|
||||
$strUser['signed'] = tsTitle($strUser['signed']);
|
||||
$strUser['rolename'] = $this->getRole($strUser['allscore']);
|
||||
return $strUser;
|
||||
}else{
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
//获取一个用户的信息
|
||||
function getOneUser($userid){
|
||||
|
||||
$strUser = $this->find('user_info',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
|
||||
if($strUser){
|
||||
|
||||
$strUser['username'] = tsTitle($strUser['username']);
|
||||
$strUser['email'] = tsTitle($strUser['email']);
|
||||
$strUser['phone'] = tsTitle($strUser['phone']);
|
||||
$strUser['province'] = tsTitle($strUser['province']);
|
||||
$strUser['city'] = tsTitle($strUser['city']);
|
||||
$strUser['signed'] = tsTitle($strUser['signed']);
|
||||
$strUser['about'] = tsTitle($strUser['about']);
|
||||
$strUser['address'] = tsTitle($strUser['address']);
|
||||
|
||||
$strUser['face'] = $this->getUserFace($strUser);
|
||||
|
||||
$strUser['rolename'] = $this->getRole($strUser['allscore']);
|
||||
|
||||
}else{
|
||||
$strUser = '';
|
||||
}
|
||||
|
||||
return $strUser;
|
||||
}
|
||||
|
||||
//用户是否存在
|
||||
public function isUser($userid){
|
||||
|
||||
$isUser = $this->findCount('user',array('userid'=>$userid));
|
||||
|
||||
if($isUser == 0){
|
||||
return false;
|
||||
}else{
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param int $js
|
||||
* @param string $userkey
|
||||
* @return int
|
||||
*/
|
||||
public function isLogin($js=0, $userkey=''){
|
||||
|
||||
$userid = tsIntval($_SESSION['tsuser']['userid']);
|
||||
|
||||
if($js && $userid==0 && $userkey==''){
|
||||
getJson('你还没有登录',$js);
|
||||
}
|
||||
|
||||
#通过userkey返回userid
|
||||
if($js && $userid==0 && $userkey){
|
||||
$userid = $this->getUserIdByUserKey($userkey);
|
||||
return $userid;
|
||||
}
|
||||
|
||||
if($userid>0){
|
||||
if($this->isUser($userid)){
|
||||
return $userid;
|
||||
}else{
|
||||
header("Location: ".tsUrl('user','login'));
|
||||
exit;
|
||||
}
|
||||
}else{
|
||||
header("Location: ".tsUrl('user','login'));
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//根据用户积分获取用户角色
|
||||
public function getRole($score){
|
||||
global $tsMySqlCache;
|
||||
$arrRole = fileRead('data/user_role.php');
|
||||
|
||||
if($arrRole==''){
|
||||
$arrRole = $tsMySqlCache->get('user_role');
|
||||
}
|
||||
|
||||
foreach($arrRole as $key=>$item){
|
||||
if($score > $item['score_start'] && $score <= $item['score_end'] || $score > $item['score_start'] && $item['score_end']==0 || $score >=0 && $score <= $item['score_end']){
|
||||
return $item['rolename'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加积分
|
||||
* $userid 用户ID
|
||||
* $scorename 积分名字
|
||||
* $score 积分
|
||||
* @issx 上线限制0限制1不限制
|
||||
*/
|
||||
public function addScore($userid,$scorename,$score,$issx=0){
|
||||
if($userid && $scorename && $score){
|
||||
|
||||
|
||||
#计算当天已经获得的积分
|
||||
$starttime = strtotime(date('Y-m-d 00:00:01'));
|
||||
$endtime = strtotime(date('Y-m-d 23:59:59'));
|
||||
$strDayScore = $this->db->once_fetch_assoc("select SUM(score) as dayscore from ".dbprefix."user_score_log where `userid`='$userid' and `status`='0' and `addtime`>='$starttime' and `addtime`<='$endtime'");
|
||||
|
||||
#用户每日获得积分上限
|
||||
if($strDayScore['dayscore']<$GLOBALS['TS_SITE']['dayscoretop'] || $issx==1){
|
||||
|
||||
//添加积分记录
|
||||
$this->create('user_score_log',array(
|
||||
'userid'=>$userid,
|
||||
'scorename'=>$scorename,
|
||||
'score'=>$score,
|
||||
'status'=>0,
|
||||
'addtime'=>time(),
|
||||
));
|
||||
|
||||
//计算总积分
|
||||
$strUser = $this->find('user_info',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
|
||||
$strAllScore = $this->db->once_fetch_assoc("select SUM(score) as allscore from ".dbprefix."user_score_log where `userid`='$userid' and `status`='0'");
|
||||
|
||||
$this->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'allscore'=>$strAllScore['allscore'],
|
||||
'count_score'=>$strUser['count_score']+$score,
|
||||
));
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 减去积分
|
||||
*/
|
||||
public function delScore($userid,$scorename,$score){
|
||||
if($userid && $scorename && $score){
|
||||
|
||||
//计算总积分
|
||||
$strUser = $this->find('user_info',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
|
||||
if($strUser['count_score']>=$score){
|
||||
|
||||
//添加积分记录
|
||||
$this->create('user_score_log',array(
|
||||
'userid'=>$userid,
|
||||
'scorename'=>$scorename,
|
||||
'score'=>$score,
|
||||
'status'=>1,
|
||||
'addtime'=>time(),
|
||||
));
|
||||
|
||||
$this->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'count_score'=>$strUser['count_score']-$score,
|
||||
));
|
||||
|
||||
return true;
|
||||
|
||||
}else{
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理积分
|
||||
*
|
||||
* @param [type] $app
|
||||
* @param [type] $ac
|
||||
* @param string $mg 指向后台管理文件(用于后台操作得积分处理)
|
||||
* @param string $api 指向API接口文件(用于API接口得积分处理)
|
||||
* @param string $ts
|
||||
* @param integer $uid 指定用户ID
|
||||
* @param integer $isday 是否一天只给一次积分,默认0否1是
|
||||
* @return void
|
||||
*/
|
||||
function doScore($app,$ac,$mg='',$api='',$ts='',$uid=0,$isday=0){
|
||||
$userid = tsIntval($_SESSION['tsuser']['userid']);
|
||||
if($uid) $userid=$uid;
|
||||
$strScore = $this->find('user_score',array(
|
||||
'app'=>$app,
|
||||
'action'=>$ac,
|
||||
'mg'=>$mg,
|
||||
'api'=>$api,
|
||||
'ts'=>$ts,
|
||||
));
|
||||
|
||||
if($strScore && $userid){
|
||||
if($strScore['status']=='0'){
|
||||
if($isday==1){
|
||||
//获取最新得一条积分记录
|
||||
$strScoreLog = $this->find('user_score_log',array(
|
||||
'userid'=>$userid,
|
||||
'scorename'=>$strScore['scorename'],
|
||||
),null,'addtime desc');
|
||||
if(($strScoreLog && date('Y-m-d H:i:s',$strScoreLog['addtime'])<date('Y-m-d 00:00:01')) || $strScoreLog==''){
|
||||
$this->addScore($userid,$strScore['scorename'],$strScore['score']);
|
||||
}
|
||||
}else{
|
||||
//0加积分
|
||||
$this->addScore($userid,$strScore['scorename'],$strScore['score']);
|
||||
}
|
||||
}elseif($strScore['status']=='1'){
|
||||
//1减积分
|
||||
$this->delScore($userid,$strScore['scorename'],$strScore['score']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//删除用户一切数据
|
||||
function toEmpty($userid){
|
||||
|
||||
$strUser = $this->find('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),'userid,email,phone,face');
|
||||
|
||||
#禁用用户Email账号
|
||||
$this->replace('anti_email',array(
|
||||
'email'=>$strUser['email'],
|
||||
),array(
|
||||
'email'=>$strUser['email'],
|
||||
'addtime'=>date('Y-m-d H:i:s'),
|
||||
));
|
||||
|
||||
#禁用用户手机号
|
||||
$this->replace('anti_phone',array(
|
||||
'phone'=>$strUser['phone'],
|
||||
),array(
|
||||
'phone'=>$strUser['phone'],
|
||||
'addtime'=>date('Y-m-d H:i:s'),
|
||||
));
|
||||
|
||||
#用户头像
|
||||
if($strUser['face']){
|
||||
|
||||
if($GLOBALS['TS_SITE']['file_upload_type']==1){
|
||||
deleteAliOssFile('uploadfile/user/'.$strUser['face']);
|
||||
}else{
|
||||
unlink('uploadfile/user/'.$strUser['photo']);
|
||||
tsDimg($strUser['face'],'user','120','120',$strUser['path']);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#用户相关数据
|
||||
$this->delete('user',array('userid'=>$userid));
|
||||
$this->delete('user_info',array('userid'=>$userid));
|
||||
$this->delete('user_follow',array('userid'=>$userid));
|
||||
$this->delete('user_follow',array('touserid'=>$userid));
|
||||
$this->delete('user_gb',array('userid'=>$userid));
|
||||
$this->delete('user_gb',array('touserid'=>$userid));
|
||||
$this->delete('user_open',array('userid'=>$userid));
|
||||
$this->delete('user_score_log',array('userid'=>$userid));
|
||||
|
||||
#文章
|
||||
$arrArticle = $this->findAll('article',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
foreach($arrArticle as $key=>$item){
|
||||
aac('article')->deleteArticle($item);
|
||||
}
|
||||
$this->delete('article_user',array('userid'=>$userid));
|
||||
|
||||
#草稿箱
|
||||
$this->delete('draft',array('userid'=>$userid));
|
||||
|
||||
#编辑器上传的文件
|
||||
$arrEditor = $this->findAll('editor',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
foreach($arrEditor as $key=>$item){
|
||||
unlink('uploadfile/editor/'.$item['url']);
|
||||
}
|
||||
$this->delete('editor',array('userid'=>$userid));
|
||||
|
||||
#小组
|
||||
$this->delete('topic',array('userid'=>$userid));
|
||||
$this->delete('group_user',array('userid'=>$userid));
|
||||
|
||||
//attach
|
||||
$this->delete('attach',array('userid'=>$userid));
|
||||
$this->delete('attach_album',array('userid'=>$userid));
|
||||
|
||||
//message
|
||||
$this->delete('message',array('userid'=>$userid));
|
||||
$this->delete('message',array('touserid'=>$userid));
|
||||
|
||||
//photo
|
||||
$this->delete('photo',array('userid'=>$userid));
|
||||
$this->delete('photo_album',array('userid'=>$userid));
|
||||
|
||||
//tag
|
||||
$this->delete('tag_user_index',array('userid'=>$userid));
|
||||
|
||||
//weibo
|
||||
$this->delete('weibo',array('userid'=>$userid));
|
||||
|
||||
//活动ts_event
|
||||
$this->delete('event',array('userid'=>$userid));
|
||||
$this->delete('event_user',array('userid'=>$userid));
|
||||
|
||||
//问答ts_ask
|
||||
$this->delete('ask',array('userid'=>$userid));
|
||||
$this->delete('ask_comment',array('userid'=>$userid));
|
||||
$this->delete('ask_comment_op',array('userid'=>$userid));
|
||||
|
||||
#删除评论ts_comment
|
||||
$this->delete('comment',array('userid'=>$userid));
|
||||
#删除点赞ts_love
|
||||
$this->delete('love',array('userid'=>$userid));
|
||||
|
||||
}
|
||||
|
||||
|
||||
//销毁前台session退出登陆
|
||||
function logout(){
|
||||
unset($_SESSION['tsuser']);
|
||||
session_destroy();
|
||||
setcookie("ts_email", '', time()+3600,'/');
|
||||
setcookie("ts_autologin", '', time()+3600,'/');
|
||||
}
|
||||
|
||||
//用户签到
|
||||
function signin(){
|
||||
|
||||
$userid = tsIntval($GLOBALS['TS_USER']['userid']);
|
||||
|
||||
$zuotian = date('Y-m-d',strtotime("-1 day"));
|
||||
|
||||
$jintian = date('Y-m-d');
|
||||
|
||||
|
||||
$zuotianSign = $this->find('sign',array(
|
||||
'userid'=>$userid,
|
||||
'addtime'=>$zuotian,
|
||||
));
|
||||
|
||||
$jintianSign = $this->find('sign',array(
|
||||
'userid'=>$userid,
|
||||
'addtime'=>$jintian,
|
||||
));
|
||||
|
||||
if($jintianSign==''){
|
||||
|
||||
if($zuotianSign==''){
|
||||
$this->create('sign',array(
|
||||
'userid'=>$userid,
|
||||
'num'=>1,
|
||||
'addtime'=>$jintian,
|
||||
));
|
||||
}else{
|
||||
|
||||
$this->create('sign',array(
|
||||
'userid'=>$userid,
|
||||
'num'=>$zuotianSign['num']+1,
|
||||
'addtime'=>$jintian,
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
//加积分
|
||||
$this->doScore('user','signin');
|
||||
|
||||
return true;
|
||||
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 判断是否允许用户发布内容
|
||||
*/
|
||||
public function isPublisher(){
|
||||
$publisher = $GLOBALS['TS_SITE']['publisher'];
|
||||
$userid = tsIntval($GLOBALS['TS_USER']['userid']);
|
||||
|
||||
if($publisher){
|
||||
|
||||
$ispublisher = $this->findCount('user_info',array(
|
||||
'userid'=>$userid,
|
||||
$publisher=>1,
|
||||
));
|
||||
|
||||
if($ispublisher){
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
|
||||
}else{
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 通过 userid 获取 userkey
|
||||
* @param $userid
|
||||
* @return bool|string
|
||||
*/
|
||||
public function getUserKeyByUserId($userid){
|
||||
include 'thinksaas/class.crypt.php';
|
||||
$crypt= new crypt();
|
||||
return $crypt->encrypt($userid,$GLOBALS['TS_SITE']['site_pkey']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过userkey获取userid
|
||||
* @param $userkey
|
||||
*/
|
||||
public function getUserIdByUserKey($userkey){
|
||||
include 'thinksaas/class.crypt.php';
|
||||
$crypt= new crypt();
|
||||
$userid = $crypt->decrypt($userkey,$GLOBALS['TS_SITE']['site_pkey']);
|
||||
|
||||
$isUser = $this->findCount('user',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
|
||||
if($isUser == 0){
|
||||
|
||||
echo json_encode(array(
|
||||
|
||||
'status'=> 0,
|
||||
'msg'=> '非法操作',
|
||||
'data'=> '',
|
||||
|
||||
));
|
||||
exit;
|
||||
|
||||
}else{
|
||||
|
||||
return $userid;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 统计用户关注数和粉丝数
|
||||
*
|
||||
* @param [type] $userid
|
||||
* @return void
|
||||
*/
|
||||
public function countFollowFans($userid){
|
||||
|
||||
//关注数
|
||||
$count_follow = $this->findCount('user_follow',array(
|
||||
'userid'=>$userid,
|
||||
));
|
||||
|
||||
//粉丝数
|
||||
$count_followed = $this->findCount('user_follow',array(
|
||||
'touserid'=>$userid,
|
||||
));
|
||||
|
||||
$this->update('user_info',array(
|
||||
'userid'=>$userid,
|
||||
),array(
|
||||
'count_follow'=>$count_follow,
|
||||
'count_followed'=>$count_followed,
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取匿名用户ID
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function getNimingId(){
|
||||
$email = 'null@null.com';
|
||||
$strUser = $this->find('user',array(
|
||||
'email'=>$email,
|
||||
));
|
||||
if($strUser){
|
||||
$userid = $strUser['userid'];
|
||||
}else{
|
||||
$salt = md5(rand());
|
||||
$pwd = random(6);
|
||||
$userid = $this->create('user',array(
|
||||
'pwd'=>md5($salt.$pwd),
|
||||
'salt'=>$salt,
|
||||
'email'=>$email,
|
||||
'phone'=>$email,
|
||||
));
|
||||
//插入用户信息
|
||||
$this->create('user_info',array(
|
||||
'userid' => $userid,
|
||||
'fuserid' => 0,
|
||||
'ugid' => 3,
|
||||
'username' => '匿名用户',
|
||||
'email' => $email,
|
||||
'phone' => $email,
|
||||
'ip' => getIp(),
|
||||
'isverify'=>1,
|
||||
'isverifyphone'=>1,
|
||||
'addtime' => time(),
|
||||
'uptime' => time(),
|
||||
));
|
||||
}
|
||||
return $userid;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//析构函数
|
||||
public function __destruct(){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
defined('IN_TS') or die('Access Denied.');
|
||||
|
||||
$skin = 'default';
|
||||
|
||||
$TS_APP['appname'] = '用户';
|
||||
|
||||
/*
|
||||
* APP独立数据库配置
|
||||
*/
|
||||
/*
|
||||
$tsAppDb['sql']='mysqli';
|
||||
$tsAppDb['host']='localhost';
|
||||
$tsAppDb['port']='3306';
|
||||
$tsAppDb['user']='root';
|
||||
$tsAppDb['pwd']='';
|
||||
$tsAppDb['name']='thinksaas_git_app';
|
||||
$tsAppDb['pre']='ts_';
|
||||
*/
|
||||
@@ -0,0 +1,2 @@
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,73 @@
|
||||
{php include pubTemplate("header_admin")}
|
||||
<div class="midder">
|
||||
{php include template("admin/menu");}
|
||||
|
||||
|
||||
<div class="mb-3">
|
||||
<form method="post" action="{SITE_URL}index.php?app=user&ac=admin&mg=group&ts=add">
|
||||
<input type="text" name="ugname" placeholder="用户组名称" /> <input type="text" name="uginfo" placeholder="用户组介绍" /> <input type="submit" value="创建用户组" />
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<table class="table table-hover">
|
||||
|
||||
|
||||
<thead class="thead-light">
|
||||
|
||||
<tr>
|
||||
<th>UGID</th>
|
||||
<th>组名</th>
|
||||
<th>介绍</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
|
||||
</thead>
|
||||
|
||||
|
||||
|
||||
<tbody>
|
||||
|
||||
{loop $arrGroup $key $item}
|
||||
|
||||
|
||||
|
||||
{if !in_array($item['ugid'],array(1,2,3,4))}
|
||||
<form method="post" action="index.php?app=user&ac=admin&mg=group&ts=edit">
|
||||
<tr>
|
||||
<td>{$item['ugid']}</td>
|
||||
<td><input name="ugname" value="{tsTitle($item['ugname'])}"></td>
|
||||
<td><input name="uginfo" value="{tsTitle($item['uginfo'])}"></td>
|
||||
<td>
|
||||
<input type="hidden" name="ugid" value="{$item['ugid']}">
|
||||
<input type="submit" class="btn btn-sm btn-outline-secondary" value="修改">
|
||||
<a class="btn btn-sm btn-outline-secondary" onclick="return confirm('确定删除吗?')" href="{SITE_URL}index.php?app=user&ac=admin&mg=group&ts=delete&ugid={$item['ugid']}">删除</a>
|
||||
</td>
|
||||
</tr>
|
||||
</form>
|
||||
{else}
|
||||
<tr>
|
||||
<td>{$item['ugid']}</td>
|
||||
<td>{tsTitle($item['ugname'])}</td>
|
||||
<td class="fs12 c9">{tsTitle($item['uginfo'])}</td>
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{/if}
|
||||
|
||||
|
||||
|
||||
{/loop}
|
||||
|
||||
|
||||
</tbody>
|
||||
|
||||
|
||||
|
||||
</table>
|
||||
</div>
|
||||
{php include pubTemplate("footer_admin")}
|
||||
@@ -0,0 +1,29 @@
|
||||
{php include pubTemplate("header_admin")}
|
||||
<div class="midder">
|
||||
{php include template("admin/menu");}
|
||||
<div class="page">{$pageUrl}</div>
|
||||
<table class="table table-hover">
|
||||
|
||||
|
||||
<thead class="thead-light">
|
||||
|
||||
<tr><th>id</th><th>userid</th><th>touserid</th><th>content</th><th>addtime</th><th>操作</th></tr>
|
||||
|
||||
</thead>
|
||||
|
||||
|
||||
|
||||
<tbody>
|
||||
|
||||
{loop $arrGuestbook $key $item}
|
||||
<tr><td>{$item['id']}</td><td>{$item['userid']}</td><td>{$item['touserid']}</td><td>{php echo tsTitle($item['content'])}</td><td>{$item['addtime']}</td><td><a onclick="return confirm('确定删除吗?')" href="{SITE_URL}index.php?app=user&ac=admin&mg=guestbook&ts=delete&page={$page}&guestid={$item['id']}">删除</a></td></tr>
|
||||
{/loop}
|
||||
|
||||
|
||||
</tbody>
|
||||
|
||||
|
||||
|
||||
</table>
|
||||
</div>
|
||||
{php include pubTemplate("footer_admin")}
|
||||
@@ -0,0 +1,33 @@
|
||||
|
||||
<div class="tabnav">
|
||||
<h6>用户管理</h6>
|
||||
<ul>
|
||||
<li {if $mg=='options'}class="select"{/if}><a href="{SITE_URL}index.php?app=user&ac=admin&mg=options">用户配置</a></li>
|
||||
|
||||
<li {if $mg=='permissions'}class="select"{/if}><a href="{SITE_URL}index.php?app=user&ac=admin&mg=permissions">权限配置</a></li>
|
||||
|
||||
<li {if $mg=='user' && $ts=='list'}class="select"{/if}><a href="{SITE_URL}index.php?app=user&ac=admin&mg=user&ts=list">用户管理</a></li>
|
||||
|
||||
{if $mg=='user' && $ts=='view'}<li class="select"><a href="{SITE_URL}index.php?app=user&ac=admin&mg=user&ts=list">{$strUser[username]}用户信息</a></li>
|
||||
{/if}
|
||||
|
||||
<li {if $mg=='group' && $ts=='list'}class="select"{/if}><a href="{SITE_URL}index.php?app=user&ac=admin&mg=group&ts=list">用户组</a></li>
|
||||
|
||||
<li {if $mg=='role' && $ts=='list'}class="select"{/if}><a href="{SITE_URL}index.php?app=user&ac=admin&mg=role&ts=list">角色管理</a></li>
|
||||
|
||||
<li {if $mg=='score' && $ts=='list'}class="select"{/if}><a href="{SITE_URL}index.php?app=user&ac=admin&mg=score&ts=list">积分设置</a></li>
|
||||
|
||||
<li {if $mg=='score' && $ts=='send'}class="select"{/if}><a href="{SITE_URL}index.php?app=user&ac=admin&mg=score&ts=send">加减积分</a></li>
|
||||
|
||||
<li {if $mg=='guestbook' && $ts=='list'}class="select"{/if}><a href="{SITE_URL}index.php?app=user&ac=admin&mg=guestbook&ts=list">留言管理</a></li>
|
||||
|
||||
|
||||
<li {if $mg=='user' && $ts=='add'}class="select"{/if}>
|
||||
<a href="index.php?app=user&ac=admin&mg=user&ts=add">创建新用户</a>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div style="height: 100px;"></div>
|
||||
@@ -0,0 +1,30 @@
|
||||
{php include pubTemplate("header_admin")}
|
||||
|
||||
<div class="midder">
|
||||
|
||||
{php include template("admin/menu");}
|
||||
|
||||
<form method="POST" action="{SITE_URL}index.php?app=user&ac=admin&mg=options&ts=do">
|
||||
<table class="table table-hover">
|
||||
|
||||
<tr><td>APP名称:</td><td><input style="width:300px;" name="option[appname]" value="{$strOption[appname]}" /></td></tr>
|
||||
<tr><td>APP介绍:</td><td><textarea style="width:300px;" name="option[appdesc]">{$strOption[appdesc]}</textarea></td></tr>
|
||||
|
||||
<tr><td>APP关键词:</td><td><input style="width:300px;" name="option[appkey]" value="{$strOption[appkey]}" /></td></tr>
|
||||
|
||||
<tr><td>APP是否启用:</td><td><input {if $strOption[isenable]=='0'}checked="select"{/if} name="option[isenable]" type="radio" value="0" />启用 <input {if $strOption[isenable]=='1'}checked="select"{/if} name="option[isenable]" type="radio" value="1" />关闭</td></tr>
|
||||
|
||||
<tr><td>默认加入小组 :</td><td><input style="width:300px;" name="option[isgroup]" value="{$strOption[isgroup]}" /> (输入小组的ID,不是小组名称,多个请用,号分开,如1,2,3)</td></tr>
|
||||
|
||||
<tr><td>禁止注册用户名 :</td><td><input style="width:300px;" name="option[banuser]" value="{$strOption['banuser']}" /> (禁止用户注册的用户名,多个用|分割)</td></tr>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<tr><td></td><td><input class="btn btn-primary" type="submit" value="提 交" /></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{php include pubTemplate("footer_admin")}
|
||||
@@ -0,0 +1,177 @@
|
||||
{php include pubTemplate("header_admin")}
|
||||
|
||||
<div class="midder">
|
||||
|
||||
{php include template("admin/menu");}
|
||||
|
||||
|
||||
|
||||
<div class="mb-3">
|
||||
{loop $arrUg $key $item}
|
||||
<a class="btn btn-sm {if $item['ugid']==$ugid}btn-secondary{else}btn-outline-secondary{/if}" href="{SITE_URL}index.php?app=user&ac=admin&mg=permissions&ugid={$item['ugid']}">{$item['ugname']}</a>
|
||||
{/loop}
|
||||
</div>
|
||||
|
||||
|
||||
<form method="POST" action="index.php?app=user&ac=admin&mg=permissions&ts=do">
|
||||
|
||||
|
||||
<h6 class="font-weight-bold fs14">前台权限</h6>
|
||||
|
||||
<table class="table table-hover">
|
||||
|
||||
<tr>
|
||||
<td width="150">查看用户空间:</td>
|
||||
<td>
|
||||
<select name="option[user_space]">
|
||||
<option value="1" {if $TS_APP['permissions'][$ugid]['user_space']==1}selected{/if}>允许</option>
|
||||
<option value="0" {if $TS_APP['permissions'][$ugid]['user_space']==0}selected{/if}>拒绝</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td>查看用户帖子:</td>
|
||||
<td>
|
||||
<select name="option[user_topic]">
|
||||
<option value="1" {if $TS_APP['permissions'][$ugid]['user_topic']==1}selected{/if}>允许</option>
|
||||
<option value="0" {if $TS_APP['permissions'][$ugid]['user_topic']==0}selected{/if}>拒绝</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td>查看用户小组:</td>
|
||||
<td>
|
||||
<select name="option[user_group]">
|
||||
<option value="1" {if $TS_APP['permissions'][$ugid]['user_group']==1}selected{/if}>允许</option>
|
||||
<option value="0" {if $TS_APP['permissions'][$ugid]['user_group']==0}selected{/if}>拒绝</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td>查看用户文章:</td>
|
||||
<td>
|
||||
<select name="option[user_article]">
|
||||
<option value="1" {if $TS_APP['permissions'][$ugid]['user_article']==1}selected{/if}>允许</option>
|
||||
<option value="0" {if $TS_APP['permissions'][$ugid]['user_article']==0}selected{/if}>拒绝</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>查看用户粉丝:</td>
|
||||
<td>
|
||||
<select name="option[user_followed]">
|
||||
<option value="1" {if $TS_APP['permissions'][$ugid]['user_followed']==1}selected{/if}>允许</option>
|
||||
<option value="0" {if $TS_APP['permissions'][$ugid]['user_followed']==0}selected{/if}>拒绝</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td>查看用户关注:</td>
|
||||
<td>
|
||||
<select name="option[user_follow]">
|
||||
<option value="1" {if $TS_APP['permissions'][$ugid]['user_follow']==1}selected{/if}>允许</option>
|
||||
<option value="0" {if $TS_APP['permissions'][$ugid]['user_follow']==0}selected{/if}>拒绝</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td>查看用户留言:</td>
|
||||
<td>
|
||||
<select name="option[user_guestbook]">
|
||||
<option value="1" {if $TS_APP['permissions'][$ugid]['user_guestbook']==1}selected{/if}>允许</option>
|
||||
<option value="0" {if $TS_APP['permissions'][$ugid]['user_guestbook']==0}selected{/if}>拒绝</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<!--不允许游客发布、修改、删除-->
|
||||
{if $ugid==1 || $ugid==2 || $ugid==3}
|
||||
<tr>
|
||||
<td>发布留言:</td>
|
||||
<td>
|
||||
<select name="option[user_guestbook_do]">
|
||||
<option value="1" {if $TS_APP['permissions'][$ugid]['user_guestbook_do']==1}selected{/if}>允许</option>
|
||||
<option value="0" {if $TS_APP['permissions'][$ugid]['user_guestbook_do']==0}selected{/if}>拒绝</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
|
||||
|
||||
|
||||
</table>
|
||||
|
||||
|
||||
<!--管理权限-->
|
||||
{if $ugid==1 || $ugid==2}
|
||||
<h6 class="font-weight-bold fs14">后台权限</h6>
|
||||
<table class="table table-hover">
|
||||
<tr>
|
||||
<td width="150">文章配置:</td>
|
||||
<td>
|
||||
<select name="option[user_admin_options]">
|
||||
<option value="1" {if $TS_APP['permissions'][$ugid]['user_admin_options']==1}selected{/if}>允许</option>
|
||||
<option value="0" {if $TS_APP['permissions'][$ugid]['user_admin_options']==0}selected{/if}>拒绝</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>权限配置:</td>
|
||||
<td>
|
||||
<select name="option[user_admin_permissions]">
|
||||
<option value="1" {if $TS_APP['permissions'][$ugid]['user_admin_permissions']==1}selected{/if}>允许</option>
|
||||
<option value="0" {if $TS_APP['permissions'][$ugid]['user_admin_permissions']==0}selected{/if}>拒绝</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</table>
|
||||
{/if}
|
||||
|
||||
|
||||
|
||||
<h6 class="font-weight-bold fs14">API权限</h6>
|
||||
|
||||
<table class="table table-hover">
|
||||
|
||||
<tr>
|
||||
<td width="150">查看用户:</td>
|
||||
<td>
|
||||
<select name="option[user_api_show]">
|
||||
<option value="1" {if $TS_APP['permissions'][$ugid]['user_api_show']==1}selected{/if}>允许</option>
|
||||
<option value="0" {if $TS_APP['permissions'][$ugid]['user_api_show']==0}selected{/if}>拒绝</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
|
||||
</table>
|
||||
|
||||
|
||||
<input type="hidden" name="ugid" value="{$ugid}">
|
||||
|
||||
<input class="btn btn-primary" type="submit" value="提交修改" />
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
{php include pubTemplate("footer_admin")}
|
||||
@@ -0,0 +1,36 @@
|
||||
{php include pubTemplate("header_admin")}
|
||||
<script src="{SITE_URL}public/js/jquery.min.js" type="text/javascript"></script>
|
||||
<script>
|
||||
function insertMenu(){
|
||||
$("#before").before('<tr><td><input name="rolename[]" /></td><td><input name="score_start[]" /></td><td><input name="score_end[]" /></td></tr>');
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="midder">
|
||||
{php include template("admin/menu");}
|
||||
<form method="POST" action="{SITE_URL}index.php?app=user&ac=admin&mg=role&ts=do">
|
||||
<table class="table table-hover">
|
||||
|
||||
|
||||
<thead class="thead-light">
|
||||
<tr><th>角色名称</th><th>起始积分</th><th>结束积分</th></tr>
|
||||
</thead>
|
||||
|
||||
|
||||
<tbody>
|
||||
|
||||
{loop $arrRole $key $item}
|
||||
<tr><td><input name="rolename[]" value="{$item['rolename']}" /></td><td><input name="score_start[]" value="{$item['score_start']}" /></td><td><input name="score_end[]" value="{$item['score_end']}" /></td></tr>
|
||||
{/loop}
|
||||
<tr id="before"><td><input type="submit" value="修 改" /></td><td></td><td><a href="javascript:void('0');" onclick="insertMenu();">点击增加角色</a>(说明:如需删除某一项,请将要删除的某项清空提交即可。)</td></tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
|
||||
|
||||
|
||||
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
{php include pubTemplate("footer_admin")}
|
||||
@@ -0,0 +1,89 @@
|
||||
{php include pubTemplate("header_admin")}
|
||||
<div class="midder">
|
||||
{php include template("admin/menu");}
|
||||
<div>
|
||||
<table class="table table-hover">
|
||||
|
||||
|
||||
<thead class="thead-light">
|
||||
|
||||
<tr>
|
||||
<th>积分名称</th>
|
||||
<th>key</th>
|
||||
<th>分数</th>
|
||||
<th>对应app</th>
|
||||
<th>对应action</th>
|
||||
<th>对应mg</th>
|
||||
<th>对应api</th>
|
||||
<th>对应ts</th>
|
||||
<th>状态</th>
|
||||
<th>设置</th>
|
||||
</tr>
|
||||
|
||||
</thead>
|
||||
|
||||
|
||||
<tbody>
|
||||
|
||||
|
||||
|
||||
{loop $arrScore $key $item}
|
||||
<form method="post" action="{SITE_URL}index.php?app=user&ac=admin&mg=score&ts=editdo">
|
||||
<tr>
|
||||
<td>{$item['scorename']}</td>
|
||||
<td>{$item['scorekey']}</td>
|
||||
<td><input style="width:70px" name="score" value="{$item['score']}" /></td>
|
||||
<td><input style="width:70px" name="app" value="{$item['app']}" /></td>
|
||||
<td><input style="width:70px" name="action" value="{$item['action']}" /></td>
|
||||
<td><input style="width:70px" name="mg" value="{$item['mg']}" /></td>
|
||||
<td><input style="width:70px" name="api" value="{$item['api']}" /></td>
|
||||
<td><input style="width:70px" name="ts" value="{$item['ts']}" /></td>
|
||||
<td>
|
||||
<select name="status">
|
||||
<option value="0" {if $item['status']=='0'}selected{/if}>加积分</option>
|
||||
<option value="1" {if $item['status']=='1'}selected{/if}>减积分</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<input type="hidden" name="scoreid" value="{$item['scoreid']}" /><input type="submit" value="修改" /> |
|
||||
<a href="{SITE_URL}index.php?app=user&ac=admin&mg=score&ts=delete&scoreid={$item['scoreid']}" onclick="return confirm('确定删除吗?')">删除</a>
|
||||
</td>
|
||||
</tr>
|
||||
</form>
|
||||
{/loop}
|
||||
|
||||
|
||||
|
||||
</tbody>
|
||||
|
||||
|
||||
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
<h6>添加积分节点</h6>
|
||||
<form method="post" action="{SITE_URL}index.php?app=user&ac=admin&mg=score&ts=adddo">
|
||||
<table class="table table-hover">
|
||||
<tr><td width="200">积分名称:</td><td><input type="text" name="scorename" /></td></tr>
|
||||
<tr><td>积分KEY:</td><td><input type="text" name="scorekey" /></td></tr>
|
||||
<tr><td>积分:</td><td><input type="text" name="score" /></td></tr>
|
||||
<tr><td>对应APP:</td><td><input type="text" name="app" /></td></tr>
|
||||
<tr><td>对应ACTION:</td><td><input type="text" name="action" /></td></tr>
|
||||
<tr><td>对应MG:</td><td><input type="text" name="mg" /></td></tr>
|
||||
<tr><td>对应API:</td><td><input type="text" name="api" /></td></tr>
|
||||
<tr><td>对应TS:</td><td><input type="text" name="ts" /></td></tr>
|
||||
<tr><td>状态:</td><td><input type="radio" name="status" value="0" checked="select" />加积分 <input type="radio" name="status" value="1" />减积分</td></tr>
|
||||
<tr><td></td><td><input type="submit" value="提交" /></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<div>
|
||||
<h6>积分使用帮助</h6>
|
||||
<p>1、在需要使用积分的php代码处加:</p>
|
||||
<code>
|
||||
aac('user')->doScore({php echo '$app'},{php echo '$ac'},{php echo '$mg'},{php echo '$api'},{php echo '$ts'},{php echo '$uid'})
|
||||
</code>
|
||||
<p>以上代码具体使用方式请看app/user/class.user.php中doScore方法</p>
|
||||
<p>2、根据对应的app,action,mg,api,ts,uid变量配置好积分</p>
|
||||
</div>
|
||||
</div>{php include pubTemplate("footer_admin")}
|
||||
@@ -0,0 +1,19 @@
|
||||
{php include pubTemplate("header_admin")}
|
||||
<div class="midder">
|
||||
{php include template("admin/menu");}
|
||||
<div>
|
||||
<form method="post" action="{SITE_URL}index.php?app=user&ac=admin&mg=score&ts=senddo">
|
||||
<table class="table table-hover">
|
||||
<tr><td>用户ID:</td><td><input type="text" name="userid" /></td></tr>
|
||||
<tr><td>积分数:</td><td><input type="text" name="score" /></td></tr>
|
||||
<tr><td>状态:</td><td>
|
||||
<input type="radio" name="status" value="0" checked />加
|
||||
<input type="radio" name="status" value="1" />减 <small>(减去的积分不可以大于用户剩余积分,否则减分操作不成功)</small>
|
||||
</td></tr>
|
||||
<tr><td>积分说明:</td><td><input type="text" name="scorename" /></td></tr>
|
||||
<tr><td></td><td><input type="submit" value="执行" /></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{php include pubTemplate("footer_admin")}
|
||||
@@ -0,0 +1,66 @@
|
||||
{php include pubTemplate("header_admin")}
|
||||
<div class="midder">
|
||||
|
||||
{php include template("admin/menu");}
|
||||
|
||||
|
||||
|
||||
|
||||
<div>
|
||||
|
||||
|
||||
|
||||
<form method="post" action="index.php?app=user&ac=admin&mg=user&ts=adddo">
|
||||
<table class="table">
|
||||
<tr>
|
||||
<td width="200">账号(Email/手机号):</td>
|
||||
<td>
|
||||
<input class="form-control" type="text" name="email">
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>用户名:</td>
|
||||
<td>
|
||||
|
||||
<input class="form-control" type="text" name="username">
|
||||
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>密码:</td>
|
||||
<td>
|
||||
|
||||
<input class="form-control" type="password" name="pwd">
|
||||
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<input class="btn btn-sm btn-primary" type="submit" value="创建用户">
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
|
||||
</table>
|
||||
</form>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
{php include pubTemplate("footer_admin")}
|
||||
@@ -0,0 +1,157 @@
|
||||
{php include pubTemplate("header_admin")}
|
||||
<div class="midder">
|
||||
|
||||
{php include template("admin/menu");}
|
||||
|
||||
<div>
|
||||
<form method="get" action="{SITE_URL}index.php">
|
||||
<input type="hidden" name="app" value="user" />
|
||||
<input type="hidden" name="ac" value="admin" />
|
||||
<input type="hidden" name="mg" value="user" />
|
||||
<input type="hidden" name="ts" value="list" />
|
||||
UID:<input type="text" name="userid" /> 用户名:<input type="text" name="username" /> <input type="submit" value="搜索" />
|
||||
|
||||
<a class="btn btn-sm btn-outline-primary" href="{SITE_URL}index.php?app=user&ac=admin&mg=user&ts=clean">一键删除被停用用户</a>
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="page">{$pageUrl}</div>
|
||||
|
||||
<table class="table table-hover">
|
||||
|
||||
|
||||
<thead class="thead-light">
|
||||
|
||||
<tr>
|
||||
<th>UID</th>
|
||||
<th>邀请ID</th>
|
||||
<th>用户组</th>
|
||||
<th>Email</th>
|
||||
<th>手机号</th>
|
||||
<th>姓名</th>
|
||||
<th>注册时间</th>
|
||||
<th>登录IP</th>
|
||||
<th>来自</th>
|
||||
|
||||
<th>操作</th></tr>
|
||||
|
||||
</thead>
|
||||
|
||||
|
||||
|
||||
<tbody>
|
||||
|
||||
{loop $arrAllUser $key $item}
|
||||
<tr class="odd">
|
||||
|
||||
<td>{$item[userid]}</td>
|
||||
|
||||
<td>{$item[fuserid]}</td>
|
||||
<td>
|
||||
|
||||
<select id="user_{$item['userid']}" onchange="changeGroup('{$item['userid']}')">
|
||||
<option value="0" {if $item['ugid']==0}selected{/if}>未分组</option>
|
||||
{loop $arrUg1 $ukey $uitem}
|
||||
<option value="{$ukey}" {if $item['ugid']==$ukey}selected{/if}>{$uitem}</option>
|
||||
{/loop}
|
||||
</select>
|
||||
|
||||
</td>
|
||||
|
||||
<td>
|
||||
|
||||
{$item[email]}
|
||||
|
||||
|
||||
{if $TS_USER['userid']==1 && $item['userid']!=1}
|
||||
<div class="fs12">
|
||||
{if $item['isverify']==1}
|
||||
已验证 <a onclick="return confirm('确定取消?')" href="{SITE_URL}index.php?app=user&ac=admin&mg=user&ts=isverify&userid={$item['userid']}">[取消]</a>
|
||||
{else}
|
||||
<font color="red">未验证</font> <a href="{SITE_URL}index.php?app=user&ac=admin&mg=user&ts=isverify&userid={$item['userid']}">[验证]</a>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
</td>
|
||||
<td>
|
||||
|
||||
{$item['phone']}
|
||||
|
||||
{if $TS_USER['userid']==1 && $item['userid']!=1}
|
||||
<div class="fs12">
|
||||
{if $item['isverifyphone']==1}
|
||||
已验证 <a onclick="return confirm('确定取消?')" href="{SITE_URL}index.php?app=user&ac=admin&mg=user&ts=isverifyphone&userid={$item['userid']}">[取消]</a>
|
||||
{else}
|
||||
<font color="red">未验证</font> <a href="{SITE_URL}index.php?app=user&ac=admin&mg=user&ts=isverifyphone&userid={$item['userid']}">[验证]</a>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
</td>
|
||||
|
||||
<td>{$item[username]}</td>
|
||||
|
||||
<td class="fs12 c9">{php echo date('Y-m-d H:i:s',$item[addtime])}</td>
|
||||
|
||||
<td class="fs12 c9">{$item['ip']}</td>
|
||||
<td>{$item['comefrom']}</td>
|
||||
|
||||
<td>
|
||||
|
||||
<a href="{SITE_URL}index.php?app=user&ac=admin&mg=user&ts=isrenzheng&&userid={$item[userid]}">
|
||||
{if $item[isrenzheng]=='0'}[手工认证]{else}<font color="green">[取消认证]</font>{/if}
|
||||
</a>
|
||||
|
||||
<a href="{SITE_URL}index.php?app=user&ac=admin&mg=user&ts=view&userid={$item[userid]}">[明细]</a>
|
||||
|
||||
{if $item['isadmin']==0}
|
||||
<a href="{SITE_URL}index.php?app=user&ac=admin&mg=user&ts=isenable&&userid={$item[userid]}&page={$page}">
|
||||
{if $item[isenable]=='0'}[停用]{else}<font color="red">[启用]</font>{/if}</a>
|
||||
{/if}
|
||||
|
||||
{if $item['userid']!=1}
|
||||
<a href="{SITE_URL}index.php?app=user&ac=admin&mg=user&ts=pwd&userid={$item[userid]}">[修改密码]</a>
|
||||
<a href="{SITE_URL}index.php?app=user&ac=admin&mg=user&ts=face&userid={$item[userid]}">[清除头像]</a>
|
||||
{/if}
|
||||
|
||||
{if $TS_USER['userid']==1 && $item['userid']!=1}
|
||||
<a href="{SITE_URL}index.php?app=user&ac=admin&mg=user&ts=deldata&userid={$item[userid]}">[删除]</a>
|
||||
<a href="{SITE_URL}index.php?app=user&ac=admin&mg=user&ts=admin&userid={$item['userid']}&token={$_SESSION['token']}">
|
||||
{if $item['isadmin']==0}
|
||||
[设为管理员]
|
||||
{elseif $item['isadmin']==1}
|
||||
<font color="red">[取消管理员]</font>
|
||||
{/if}
|
||||
</a>
|
||||
{/if}
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
{/loop}
|
||||
|
||||
</tbody>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function changeGroup(userid){
|
||||
var ugid = document.getElementById("user_"+userid).value;
|
||||
$.post('index.php?app=user&ac=admin&mg=user&ts=ugid',{'userid':userid,'ugid':ugid},function(rs){
|
||||
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
{php include pubTemplate("footer_admin")}
|
||||
@@ -0,0 +1,20 @@
|
||||
{php include pubTemplate("header_admin")}
|
||||
<!--main-->
|
||||
<div class="midder">
|
||||
|
||||
{php include template("admin/menu");}
|
||||
|
||||
<form method="post" action="{SITE_URL}index.php?app=user&ac=admin&mg=user&ts=pwddo">
|
||||
<table class="table table-hover">
|
||||
<tr><td width="100">Email:</td><td>{$strUser['email']}</td></tr>
|
||||
<tr><td>密码:</td><td><input type="password" name="pwd" /></td></tr>
|
||||
<tr><td></td><td>
|
||||
<input type="hidden" name="userid" value="{$strUser['userid']}" />
|
||||
<input class="btn btn-primary" type="submit" value="修改" />
|
||||
</td></tr>
|
||||
<table>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
{php include pubTemplate("footer_admin")}
|
||||
@@ -0,0 +1,35 @@
|
||||
{php include pubTemplate("header_admin")}
|
||||
<!--main-->
|
||||
<div class="midder">
|
||||
|
||||
{php include template("admin/menu");}
|
||||
|
||||
<table class="table table-hover">
|
||||
|
||||
<thead class="thead-light">
|
||||
<tr><th width="160">字段</th><th>信息</th></tr>
|
||||
</thead>
|
||||
|
||||
|
||||
<tbody>
|
||||
<tr><td>用户名:</td><td>{$strUser['username']}</td></tr>
|
||||
<tr><td>登录账号:</td><td>{$strUser['email']}</td></tr>
|
||||
<tr><td>手机号:</td><td>{if isPhone($strUser['phone'])}{$strUser['phone']}{else}无{/if}</td></tr>
|
||||
<!--{if $strUser[signed]}--><tr><td>签名:</td><td>{$strUser['signed']}</td></tr><!--{/if}-->
|
||||
<!--{if $strUser[blog]}--><tr><td>博客:</td><td>{$strUser['blog']}</td></tr><!--{/if}-->
|
||||
<!--{if $strUser[about]}--><tr><td>关于:</td><td>{$strUser['about']}</td></tr><!--{/if}-->
|
||||
<tr><td>注册日期:</td><td>{php echo date('Y-m-d H:i:s',$strUser['addtime'])}</td></tr>
|
||||
<tr><td>上次访问:</td><td>{php echo date('Y-m-d H:i:s',$strUser['uptime'])}</td></tr>
|
||||
<tr><td>上次访问 IP: </td><td>{$strUser['ip']}</td></tr>
|
||||
<tr><td>积分: </td><td>{$strUser['count_score']}</td></tr>
|
||||
</tbody>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<table>
|
||||
|
||||
</div>
|
||||
|
||||
{php include pubTemplate("footer_admin")}
|
||||
@@ -0,0 +1,3 @@
|
||||
{loop $arrArea $key $item}
|
||||
<option value="{$item[areaid]}">{$item[areaname]}</option>
|
||||
{/loop}
|
||||
@@ -0,0 +1,123 @@
|
||||
{php include pubTemplate("header")}
|
||||
|
||||
<div class="container">
|
||||
|
||||
|
||||
{template menu}
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-8">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{loop $arrArticle $key $item}
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
{if $item['photo']}
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-4">
|
||||
<a href="{tsUrl('article','show',array('id'=>$item['articleid']))}">
|
||||
<img class="mw-100" src="{php echo tsXimg($item['photo'],'article',320,180,$item['path'],'1')}" />
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
|
||||
<div class="h5 fw400"><a href="{tsUrl('article','show',array('id'=>$item['articleid']))}">{$item[title]}</a></div>
|
||||
|
||||
<div class="fs12 text-black-50"><a class="text-black-50" href="{tsUrl('user','space',array('id'=>$item['user']['userid']))}">{$item[user][username]}</a> 发表于 {$item[addtime]}</div>
|
||||
|
||||
<div class="text-black-50 mt-1">{if $item['gaiyao']}{tsTitle($item['gaiyao'])}{else}暂无概要{/if} (<a href="{tsUrl('article','show',array('id'=>$item['articleid']))}">查看全文</a>)</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="of c9 mt-3 fs12">
|
||||
|
||||
<div class="float-left">
|
||||
分类:<a href="{tsUrl('article','cate',array('id'=>$item['cate']['cateid']))}">{$item['cate']['catename']}</a>
|
||||
</div>
|
||||
<div class="float-right">
|
||||
|
||||
<i class="bi bi-eye"></i> {$item['count_view']}
|
||||
<i class="bi bi-chat-text ml-3"></i> {$item['count_comment']}
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{else}
|
||||
|
||||
<div class="h5 fw400"><a href="{tsUrl('article','show',array('id'=>$item['articleid']))}">{$item['title']}</a></div>
|
||||
|
||||
<div class="fs12 text-black-50"><a class="text-black-50" href="{tsUrl('user','space',array('id'=>$item['user']['userid']))}">{$item['user']['username']}</a> 发表于 {$item['addtime']}</div>
|
||||
|
||||
{if $item['score']==0}
|
||||
<div class="text-black-50 mt-1">{if $item['gaiyao']}{$item['gaiyao']}{else}暂无概要{/if} (<a href="{tsUrl('article','show',array('id'=>$item['articleid']))}">查看全文</a>)</div>
|
||||
{/if}
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="of c9 mt-3 fs12">
|
||||
|
||||
<div class="float-left">
|
||||
分类:<a href="{tsUrl('article','cate',array('id'=>$item['cate']['cateid']))}">{$item['cate']['catename']}</a>
|
||||
</div>
|
||||
<div class="float-right">
|
||||
<i class="bi bi-eye"></i> {$item['count_view']}
|
||||
<i class="bi bi-chat-text ml-3"></i> {$item['count_comment']}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
{/if}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/loop}
|
||||
|
||||
|
||||
<div class="mt-4">{$pageUrl}</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{template userinfo}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,3 @@
|
||||
{loop $arrCity $key $item}
|
||||
<option value="{$item[cityid]}">{$item[cityname]}</option>
|
||||
{/loop}
|
||||
@@ -0,0 +1,31 @@
|
||||
{php include pubTemplate("header")}
|
||||
|
||||
<div class="midder">
|
||||
|
||||
<div class="mc">
|
||||
<h1>{$strUser['username']} </h1>
|
||||
<div class="cleft">
|
||||
<div class="bbox">
|
||||
{template menu}
|
||||
|
||||
<div class="clear"></div>
|
||||
<div class="commlist">
|
||||
<ul>
|
||||
{loop $arrTopicList $key $item}
|
||||
<li><a href="{tsUrl('topic','show',array('id'=>$item['topicid']))}">{php echo htmlspecialchars($item['title'])}</a> <i>{$item['count_comment']}</i></li>
|
||||
{/loop}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
<div class="page">{$pageUrl}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cright">
|
||||
{template userinfo}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,35 @@
|
||||
{php include pubTemplate("header")}
|
||||
|
||||
<div class="midder">
|
||||
|
||||
<div class="mc">
|
||||
<h1>{$strUser['username']} </h1>
|
||||
<div class="cleft">
|
||||
<div class="bbox">
|
||||
{template menu}
|
||||
|
||||
<div class="clear"></div>
|
||||
|
||||
<ul class="topic">
|
||||
{loop $arrComment $key $item}
|
||||
<li><a href="{tsUrl('group','topic',array('id'=>$item['topicid']))}">{php echo htmlspecialchars($item['topic']['title'])}</a> <i>{$item['topic']['count_comment']}</i>
|
||||
<br />
|
||||
<i>“{php echo nl2br(htmlspecialchars($item['content']))}”</i>
|
||||
</li>
|
||||
{/loop}
|
||||
</ul>
|
||||
|
||||
<div class="clear"></div>
|
||||
<div class="page">{$pageUrl}</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cright">
|
||||
{template userinfo}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,50 @@
|
||||
{php include pubTemplate("header")}
|
||||
|
||||
<div class="container">
|
||||
|
||||
|
||||
{template menu}
|
||||
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-8">
|
||||
|
||||
<div class="card">
|
||||
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
{if $arrUser}
|
||||
|
||||
<div class="obss">
|
||||
|
||||
{loop $arrUser $key $item}
|
||||
<dl class="obu"><dt><a class="nbg" href="{tsUrl('user','space',array('id'=>$item['userid']))}">
|
||||
<img alt="{$item['username']}" title="{$item['username']}" class="rounded-circle" src="{$item['face']}" width="48" height="48">
|
||||
</a></dt>
|
||||
<dd class="title-cut text-secondary fs12 mt-1">{$item[username]}</dd></dl>
|
||||
{/loop}
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
<div class="page">{$pageUrl}</div>
|
||||
|
||||
{else}
|
||||
|
||||
<div class="c9 fs12">还没有关注任何人</div>
|
||||
|
||||
{/if}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{template userinfo}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,52 @@
|
||||
{php include pubTemplate("header")}
|
||||
|
||||
<div class="container">
|
||||
|
||||
|
||||
{template menu}
|
||||
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-8">
|
||||
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
{if $arrUser}
|
||||
|
||||
<div class="obss">
|
||||
|
||||
{loop $arrUser $key $item}
|
||||
<dl class="obu"><dt><a class="nbg" href="{tsUrl('user','space',array('id'=>$item['userid']))}">
|
||||
<img alt="{$item['username']}" title="{$item['username']}" class="rounded-circle" src="{$item['face']}" width="48" />
|
||||
</a></dt>
|
||||
<dd class="title-cut text-secondary fs12 mt-1">{$item[username]}</dd></dl>
|
||||
{/loop}
|
||||
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
<div class="page">{$pageUrl}</div>
|
||||
|
||||
|
||||
{else}
|
||||
|
||||
<div class="c9 fs12">还没有任何粉丝</div>
|
||||
|
||||
{/if}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{template userinfo}
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,163 @@
|
||||
{php include pubTemplate("header")}
|
||||
<div class="container">
|
||||
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3"></div>
|
||||
<div class="col-md-6">
|
||||
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body" style="padding: 15px 30px 30px;">
|
||||
|
||||
|
||||
|
||||
<ul class="nav nav-tabs mb-4">
|
||||
{if $TS_SITE['regtype']=='0' || $TS_SITE['regtype']=='2'}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link font-weight-bold active" href="{tsUrl('user','forgetpwd')}">Email重置密码</a>
|
||||
</li>
|
||||
{/if}
|
||||
{if $TS_SITE['regtype']=='1' || $TS_SITE['regtype']=='2'}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link font-weight-bold" href="{tsUrl('user','forgetpwd',array('ts'=>'phone'))}">手机号重置密码</a>
|
||||
</li>
|
||||
{/if}
|
||||
</ul>
|
||||
|
||||
|
||||
<!--{if $TS_SITE['regtype']=='0' || $TS_SITE['regtype']=='2'}-->
|
||||
|
||||
|
||||
|
||||
<form id="comm-form" method="post" action="{SITE_URL}index.php?app=user&ac=forgetpwd&ts=do" role="form">
|
||||
|
||||
<div class="form-group">
|
||||
<label>Email邮箱:</label>
|
||||
<input id="myemail" name="email" type="email" class="form-control" value="" autocomplete="off" placeholder="请输入你的Email账号">
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label>图形验证码:</label>
|
||||
<div style="overflow: hidden;">
|
||||
<input id="authcode" style="float: left;width:50%;" name="authcode" type="text" class="form-control" placeholder="请输入右侧图形验证码">
|
||||
<img src="{SITE_URL}index.php?app=pubs&ac=code" onclick="javascript:newgdcode(this,this.src);" title="点击刷新验证码" alt="点击刷新验证码" style="float:right;cursor:pointer;" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label>Email邮箱验证码:</label>
|
||||
<div style="overflow: hidden;">
|
||||
<input style="float: left;width:60%;" name="emailcode" type="text" class="form-control" placeholder="" >
|
||||
<button id="mybtn" type="button" class="btn btn-outline-secondary" style="float: right;">获取验证码</button>
|
||||
</div>
|
||||
<div class="fs12 text-danger">获取验证码后请登录邮箱查看验证码</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label>新密码:</label>
|
||||
<input name="pwd" type="password" class="form-control" placeholder="输入新密码" check-type="required">
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<input type="hidden" name="token" value="{$_SESSION['token']}" />
|
||||
<button type="submit" class="btn btn-sm btn-info">重置密码</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<!--{/if}-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-md-3"></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!--{if $TS_SITE['is_vaptcha']}-->
|
||||
<script src="https://v-cn.vaptcha.com/v3.js"></script>
|
||||
<script>
|
||||
vaptcha({
|
||||
vid: '{$TS_SITE[vaptcha_vid]}',// 验证单元id
|
||||
mode: 'invisible',// 显示类型 隐藏式
|
||||
scene: 0,// 场景值 默认0
|
||||
area: 'auto' //验证节点区域,默认 auto,可选值 auto,sea,na,cn
|
||||
}).then(function (vaptchaObj) {
|
||||
|
||||
obj = vaptchaObj; //将VAPTCHA验证实例保存到局部变量中
|
||||
|
||||
vaptchaObj.listen("pass", function () {
|
||||
// 验证成功进行后续操作
|
||||
|
||||
serverToken = vaptchaObj.getServerToken()
|
||||
|
||||
sendEmailCode(2,serverToken.token,serverToken.server)
|
||||
|
||||
vaptchaObj.reset(); //重置验证码
|
||||
|
||||
});
|
||||
|
||||
//关闭验证弹窗时触发
|
||||
vaptchaObj.listen("close", function () {
|
||||
//验证弹窗关闭触发
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
$("#mybtn").on("click", function () {
|
||||
var email = $("#myemail").val();
|
||||
var authcode = $("#authcode").val();
|
||||
|
||||
if(email && authcode){
|
||||
//人机验证
|
||||
obj.validate();
|
||||
}else{
|
||||
tsNotice('Email和图形验证码必须填写!');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<!--{else}-->
|
||||
|
||||
<script>
|
||||
$("#mybtn").on("click", function () {
|
||||
var email = $("#myemail").val();
|
||||
var authcode = $("#authcode").val();
|
||||
|
||||
if(email && authcode){
|
||||
sendEmailCode(2)
|
||||
}else{
|
||||
tsNotice('Email和图形验证码必须填写!');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<!--{/if}-->
|
||||
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,156 @@
|
||||
{php include pubTemplate("header")}
|
||||
<div class="container">
|
||||
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3"></div>
|
||||
<div class="col-md-6">
|
||||
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body" style="padding: 15px 30px 30px;">
|
||||
|
||||
|
||||
|
||||
<ul class="nav nav-tabs mb-4">
|
||||
{if $TS_SITE['regtype']=='0' || $TS_SITE['regtype']=='2'}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link font-weight-bold" href="{tsUrl('user','forgetpwd')}">Email重置密码</a>
|
||||
</li>
|
||||
{/if}
|
||||
{if $TS_SITE['regtype']=='1' || $TS_SITE['regtype']=='2'}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link font-weight-bold active" href="{tsUrl('user','forgetpwd',array('ts'=>'phone'))}">手机号重置密码</a>
|
||||
</li>
|
||||
{/if}
|
||||
</ul>
|
||||
|
||||
<!--{if $TS_SITE['regtype']=='1' || $TS_SITE['regtype']=='2'}-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<form id="comm-form" method="post" action="{SITE_URL}index.php?app=user&ac=phone&ts=resetpwd" role="form">
|
||||
|
||||
<div class="form-group">
|
||||
<label>手机号:</label>
|
||||
<input id="myphone" name="phone" type="number" class="form-control" value="" placeholder="输入手机号">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>验证码:</label>
|
||||
<div style="overflow: hidden;">
|
||||
<input id="authcode" style="float: left;width:50%;" name="authcode" type="text" class="form-control" placeholder="">
|
||||
<img src="{SITE_URL}index.php?app=pubs&ac=code" onclick="javascript:newgdcode(this,this.src);" title="点击刷新验证码" alt="点击刷新验证码" style="float:right;cursor:pointer;" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>手机验证码:</label>
|
||||
<div style="overflow: hidden;">
|
||||
<input style="float: left;width:50%;" name="phonecode" type="text" class="form-control" placeholder="">
|
||||
<button id="mybtn" type="button" class="btn btn-outline-secondary" style="float: right;">获取验证码</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label>新密码:</label>
|
||||
<input name="pwd" type="password" class="form-control" placeholder="输入新密码" check-type="required">
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<input type="hidden" name="token" value="{$_SESSION['token']}" />
|
||||
<button type="submit" class="btn btn-sm btn-info">重置密码</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<!--{/if}-->
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-md-3"></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!--{if $TS_SITE['is_vaptcha']}-->
|
||||
<script src="https://v-cn.vaptcha.com/v3.js"></script>
|
||||
<script>
|
||||
vaptcha({
|
||||
vid: '{$TS_SITE[vaptcha_vid]}',// 验证单元id
|
||||
mode: 'invisible',// 显示类型 隐藏式
|
||||
scene: 0,// 场景值 默认0
|
||||
area: 'auto' //验证节点区域,默认 auto,可选值 auto,sea,na,cn
|
||||
}).then(function (vaptchaObj) {
|
||||
|
||||
obj = vaptchaObj; //将VAPTCHA验证实例保存到局部变量中
|
||||
|
||||
vaptchaObj.listen("pass", function () {
|
||||
// 验证成功进行后续操作
|
||||
|
||||
serverToken = vaptchaObj.getServerToken()
|
||||
|
||||
sendPhoneCode(2,serverToken.token,serverToken.server)
|
||||
|
||||
vaptchaObj.reset(); //重置验证码
|
||||
|
||||
});
|
||||
|
||||
//关闭验证弹窗时触发
|
||||
vaptchaObj.listen("close", function () {
|
||||
//验证弹窗关闭触发
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
$("#mybtn").on("click", function () {
|
||||
var phone = $("#myphone").val();
|
||||
var authcode = $("#authcode").val();
|
||||
|
||||
if(phone && authcode){
|
||||
//人机验证
|
||||
obj.validate();
|
||||
}else{
|
||||
tsNotice('手机号和图形验证码必须填写!');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<!--{else}-->
|
||||
|
||||
<script>
|
||||
$("#mybtn").on("click", function () {
|
||||
var phone = $("#myphone").val();
|
||||
var authcode = $("#authcode").val();
|
||||
|
||||
if(phone && authcode){
|
||||
sendPhoneCode(2)
|
||||
}else{
|
||||
tsNotice('手机号和图形验证码必须填写!');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<!--{/if}-->
|
||||
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,42 @@
|
||||
{php include pubTemplate("header")}
|
||||
|
||||
<div class="container">
|
||||
|
||||
|
||||
{template menu}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
{loop $arrGroupList $key $item}
|
||||
<div class="sub-item">
|
||||
<div class="pic">
|
||||
<a href="{tsUrl('group','show',array('id'=>$item[groupid]))}">
|
||||
<img class="rounded" src="{$item[photo]}" alt="{$item[groupname]}" />
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="info">
|
||||
<a href="{tsUrl('group','show',array('id'=>$item[groupid]))}">{$item[groupname]}</a> <font color="#999999">{$item[count_user]}人加入</font>
|
||||
<p>{php echo t($item[groupdesc])}</p>
|
||||
</div>
|
||||
</div>
|
||||
{/loop}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{template userinfo}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,102 @@
|
||||
{php include pubTemplate("header")}
|
||||
|
||||
<div class="container">
|
||||
|
||||
{template menu}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
|
||||
{if tsIntval($TS_USER['userid']) >0 && tsIntval($TS_USER['userid']) != $strUser['userid']}
|
||||
<div class="guest">
|
||||
<img class="rounded-circle" src="{SITE_URL}public/images/user_large.jpg" />
|
||||
<form method="post" action="{SITE_URL}index.php?app=user&ac=guestbook&ts=do">
|
||||
<textarea class="form-control" name="content"></textarea>
|
||||
|
||||
<input type="hidden" name="touserid" value="{$strUser['userid']}" />
|
||||
<input type="hidden" name="token" value="{$_SESSION['token']}" />
|
||||
|
||||
<div class="pd100">
|
||||
<button class="btn btn-sm btn-info" type="submit">添加留言</button>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</form>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="clear"></div>
|
||||
|
||||
<!--回复-->
|
||||
<div id="reguest" style="display:none;">
|
||||
<form method="post" action="{SITE_URL}index.php?app=user&ac=guestbook&ts=redo">
|
||||
<textarea class="form-control" name="content"></textarea>
|
||||
|
||||
<input id="touserid" type="hidden" name="touserid" value="0" />
|
||||
<input id="reid" type="hidden" name="reid" value="0" />
|
||||
|
||||
<div class="pd100">
|
||||
<button class="btn btn-sm btn-info" type="submit">回复</button>
|
||||
<a class="btn btn-sm btn-outline-secondary" href="javascript:void('0')" onclick="reguest()">取消</a>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
{if $arrGuestList}
|
||||
<div class="glist">
|
||||
<ul>
|
||||
|
||||
{loop $arrGuestList $key $item}
|
||||
<li>
|
||||
<a href="{tsUrl('user','space',array('id'=>$item['userid']))}">
|
||||
<img src="{$item['user']['face']}" width="36" height="36" class="rounded-circle" />
|
||||
</a>
|
||||
<div class="content">
|
||||
<p class="c9 fs12"><a href="{tsUrl('user','space',array('id'=>$item['userid']))}">{$item['user']['username']}</a> {$item['addtime']}</p>
|
||||
<div>{$item['content']}</div>
|
||||
{if $item['reply']}
|
||||
<div class="bg-light p-2 text-secondary rounded">回复:{$item['reply']['content']}</div>
|
||||
{/if}
|
||||
|
||||
|
||||
<p class="text-right fs12">
|
||||
|
||||
{if tsIntval($TS_USER['userid']) == $strUser['userid']}
|
||||
<a href="#reguest" onclick="reguest('{$item['userid']}','{$item['id']}','{$item['user']['username']}')"><i class="bi bi-reply"></i> 回复</a>
|
||||
<a class="ml-2" href="{tsUrl('user','guestbook',array('ts'=>'delete','gbid'=>$item['id']))}" onclick="return confirm('确定删除?')"><i class="bi bi-trash"></i> 删除</a>
|
||||
{/if}
|
||||
</p>
|
||||
<!--回复留言-->
|
||||
|
||||
</div>
|
||||
</li>
|
||||
{/loop}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
<div class="page">{$pageUrl}</div>
|
||||
|
||||
{else}
|
||||
<div class="text-black-50">暂无留言!</div>
|
||||
{/if}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{template userinfo}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,112 @@
|
||||
{php include pubTemplate("header")}
|
||||
<!--main-->
|
||||
<div class="container">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="row top10">
|
||||
<div class="col-md-4">
|
||||
|
||||
<dl>
|
||||
|
||||
<dd>
|
||||
<div class="title">用户积分榜<span>积分</span></div>
|
||||
<ul>
|
||||
{loop $arrScoreUser $key $item}
|
||||
{if $key<='2'}
|
||||
<li><div class="avatar"><a href="{tsUrl('user','space',array('id'=>$item['userid']))}"><img src="{$item['face']}" class="rounded-circle" /></a></div>
|
||||
<p><em>{$item['count_score']}</em>
|
||||
<a href="{tsUrl('user','space',array('id'=>$item['userid']))}">{$item['username']}</a></p></li>
|
||||
{elseif $key >= '3'}
|
||||
<li><span>{php echo $key+1}</span><em>{$item['count_score']}</em>
|
||||
<a href="{tsUrl('user','space',array('id'=>$item['userid']))}">{$item['username']}</a></li>
|
||||
{/if}
|
||||
{/loop}
|
||||
</ul>
|
||||
</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
|
||||
|
||||
<dl>
|
||||
|
||||
<dd>
|
||||
<div class="title">用户关注榜<span>关注数</span></div>
|
||||
<ul>
|
||||
{loop $arrFollowUser $key $item}
|
||||
{if $key<='2'}
|
||||
<li><div class="avatar"><a href="{tsUrl('user','space',array('id'=>$item['userid']))}"><img src="{$item['face']}" class="rounded-circle" /></a></div>
|
||||
<p><em>{$item['count_followed']}</em>
|
||||
<a href="{tsUrl('user','space',array('id'=>$item['userid']))}">{$item['username']}</a></p></li>
|
||||
{elseif $key >= '3'}
|
||||
<li><span>{php echo $key+1}</span><em>{$item['count_followed']}</em>
|
||||
<a href="{tsUrl('user','space',array('id'=>$item['userid']))}">{$item['username']}</a></li>
|
||||
{/if}
|
||||
{/loop}
|
||||
</ul>
|
||||
</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
<div class="title">活跃用户<span>时间</span></div>
|
||||
<ul>
|
||||
{loop $arrHotUser $key $item}
|
||||
{if $key<='2'}
|
||||
<li><div class="avatar"><a href="{tsUrl('user','space',array('id'=>$item['userid']))}"><img src="{$item['face']}" class="rounded-circle" /></a></div>
|
||||
<p><em>{php echo getTime($item[uptime],time())}</em>
|
||||
<a href="{tsUrl('user','space',array('id'=>$item['userid']))}">{$item['username']}</a></p></li>
|
||||
{elseif $key >= '3'}
|
||||
<li><span>{php echo $key+1}</span><em>{php echo getTime($item[uptime],time())}</em>
|
||||
<a href="{tsUrl('user','space',array('id'=>$item['userid']))}">{$item['username']}</a></li>
|
||||
{/if}
|
||||
{/loop}
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
<div class="title">新用户<span>时间</span></div>
|
||||
<ul>
|
||||
{loop $arrNewUser $key $item}
|
||||
{if $key<='2'}
|
||||
<li><div class="avatar"><a href="{tsUrl('user','space',array('id'=>$item['userid']))}"><img src="{$item['face']}" class="rounded-circle" /></a></div>
|
||||
<p><em>{php echo getTime($item[addtime],time())}</em>
|
||||
<a href="{tsUrl('user','space',array('id'=>$item['userid']))}">{$item['username']}</a></p></li>
|
||||
{elseif $key >= '3'}
|
||||
<li><span>{php echo $key+1}</span><em>{php echo getTime($item[addtime],time())}</em>
|
||||
<a href="{tsUrl('user','space',array('id'=>$item['userid']))}">{$item['username']}</a></li>
|
||||
{/if}
|
||||
{/loop}
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,58 @@
|
||||
{php include pubTemplate("header")}
|
||||
<!--main-->
|
||||
<div class="container">
|
||||
|
||||
<div class="card">
|
||||
|
||||
<div class="card-header">{$TS_SITE[site_title]}邀请码</div>
|
||||
|
||||
<div class="card-body">
|
||||
<div class="alert alert-info">物质匮乏,一码难求,今日您仅剩下 <span style="font-size:24px;color:#FF6600">{$codeNum}</span> 个邀请码</div>
|
||||
|
||||
{if $codeNum=='0'}
|
||||
<div class="text-center">
|
||||
<a class="btn btn-outline-info" href="{tsUrl('user','invite',array(ts=>code))}">点击申请邀请码</a>
|
||||
</div>
|
||||
{else}
|
||||
|
||||
<div class="row">
|
||||
|
||||
{loop $arrCode $key $item}
|
||||
<div class="col-md-4 fs14 lh30">{$item['invitecode']}</div>
|
||||
{/loop}
|
||||
|
||||
</div>
|
||||
|
||||
{/if}
|
||||
|
||||
|
||||
<table class="table mt-3">
|
||||
<thead class="thead-light">
|
||||
<tr>
|
||||
<th>用户ID</th>
|
||||
<th>用户名</th>
|
||||
<th>加入时间</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
|
||||
{loop $arrInviteUser $key $item}
|
||||
<tr>
|
||||
<td>{$item['userid']}</td>
|
||||
<td>{$item['username']}</td>
|
||||
<td>{php echo date('Y-m-d H:i:s',$item['addtime'])}</td>
|
||||
</tr>
|
||||
{/loop}
|
||||
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,183 @@
|
||||
{php include pubTemplate("header")}
|
||||
<!--main-->
|
||||
<div class="container">
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3"></div>
|
||||
<div class="col-md-6">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body" style="padding: 15px 30px 30px;">
|
||||
|
||||
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<div class="fs24">用户登录</div>
|
||||
|
||||
|
||||
{if $TS_SITE['isplogin']==1}
|
||||
<div><a href="{tsUrl('user','plogin')}"><i class="bi bi-phone"></i> 短信登录</a></div>
|
||||
{/if}
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
|
||||
<div>
|
||||
<div class="form-group">
|
||||
<label>账号</label>
|
||||
|
||||
<input name="email" type="text" class="form-control" placeholder="Email/手机号" onkeyup="this.value=this.value.replace(/[, ]/g,'')" check-type="required">
|
||||
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>密码:</label>
|
||||
|
||||
<input name="pwd" type="password" class="form-control" placeholder="Password" check-type="required">
|
||||
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" name="cktime" value="31536000" checked> 记住我
|
||||
</label>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
|
||||
<input type="hidden" name="jump" value="{$jump}" />
|
||||
<input type="hidden" name="token" value="{$_SESSION['token']}" />
|
||||
<button id="comm-submit" type="submit" class="btn btn-fat btn-success btn-lg btn-block">登录</button>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p><a href="{tsUrl('user','register')}">还没有注册?</a> | <a href="{tsUrl('user','forgetpwd')}">忘记密码?</a></p>
|
||||
|
||||
|
||||
<div class="lh30">
|
||||
{php doAction('user_login_footer')}
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-md-3"></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!--{if $TS_SITE['is_vaptcha']}-->
|
||||
<script src="https://v-cn.vaptcha.com/v3.js"></script>
|
||||
<script>
|
||||
vaptcha({
|
||||
vid: '{$TS_SITE[vaptcha_vid]}',// 验证单元id
|
||||
mode: 'invisible',// 显示类型 隐藏式
|
||||
scene: 0,// 场景值 默认0
|
||||
area: 'auto' //验证节点区域,默认 auto,可选值 auto,sea,na,cn
|
||||
}).then(function (vaptchaObj) {
|
||||
|
||||
obj = vaptchaObj; //将VAPTCHA验证实例保存到局部变量中
|
||||
|
||||
vaptchaObj.listen("pass", function () {
|
||||
// 验证成功进行后续操作
|
||||
var email = $("input[name='email']").val();
|
||||
var pwd = $("input[name='pwd']").val();
|
||||
var cktime = $("input[name='cktime']").val();
|
||||
var jump = $("input[name='jump']").val();
|
||||
var token = $("input[name='token']").val();
|
||||
|
||||
serverToken = vaptchaObj.getServerToken()
|
||||
|
||||
var data = {
|
||||
email:email,
|
||||
pwd:pwd,
|
||||
cktime:cktime,
|
||||
jump:jump,
|
||||
token:token,
|
||||
vaptcha_server:serverToken.server,
|
||||
vaptcha_token:serverToken.token,
|
||||
};
|
||||
tsPost('index.php?app=user&ac=login&ts=do&js=1',data)
|
||||
vaptchaObj.reset(); //重置验证码
|
||||
|
||||
});
|
||||
|
||||
//关闭验证弹窗时触发
|
||||
vaptchaObj.listen("close", function () {
|
||||
//验证弹窗关闭触发
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
$("#comm-submit").on("click", function () {
|
||||
|
||||
var email = $("input[name='email']").val();
|
||||
var pwd = $("input[name='pwd']").val();
|
||||
|
||||
if(email && pwd){
|
||||
//人机验证
|
||||
obj.validate();
|
||||
}else{
|
||||
tsNotice('账号和密码必须输入!');
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
<!--{else}-->
|
||||
|
||||
<script>
|
||||
$("#comm-submit").on("click", function () {
|
||||
var email = $("input[name='email']").val();
|
||||
var pwd = $("input[name='pwd']").val();
|
||||
var cktime = $("input[name='cktime']").val();
|
||||
var jump = $("input[name='jump']").val();
|
||||
var token = $("input[name='token']").val();
|
||||
|
||||
if(email && pwd){
|
||||
var data = {
|
||||
email:email,
|
||||
pwd:pwd,
|
||||
cktime:cktime,
|
||||
jump:jump,
|
||||
token:token,
|
||||
};
|
||||
tsPost('index.php?app=user&ac=login&ts=do&js=1',data)
|
||||
}else{
|
||||
tsNotice('账号和密码必须输入!');
|
||||
}
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
<!--{/if}-->
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,93 @@
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a href="{SITE_URL}">首页</a></li>
|
||||
<li class="breadcrumb-item"><a href="{tsUrl('user')}">{$TS_APP['appname']}</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">{$strUser['username']}</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
|
||||
|
||||
<div class="media">
|
||||
<img class="mr-3 rounded-circle" src="{$strUser[face]}" alt="{$strUser[username]}" width="56">
|
||||
<div class="media-body">
|
||||
|
||||
<h1 class="h4 fw400">{$strUser['username']} <a href="{tsUrl('user','verify')}">{if $strUser['isverify']==1}<img src="{SITE_URL}public/images/rz1.png" alt="通过Email认证" title="通过Email认证" align="absmiddle" width="20" />{else}<img src="{SITE_URL}public/images/rz2.png" alt="未通过Email认证" title="未通过Email认证" align="absmiddle" width="20" />{/if}</a>
|
||||
|
||||
{if $strUser['isrenzheng']==1}
|
||||
<img src="{SITE_URL}public/images/renzheng1.png" width="20" alt="通过人工认证" title="通过人工认证" />
|
||||
{else}
|
||||
<img src="{SITE_URL}public/images/renzheng2.png" width="20" alt="未通过人工认证" title="未通过人工认证" />
|
||||
{/if}</h1>
|
||||
|
||||
|
||||
<div class="text-black-50">
|
||||
{if $strUser['signed']}{$strUser['signed']}{else}懒的都不写签名{/if}
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
|
||||
|
||||
<div class="mt-2 text-right">
|
||||
{if $strUser[userid] != $TS_USER[userid]}
|
||||
{if $strUser[isfollow]}
|
||||
<a class="btn btn-outline-secondary btn-sm" href="javascript:void('0');" onclick="unfollow('{$strUser['userid']}','{$_SESSION['token']}');">取消关注</a>
|
||||
{else}
|
||||
<a class="btn btn-info btn-sm" href="javascript:void('0')" onclick="follow('{$strUser['userid']}','{$_SESSION['token']}');">关注</a>
|
||||
{/if}
|
||||
|
||||
|
||||
{if $TS_USER}
|
||||
<a href="{tsUrl('user','message',array('ts'=>'add','touserid'=>$strUser['userid']))}" rel="nofollow" class="btn btn-outline-secondary btn-sm">发消息</a>
|
||||
{/if}
|
||||
|
||||
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="border-top pt-3 mt-3">
|
||||
<a class="btn btn-sm {if $ac=='space'}btn-outline-secondary{else}text-secondary{/if}" href="{tsUrl('user','space',array('id'=>$strUser['userid']))}">关于</a>
|
||||
<a class="btn btn-sm {if $ac=='topic'}btn-outline-secondary{else}text-secondary{/if}" href="{tsUrl('user','topic',array('id'=>$strUser['userid']))}">帖子</a>
|
||||
<a class="btn btn-sm {if $ac=='group'}btn-outline-secondary{else}text-secondary{/if}" href="{tsUrl('user','group',array('id'=>$strUser['userid']))}">小组</a>
|
||||
<a class="btn btn-sm {if $ac=='article'}btn-outline-secondary{else}text-secondary{/if}" href="{tsUrl('user','article',array('id'=>$strUser['userid']))}">文章</a>
|
||||
|
||||
<a class="btn btn-sm {if $ac=='followed'}btn-outline-secondary{else}text-secondary{/if}" href="{tsUrl('user','followed',array('id'=>$strUser['userid']))}">粉丝</a>
|
||||
<a class="btn btn-sm {if $ac=='follow'}btn-outline-secondary{else}text-secondary{/if}" href="{tsUrl('user','follow',array('id'=>$strUser['userid']))}">关注</a>
|
||||
|
||||
<a class="btn btn-sm {if $ac=='guestbook'}btn-outline-secondary{else}text-secondary{/if}" href="{tsUrl('user','guestbook',array('id'=>$strUser['userid']))}">留言</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
{php include pubTemplate("header")}
|
||||
|
||||
<!--main-->
|
||||
<div class="container">
|
||||
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">发送短消息</div>
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3"></div>
|
||||
<div class="col-md-6">
|
||||
|
||||
|
||||
|
||||
|
||||
<form id="comm-form" class="form-horizontal" method="POST" action="{SITE_URL}index.php?app=user&ac=message&ts=do">
|
||||
|
||||
<div class="form-group">
|
||||
<label>收件人:</label>
|
||||
<div >
|
||||
<div style="padding-top: 7px;">
|
||||
<img alt="{$strTouser[username]}" class="m_sub_img" src="{$strTouser[face]}" width="16" align="absmiddle" /> {$strTouser['username']}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label>消息内容:</label>
|
||||
<div>
|
||||
|
||||
<textarea class="form-control" name="content"></textarea>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
|
||||
<input type="hidden" name="touserid" value="{$strTouser[userid]}" />
|
||||
|
||||
<input type="hidden" name="token" value="{$_SESSION['token']}" />
|
||||
|
||||
<button type="submit" class="btn btn-sm btn-info">点击发送</button>
|
||||
|
||||
<a class="btn btn-sm btn-light" href="{tsUrl('user','space',array('id'=>$strTouser['userid']))}">返回</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-md-3"></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,208 @@
|
||||
{php include pubTemplate("header")}
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3"></div>
|
||||
<div class="col-md-6">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="card border-0">
|
||||
<div class="card-body" style="padding: 30px;">
|
||||
|
||||
|
||||
<ul class="nav nav-tabs mb-4">
|
||||
{if $TS_SITE['regtype']=='0' || $TS_SITE['regtype']=='2'}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link font-weight-bold" href="{tsUrl('user','register')}">Email注册</a>
|
||||
</li>
|
||||
{/if}
|
||||
{if $TS_SITE['regtype']=='1' || $TS_SITE['regtype']=='2'}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link font-weight-bold active" href="{tsUrl('user','phone')}">手机号注册</a>
|
||||
</li>
|
||||
{/if}
|
||||
</ul>
|
||||
|
||||
|
||||
{if $TS_APP[isregister]=='2'}
|
||||
<p>系统升级中,暂时关闭用户注册!</p>
|
||||
<p><a href="{SITE_URL}">返回首页</a></p>
|
||||
{else}
|
||||
|
||||
|
||||
|
||||
<form id="comm-form" method="POST" action="{SITE_URL}index.php?app=user&ac=phone&ts=do">
|
||||
|
||||
{if $TS_SITE['isinvite']=='1'}
|
||||
<div class="form-group">
|
||||
<label>邀请码</label>
|
||||
<input name="invitecode" type="text" class="form-control" placeholder="" check-type="required">
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div class="form-group">
|
||||
<label>帐号</label>
|
||||
<input id="myphone" name="email" type="number" class="form-control" placeholder="手机号" check-type="required">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>密码:</label>
|
||||
|
||||
<input name="pwd" type="password" class="form-control" placeholder="" check-type="required">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>重复密码:</label>
|
||||
<input name="repwd" type="password" class="form-control" placeholder="" check-type="required">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>用户名:</label>
|
||||
<input name="username" type="text" class="form-control" placeholder="" check-type="required">
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label>验证码:</label>
|
||||
|
||||
|
||||
<div class="d-flex flex-row align-items-center">
|
||||
<div class="d-flex">
|
||||
<input id="authcode" name="authcode" type="text" class="form-control" placeholder="" >
|
||||
</div>
|
||||
<div class="d-flex ml-1">
|
||||
|
||||
<img id="imagecode" src="{SITE_URL}index.php?app=pubs&ac=code" onclick="javascript:newgdcode(this,this.src);" title="点击刷新验证码" alt="点击刷新验证码" style="cursor:pointer;" />
|
||||
|
||||
<a href="javascript:void('0');" onclick="changeImageCode();">点击刷新验证码</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label>手机验证码:</label>
|
||||
|
||||
|
||||
<div style="overflow: hidden;">
|
||||
<input style="float: left;width:60%;" name="phonecode" type="text" class="form-control" placeholder="" >
|
||||
<button id="mybtn" type="button" class="btn btn-outline-secondary" style="float: right;">获取验证码</button>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
|
||||
<input type="hidden" name="fuserid" value="{$fuserid}" />
|
||||
<input type="hidden" name="token" value="{$_SESSION['token']}" />
|
||||
<button id="comm-submit" type="submit" class="btn btn-fat btn-success btn-lg btn-block">注册</button>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
<div>
|
||||
{php doAction('user_login_footer')}
|
||||
</div>
|
||||
|
||||
{/if}
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-md-3"></div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!--{if $TS_SITE['is_vaptcha']}-->
|
||||
<script src="https://v-cn.vaptcha.com/v3.js"></script>
|
||||
<script>
|
||||
vaptcha({
|
||||
vid: '{$TS_SITE[vaptcha_vid]}',// 验证单元id
|
||||
mode: 'invisible',// 显示类型 隐藏式
|
||||
scene: 0,// 场景值 默认0
|
||||
area: 'auto' //验证节点区域,默认 auto,可选值 auto,sea,na,cn
|
||||
}).then(function (vaptchaObj) {
|
||||
|
||||
obj = vaptchaObj; //将VAPTCHA验证实例保存到局部变量中
|
||||
|
||||
vaptchaObj.listen("pass", function () {
|
||||
// 验证成功进行后续操作
|
||||
|
||||
serverToken = vaptchaObj.getServerToken()
|
||||
|
||||
sendPhoneCode(1,serverToken.token,serverToken.server)
|
||||
|
||||
vaptchaObj.reset(); //重置验证码
|
||||
|
||||
});
|
||||
|
||||
//关闭验证弹窗时触发
|
||||
vaptchaObj.listen("close", function () {
|
||||
//验证弹窗关闭触发
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
$("#mybtn").on("click", function () {
|
||||
var phone = $("#myphone").val();
|
||||
var authcode = $("#authcode").val();
|
||||
|
||||
if(phone && authcode){
|
||||
//人机验证
|
||||
obj.validate();
|
||||
}else{
|
||||
tsNotice('手机号和图形验证码必须填写!');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<!--{else}-->
|
||||
|
||||
<script>
|
||||
$("#mybtn").on("click", function () {
|
||||
var phone = $("#myphone").val();
|
||||
var authcode = $("#authcode").val();
|
||||
|
||||
if(phone && authcode){
|
||||
sendPhoneCode(1)
|
||||
}else{
|
||||
tsNotice('手机号和图形验证码必须填写!');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<!--{/if}-->
|
||||
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,160 @@
|
||||
{php include pubTemplate("header")}
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-3"></div>
|
||||
<div class="col-md-6">
|
||||
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
|
||||
{if tsIntval($strUser['isverifyphone'])==0 && tsIntval($TS_SITE['isverifyphone'])==1}
|
||||
<div class="alert alert-info">提示:你必须通过手机号验证才可以正常使用本社区</div>
|
||||
{/if}
|
||||
{if $strUser['isverifyphone']==1}
|
||||
<div class="alert alert-success">
|
||||
您已经通过手机号验证!现在可以随便点点看看我们的社区!
|
||||
</div>
|
||||
|
||||
{else}
|
||||
|
||||
|
||||
|
||||
<form id="comm-form" method="post" action="{SITE_URL}index.php?app=user&ac=phone&ts=verifydo">
|
||||
<div class="form-group">
|
||||
<label>手机号</label>
|
||||
|
||||
<div>
|
||||
<input id="myphone" type="number" name="phone" class="form-control" value="{if isPhone($strUser['phone'])}{$strUser['phone']}{else}{/if}">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>图片验证码</label>
|
||||
|
||||
<div class="d-flex flex-row align-items-center">
|
||||
<div class="d-flex"><input id="authcode" type="text" name="authcode" class="form-control" value=""></div>
|
||||
<div class="d-flex ml-1">
|
||||
|
||||
<img id="imagecode" align="absmiddle" src="{SITE_URL}index.php?app=pubs&ac=code" onclick="javascript:newgdcode(this,this.src);" title="点击刷新验证码" alt="点击刷新验证码" style="cursor:pointer;" />
|
||||
|
||||
<a href="javascript:void('0');" onclick="changeImageCode();">点击刷新验证码</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>手机验证码</label>
|
||||
|
||||
<div class="d-flex flex-row">
|
||||
<div class="d-flex"><input type="text" class="form-control" name="phonecode" value=""></div>
|
||||
<div class="d-flex ml-1"><button id="mybtn" type="button" class="btn btn-outline-secondary">获取验证码</button></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-sm btn-info">点击开始验证</button> <small class="text-danger">(手机号验证通过后下次可以使用手机号登录社区)</small>
|
||||
|
||||
</form>
|
||||
|
||||
<!--
|
||||
<hr>
|
||||
|
||||
<form method="post" action="{tsUrl('user','phone',array('ts'=>'setphone'))}">
|
||||
<div class="form-group">
|
||||
<label>手机号不对吗?更换手机号:</label>
|
||||
<input type="number" name="phone" class="form-control" placeholder="请输入你要更换的手机号">
|
||||
</div>
|
||||
|
||||
|
||||
<input type="hidden" name="token" value="{$_SESSION['token']}" />
|
||||
<input class="btn btn-sm btn-outline-secondary" type="submit" value="提交修改" />
|
||||
</form>
|
||||
-->
|
||||
|
||||
|
||||
{/if}
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-md-3"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!--{if $TS_SITE['is_vaptcha']}-->
|
||||
<script src="https://v-cn.vaptcha.com/v3.js"></script>
|
||||
<script>
|
||||
vaptcha({
|
||||
vid: '{$TS_SITE[vaptcha_vid]}',// 验证单元id
|
||||
mode: 'invisible',// 显示类型 隐藏式
|
||||
scene: 0,// 场景值 默认0
|
||||
area: 'auto' //验证节点区域,默认 auto,可选值 auto,sea,na,cn
|
||||
}).then(function (vaptchaObj) {
|
||||
|
||||
obj = vaptchaObj; //将VAPTCHA验证实例保存到局部变量中
|
||||
|
||||
vaptchaObj.listen("pass", function () {
|
||||
// 验证成功进行后续操作
|
||||
|
||||
serverToken = vaptchaObj.getServerToken()
|
||||
|
||||
sendPhoneCode(0,serverToken.token,serverToken.server)
|
||||
|
||||
vaptchaObj.reset(); //重置验证码
|
||||
|
||||
});
|
||||
|
||||
//关闭验证弹窗时触发
|
||||
vaptchaObj.listen("close", function () {
|
||||
//验证弹窗关闭触发
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
$("#mybtn").on("click", function () {
|
||||
var phone = $("#myphone").val();
|
||||
var authcode = $("#authcode").val();
|
||||
|
||||
if(phone && authcode){
|
||||
//人机验证
|
||||
obj.validate();
|
||||
}else{
|
||||
tsNotice('手机号和图形验证码必须填写!');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<!--{else}-->
|
||||
|
||||
<script>
|
||||
$("#mybtn").on("click", function () {
|
||||
var phone = $("#myphone").val();
|
||||
var authcode = $("#authcode").val();
|
||||
|
||||
if(phone && authcode){
|
||||
sendPhoneCode(0)
|
||||
}else{
|
||||
tsNotice('手机号和图形验证码必须填写!');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<!--{/if}-->
|
||||
|
||||
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,155 @@
|
||||
{php include pubTemplate("header")}
|
||||
<!--main-->
|
||||
<div class="container">
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3"></div>
|
||||
<div class="col-md-6">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body" style="padding: 15px 30px 30px;">
|
||||
|
||||
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<div class="fs24">短信登录</div>
|
||||
<div><a href="{tsUrl('user','login')}"><i class="bi bi-envelope"></i> 账号密码登录</a></div>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
|
||||
<form id="comm-form" method="POST" action="{SITE_URL}index.php?app=user&ac=plogin&ts=do" role="form">
|
||||
<div class="form-group">
|
||||
<label>手机号</label>
|
||||
|
||||
<input id="myphone" name="email" type="number" class="form-control" placeholder="手机号">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>图形验证码:</label>
|
||||
|
||||
|
||||
<div class="d-flex flex-row align-items-center">
|
||||
<div class="d-flex">
|
||||
<input id="authcode" name="authcode" type="text" class="form-control" placeholder="" >
|
||||
</div>
|
||||
<div class="d-flex ml-1">
|
||||
|
||||
<img id="imagecode" src="{SITE_URL}index.php?app=pubs&ac=code" onclick="javascript:newgdcode(this,this.src);" title="点击刷新验证码" alt="点击刷新验证码" style="cursor:pointer;" />
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>手机验证码:</label>
|
||||
|
||||
<div class="d-flex flex-row align-items-center">
|
||||
<div>
|
||||
<input name="phonecode" type="text" class="form-control" placeholder="" >
|
||||
</div>
|
||||
<div class="ml-1">
|
||||
<button id="mybtn" type="button" class="btn btn-outline-secondary" style="float: right;">获取验证码</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
|
||||
|
||||
<button id="comm-submit" type="submit" class="btn btn-fat btn-success btn-lg btn-block">登录</button>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-md-3"></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<!--{if $TS_SITE['is_vaptcha']}-->
|
||||
<script src="https://v-cn.vaptcha.com/v3.js"></script>
|
||||
<script>
|
||||
vaptcha({
|
||||
vid: '{$TS_SITE[vaptcha_vid]}',// 验证单元id
|
||||
mode: 'invisible',// 显示类型 隐藏式
|
||||
scene: 0,// 场景值 默认0
|
||||
area: 'auto' //验证节点区域,默认 auto,可选值 auto,sea,na,cn
|
||||
}).then(function (vaptchaObj) {
|
||||
|
||||
obj = vaptchaObj; //将VAPTCHA验证实例保存到局部变量中
|
||||
|
||||
vaptchaObj.listen("pass", function () {
|
||||
// 验证成功进行后续操作
|
||||
|
||||
serverToken = vaptchaObj.getServerToken()
|
||||
|
||||
sendPhoneCode(2,serverToken.token,serverToken.server)
|
||||
|
||||
vaptchaObj.reset(); //重置验证码
|
||||
|
||||
});
|
||||
|
||||
//关闭验证弹窗时触发
|
||||
vaptchaObj.listen("close", function () {
|
||||
//验证弹窗关闭触发
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
$("#mybtn").on("click", function () {
|
||||
var phone = $("#myphone").val();
|
||||
var authcode = $("#authcode").val();
|
||||
|
||||
if(phone && authcode){
|
||||
//人机验证
|
||||
obj.validate();
|
||||
}else{
|
||||
tsNotice('手机号和图形验证码必须填写!');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<!--{else}-->
|
||||
|
||||
<script>
|
||||
$("#mybtn").on("click", function () {
|
||||
var phone = $("#myphone").val();
|
||||
var authcode = $("#authcode").val();
|
||||
|
||||
if(phone && authcode){
|
||||
sendPhoneCode(2)
|
||||
}else{
|
||||
tsNotice('手机号和图形验证码必须填写!');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<!--{/if}-->
|
||||
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,260 @@
|
||||
{php include pubTemplate("header")}
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3"></div>
|
||||
<div class="col-md-6">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="card border-0">
|
||||
<div class="card-body" style="padding: 30px;">
|
||||
|
||||
|
||||
{if $strFuser}
|
||||
<div class="d-flex align-items-center">
|
||||
<div>
|
||||
<img width="56" height="56" class="rounded-circle" src="{$strFuser['face']}">
|
||||
</div>
|
||||
|
||||
<div class="ml-2">
|
||||
<div>您好!我是 <span class=" font-weight-bold">{$strFuser['username']}</span>。</div>
|
||||
<div>我正在邀请您加入 <span class=" font-weight-bold">{$TS_SITE['site_title']}</span> ,欢迎来和我一起交流!</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
{/if}
|
||||
|
||||
|
||||
|
||||
<ul class="nav nav-tabs mb-4">
|
||||
{if $TS_SITE['regtype']=='0' || $TS_SITE['regtype']=='2'}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link font-weight-bold active" href="{tsUrl('user','register')}">Email邮箱注册</a>
|
||||
</li>
|
||||
{/if}
|
||||
{if $TS_SITE['regtype']=='1' || $TS_SITE['regtype']=='2'}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link font-weight-bold" href="{tsUrl('user','phone')}">手机号注册</a>
|
||||
</li>
|
||||
{/if}
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{if $TS_APP[isregister]=='2'}
|
||||
<p>系统升级中,暂时关闭用户注册!</p>
|
||||
<p><a href="{SITE_URL}">返回首页</a></p>
|
||||
{else}
|
||||
|
||||
|
||||
|
||||
<form id="comm-form" method="POST" action="{SITE_URL}index.php?app=user&ac=register&ts=do">
|
||||
|
||||
{if $TS_SITE['isinvite']=='1'}
|
||||
<div class="form-group">
|
||||
<label>邀请码</label>
|
||||
<input name="invitecode" type="text" class="form-control" placeholder="" check-type="required">
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div class="form-group">
|
||||
<label>Email邮箱:</label>
|
||||
<input id="myemail" name="email" type="email" class="form-control" placeholder="" onkeyup="this.value=this.value.replace(/[, ]/g,'')" check-type="required">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>密码:</label>
|
||||
|
||||
<input name="pwd" type="password" class="form-control" placeholder="" check-type="required">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>重复密码:</label>
|
||||
<input name="repwd" type="password" class="form-control" placeholder="" check-type="required">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>用户名:</label>
|
||||
<input name="username" type="text" class="form-control" placeholder="" check-type="required">
|
||||
</div>
|
||||
|
||||
|
||||
<!--人机验证-->
|
||||
{if $TS_SITE['is_vaptcha']}
|
||||
<div class="form-group">
|
||||
<label>人机验证:</label>
|
||||
|
||||
<div class="offset-0">
|
||||
|
||||
<div id="vaptchaContainer" style="width: 300px;height: 36px;">
|
||||
<div class="vaptcha-init-main">
|
||||
<div class="vaptcha-init-loading">
|
||||
<a href="/" target="_blank">
|
||||
<img src="https://r.vaptcha.net/public/img/vaptcha-loading.gif" />
|
||||
</a>
|
||||
<span class="vaptcha-text">Vaptcha启动中...</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="https://v-cn.vaptcha.com/v3.js"></script>
|
||||
<script>
|
||||
vaptcha({
|
||||
vid: '{$TS_SITE[vaptcha_vid]}',
|
||||
mode: 'click',
|
||||
scene: 0, // 场景值 默认0
|
||||
container: '#vaptchaContainer',
|
||||
area: 'auto' //验证节点区域,默认 auto,可选值 auto,sea,na,cn
|
||||
}).then(function (vaptchaObj) {
|
||||
vaptchaObj.render()
|
||||
vaptchaObj.renderTokenInput('#vaptcha-token')
|
||||
})
|
||||
</script>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="vaptcha-token"></div>
|
||||
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
|
||||
<!--图形验证码-->
|
||||
{if $TS_SITE['isauthcode']}
|
||||
<div class="form-group">
|
||||
<label>验证码:</label>
|
||||
<div class="d-flex flex-row align-items-start">
|
||||
<div class="d-flex flex-column">
|
||||
<input name="authcode" type="text" class="form-control" placeholder="" check-type="required">
|
||||
</div>
|
||||
<div class="d-flex ml-1">
|
||||
|
||||
<img id="imagecode" align="absmiddle" src="{SITE_URL}index.php?app=pubs&ac=code" onclick="javascript:newgdcode(this,this.src);" title="点击刷新验证码" alt="点击刷新验证码" style="cursor:pointer;" />
|
||||
<a href="javascript:void('0');" onclick="changeImageCode();">点击刷新验证码</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<!--Email邮箱验证-->
|
||||
{if $TS_SITE['isverify']}
|
||||
<div class="form-group">
|
||||
<label>Email邮箱验证码:</label>
|
||||
<div style="overflow: hidden;">
|
||||
<input style="float: left;width:60%;" name="emailcode" type="text" class="form-control" placeholder="" >
|
||||
<button id="mybtn" type="button" class="btn btn-outline-secondary" style="float: right;">获取验证码</button>
|
||||
</div>
|
||||
<div class="fs12 text-danger">获取验证码后请登录邮箱查看验证码</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
|
||||
<input type="hidden" name="fuserid" value="{$fuserid}" />
|
||||
<input type="hidden" name="token" value="{$_SESSION['token']}" />
|
||||
<button id="comm-submit" type="submit" class="btn btn-fat btn-success btn-lg btn-block">注册</button>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
<div class="lh30">
|
||||
{php doAction('user_login_footer')}
|
||||
</div>
|
||||
|
||||
{/if}
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-md-3"></div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!--{if $TS_SITE['is_vaptcha']}-->
|
||||
<script src="https://v-cn.vaptcha.com/v3.js"></script>
|
||||
<script>
|
||||
vaptcha({
|
||||
vid: '{$TS_SITE[vaptcha_vid]}',// 验证单元id
|
||||
mode: 'invisible',// 显示类型 隐藏式
|
||||
scene: 0,// 场景值 默认0
|
||||
area: 'auto' //验证节点区域,默认 auto,可选值 auto,sea,na,cn
|
||||
}).then(function (vaptchaObj) {
|
||||
|
||||
obj = vaptchaObj; //将VAPTCHA验证实例保存到局部变量中
|
||||
|
||||
vaptchaObj.listen("pass", function () {
|
||||
// 验证成功进行后续操作
|
||||
|
||||
serverToken = vaptchaObj.getServerToken()
|
||||
|
||||
sendEmailCode(1,serverToken.token,serverToken.server)
|
||||
|
||||
vaptchaObj.reset(); //重置验证码
|
||||
|
||||
});
|
||||
|
||||
//关闭验证弹窗时触发
|
||||
vaptchaObj.listen("close", function () {
|
||||
//验证弹窗关闭触发
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
$("#mybtn").on("click", function () {
|
||||
var email = $("#myemail").val();
|
||||
if(email){
|
||||
//人机验证
|
||||
obj.validate();
|
||||
}else{
|
||||
tsNotice('Email邮箱必须填写!');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<!--{else}-->
|
||||
|
||||
<script>
|
||||
$("#mybtn").on("click", function () {
|
||||
var email = $("#myemail").val();
|
||||
if(email){
|
||||
sendEmailCode(1)
|
||||
}else{
|
||||
tsNotice('Email邮箱必须填写!');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<!--{/if}-->
|
||||
|
||||
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,80 @@
|
||||
{php include pubTemplate("header")}
|
||||
<!--main-->
|
||||
<div class="midder">
|
||||
|
||||
<div class="mc">
|
||||
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3"></div>
|
||||
<div class="col-md-6">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body" style="padding: 15px 30px 30px;">
|
||||
|
||||
|
||||
|
||||
<div class="page-header">
|
||||
<h1>重设密码</h1>
|
||||
</div>
|
||||
|
||||
|
||||
<form id="comm-form" method="POST" action="{SITE_URL}index.php?app=user&ac=resetpwd&ts=do" role="form">
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label>Email</label>
|
||||
<input name="email" type="email" class="form-control" value="{$email}" disabled>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>新密码:</label>
|
||||
<input name="pwd" type="password" class="form-control" value="">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>重复新密码:</label>
|
||||
<input name="repwd" type="password" class="form-control" value="">
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<input type="hidden" name="email" value="{$email}" />
|
||||
<input type="hidden" name="resetpwd" value="{$resetpwd}" />
|
||||
<button type="submit" class="btn btn-fat btn-success">提交</button>
|
||||
</div>
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-md-3"></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,39 @@
|
||||
{php include pubTemplate("header")}
|
||||
|
||||
<div class="container">
|
||||
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a href="{SITE_URL}">首页</a></li>
|
||||
<li class="breadcrumb-item"><a href="{tsUrl('user')}">用户</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">角色</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
|
||||
<table class="table">
|
||||
|
||||
<thead class="thead-light">
|
||||
<tr><th>角色名称</th><th>开始积分</th><th>结束积分</th><th>权限</th></tr>
|
||||
</thead>
|
||||
|
||||
|
||||
<tbody>
|
||||
{loop $arrRole $key $item}
|
||||
<tr><td>{$item['rolename']}</td><td>{$item['score_start']}</td><td>{$item['score_end']}</td><td>即将开放</td></tr>
|
||||
{/loop}
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,9 @@
|
||||
{if $strSign}
|
||||
<div class="t1">已连续签到</div>
|
||||
<div class="tianshu">
|
||||
<div class="tian">{$strSign['num']}<small>天</small></div>
|
||||
</div>
|
||||
|
||||
<div class="t2">明日签到可领{$strScore['score']}积分</div>
|
||||
<div class="t3">连续签到有更多惊喜哦</div>
|
||||
{/if}
|
||||
@@ -0,0 +1,50 @@
|
||||
{php include pubTemplate("header")}
|
||||
|
||||
<div class="container">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{template menu}
|
||||
|
||||
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-8">
|
||||
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
<dl class="row">
|
||||
<dt class="col-sm-2">UID:</dt><dd class="col-sm-9 text-black-50">{$strUser['userid']}</dd>
|
||||
<dt class="col-sm-2">性别:</dt><dd class="col-sm-9 text-black-50">{$strUser['sex']}</dd>
|
||||
<dt class="col-sm-2">自我介绍:</dt><dd class="col-sm-9 text-black-50">{if $strUser['about']}{$strUser['about']}{else}还没有介绍{/if}</dd>
|
||||
<dt class="col-sm-2">关注:</dt><dd class="col-sm-9 text-black-50"><a href="{tsUrl('user','follow',array('id'=>$strUser['userid']))}">{$strUser['count_follow']} 人</a></dd>
|
||||
<dt class="col-sm-2">粉丝:</dt><dd class="col-sm-9 text-black-50"><a href="{tsUrl('user','followed',array('id'=>$strUser['userid']))}">{$strUser['count_followed']} 人</a></dd>
|
||||
<dt class="col-sm-2">积分:</dt><dd class="col-sm-9 text-black-50">{$strUser['count_score']}</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{template userinfo}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,117 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta http-equiv="content-language" content="zh-CN" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="applicable-device" content="pc,mobile">
|
||||
<meta name="robots" content="all" />
|
||||
<meta name="save" content="history" />
|
||||
<meta name="author" content="{$GLOBALS['TS_CF'][info][email]}" />
|
||||
<meta name="Copyright" content="{$GLOBALS['TS_CF'][info][name]}" />
|
||||
<title>系统管理登录</title>
|
||||
|
||||
<link rel="shortcut icon" href="{SITE_URL}favicon.ico" />
|
||||
|
||||
<!-- 新 Bootstrap 核心 CSS 文件 -->
|
||||
<link rel="stylesheet" href="{SITE_URL}public/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="{SITE_URL}theme/sample/base.css" />
|
||||
<link rel="stylesheet" type="text/css" href="{SITE_URL}app/{$GLOBALS['TS_URL']['app']}/skin/style.css">
|
||||
|
||||
<script>var siteUrl = '{SITE_URL}'; //网站网址</script>
|
||||
<script src="{SITE_URL}public/js/jquery.min.js" type="text/javascript"></script>
|
||||
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
|
||||
<script src="{SITE_URL}public/bootstrap/js/bootstrap.min.js"></script>
|
||||
|
||||
<!--bootstrap 前端验证-->
|
||||
<script type="text/javascript" src="{SITE_URL}public/js/bootstrap3-validation.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-4"></div>
|
||||
<div class="col-md-4">
|
||||
|
||||
|
||||
<div class="text-center mt-5">
|
||||
<a target="_blank" href="https://www.thinksaas.cn/"><img src="{SITE_URL}public/images/thinksaas2012.png" width="250" alt="ThinkSAAS后台登录" /></a>
|
||||
</div>
|
||||
|
||||
<div class="h3 fw300 text-center mt-2 mb-3">管理后台登录</div>
|
||||
|
||||
<div class="card border-0 shadow-lg">
|
||||
<div class="card-body">
|
||||
|
||||
<form id="comm-form" method="POST" action="{SITE_URL}index.php?app=user&ac=login&ts=do" role="form">
|
||||
<div class="form-group">
|
||||
<label>Email</label>
|
||||
|
||||
<input name="email" type="email" class="form-control" placeholder="Email" check-type="mail">
|
||||
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>密码:</label>
|
||||
|
||||
<input name="pwd" type="password" class="form-control" placeholder="Password" check-type="required">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<input type="hidden" name="cktime" value="31536000">
|
||||
<input type="hidden" name="ad" value="1" />
|
||||
<input type="hidden" name="token" value="{$_SESSION['token']}" />
|
||||
<button id="comm-submit" type="submit" class="btn btn-block btn-info">点击登录后台</button>
|
||||
|
||||
<div class="mt-2"><a class="btn btn-block btn-outline-secondary" href="{SITE_URL}">返回首页</a></div>
|
||||
|
||||
<div class="fs12 c9 text-center mt-5">
|
||||
Copyright (C) {$TS_CF['info']['year']}-{php echo date('Y')} <a class="c9" href="{$TS_CF[info][url]}">{$TS_CF['info']['name']} {$TS_CF['info']['version']}</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!--弹出窗口-->
|
||||
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">关闭</span></button>
|
||||
<h4 class="modal-title" id="myModalLabel">提示</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script src="{SITE_URL}public/js/common.js" type="text/javascript"></script>
|
||||
<script>
|
||||
var _hmt = _hmt || [];
|
||||
(function() {
|
||||
var hm = document.createElement("script");
|
||||
hm.src = "https://hm.baidu.com/hm.js?5964cd4b8810fcc73c98618d475213f6";
|
||||
var s = document.getElementsByTagName("script")[0];
|
||||
s.parentNode.insertBefore(hm, s);
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,45 @@
|
||||
{php include pubTemplate("header")}
|
||||
|
||||
<div class="container">
|
||||
|
||||
|
||||
{template menu}
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-8">
|
||||
|
||||
|
||||
|
||||
<div class="card">
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
<div class="commlist">
|
||||
<ul>
|
||||
{loop $arrTopic $key $item}
|
||||
<li>
|
||||
|
||||
|
||||
<a href="{tsUrl('topic','show',array('id'=>$item['topicid']))}">{php echo tsTitle($item['title'])}</a> <i>{$item['count_comment']}</i>
|
||||
|
||||
|
||||
</li>
|
||||
{/loop}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="clear"></div>
|
||||
<div class="page">{$pageUrl}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
{template userinfo}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,2 @@
|
||||
<!--广告位-->
|
||||
{php doAction('gobad','300')}
|
||||
@@ -0,0 +1,64 @@
|
||||
{php include pubTemplate("header")}
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-3"></div>
|
||||
<div class="col-md-6">
|
||||
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
|
||||
{if tsIntval($strUser['isverify'])==0 && tsIntval($TS_SITE['isverify'])==1}
|
||||
<div class="alert alert-info">提示:你必须通过Email验证才可以正常使用本社区</div>
|
||||
{/if}
|
||||
{if $strUser['isverify']==1}
|
||||
<div class="alert alert-success">
|
||||
您已经通过Email验证!现在可以随便点点看看我们的社区!
|
||||
</div>
|
||||
|
||||
{else}
|
||||
|
||||
|
||||
|
||||
<form method="post" action="{tsUrl('user','verify',array('ts'=>'setemail'))}">
|
||||
<div class="form-group">
|
||||
<label>验证Email</label>
|
||||
<input type="email" class="form-control" disabled value="{$strUser['email']}">
|
||||
</div>
|
||||
|
||||
<a class="btn btn-sm btn-info" href="{tsUrl('user','verify',array('ts'=>'post','token'=>$_SESSION['token']))}">点击发送验证</a>
|
||||
|
||||
<hr />
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label>Email不对吗?更换帐号:</label>
|
||||
<input type="email" name="email" class="form-control" >
|
||||
</div>
|
||||
|
||||
|
||||
<input type="hidden" name="token" value="{$_SESSION['token']}" />
|
||||
<input class="btn btn-sm btn-outline-secondary" type="submit" value="提交修改" />
|
||||
</form>
|
||||
|
||||
{/if}
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-md-3"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,75 @@
|
||||
{php include pubTemplate("header")}
|
||||
<div class="container">
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-3"></div>
|
||||
<div class="col-md-6">
|
||||
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
|
||||
{if $strUser['face']=='' && tsIntval($TS_SITE['isface'])==1}
|
||||
<div class="alert alert-info">提示:你必须上传头像才可以正常使用本社区</div>
|
||||
{/if}
|
||||
|
||||
{if $strUser['path']}
|
||||
<div class="alert alert-success">
|
||||
您已经上传头像!现在可以随便点点看看我们的社区!
|
||||
</div>
|
||||
{else}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<form method="post" action="{tsUrl('user','verify',array('ts'=>'facedo'))}" enctype="multipart/form-data">
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label>上传头像:</label>
|
||||
|
||||
<p><img class="rounded" alt="{$strUser['username']}" src="{$strUser['face']}" width="120" /></p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>选择图片:</label>
|
||||
<div>
|
||||
<input type="file" name="picfile" />
|
||||
</div>
|
||||
|
||||
<div class="c9 fs12 mt-2">提示:请选择1M以内的头像图片</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<button class="btn btn-sm btn-info" type="submit">提交修改</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
|
||||
|
||||
{/if}
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-md-3"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{php include pubTemplate("footer")}
|
||||
@@ -0,0 +1,9 @@
|
||||
/*显示隐藏回复*/
|
||||
function reguest(userid,reid,username)
|
||||
{
|
||||
$("#reguest").toggle('fast');
|
||||
$("#reguest textarea").val('@'+username+'#');
|
||||
$("#reguest #touserid").val(userid);
|
||||
$("#reguest #reid").val(reid);
|
||||
$("#reguest textarea").focus();
|
||||
}
|
||||
@@ -0,0 +1,486 @@
|
||||
.verify_email{width:500px;margin:0 auto;}
|
||||
.verify_email h3{font-weight:bold;}
|
||||
|
||||
.verify_face{width:500px;margin:0 auto;}
|
||||
.verify_face h3{font-weight:bold;}
|
||||
|
||||
|
||||
.invitecode{width:600px;margin:0 auto;}
|
||||
.invitecode ul{}
|
||||
.invitecode ul li{float:left;width:300px;font-size:14px;padding:10px 0;}
|
||||
|
||||
/**框架CSS**/
|
||||
|
||||
.uinput{width:200px;padding: 3px 0 3px 0;font-size: 14px;}
|
||||
|
||||
.utext{width:300px;height:50;border-color: #999999 #E1E1E1 #E1E1E1 #999999;border-style: solid;border-width: 1px; padding: 3px 0 3px 0;font-size: 14px;}
|
||||
|
||||
.utable{}
|
||||
.utable th{text-align:right;height:40px;}
|
||||
.utable td{}
|
||||
.blockquote {
|
||||
line-height: 1.3;
|
||||
margin: 0 0 10px;
|
||||
padding: 5px 8px;
|
||||
}
|
||||
|
||||
|
||||
/*table olt*/
|
||||
.olt {
|
||||
margin-bottom: 3px;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
border: medium none;
|
||||
border-collapse: collapse;
|
||||
margin: 0;
|
||||
border-spacing: 0;
|
||||
}
|
||||
.olt td {
|
||||
border-bottom: 1px dashed #DDDDDD;
|
||||
padding: 3px 3px 3px 0;
|
||||
}
|
||||
/*右侧会员列表*/
|
||||
.obu {
|
||||
display: inline;
|
||||
float: left;
|
||||
margin: 0 0 10px;
|
||||
width: 70px;
|
||||
}
|
||||
.obu dt {
|
||||
height: 50px;
|
||||
line-height: 16px;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
}
|
||||
.obu dd {
|
||||
margin: 0;
|
||||
height: 30px;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
}
|
||||
.pl {
|
||||
color: #666666;
|
||||
font: 12px/150% Arial;
|
||||
padding:10px 0;
|
||||
}
|
||||
|
||||
.pl2 {
|
||||
color: #666666;
|
||||
font: 14px/150% Arial;
|
||||
}
|
||||
|
||||
.mr5 {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.color_gray, .color-gray {
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
.fright {
|
||||
float: right;
|
||||
}
|
||||
|
||||
|
||||
/*邀请 by QiuJun*/
|
||||
.invites{}
|
||||
.invites h2{font-size:14px;font-weight:bold;margin:20px 0 20px 0;color:#555555}
|
||||
.invites p{line-height:25px;color:#999999;margin:0;}
|
||||
|
||||
/*链接按钮*/
|
||||
.subab{
|
||||
background: #66873E;
|
||||
color: #FFFFFF;
|
||||
cursor: pointer;
|
||||
padding: 10px 20px;
|
||||
font-size:16px;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*table olt*/
|
||||
.olt {
|
||||
margin-bottom: 3px;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
border: medium none;
|
||||
border-collapse: collapse;
|
||||
margin: 0;
|
||||
border-spacing: 0;
|
||||
}
|
||||
.olt td {
|
||||
border-bottom: 1px dashed #DDDDDD;
|
||||
padding: 3px 3px 3px 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*2011-06-20*/
|
||||
/*个人主页左侧*/
|
||||
#db-usr-profile {
|
||||
height: 58px;
|
||||
left: 0;
|
||||
margin-bottom: 2em;
|
||||
position: relative;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
}
|
||||
#db-usr-profile .pic {
|
||||
float: left;
|
||||
margin-right: 12px;
|
||||
}
|
||||
#db-usr-profile .info {
|
||||
float: left;
|
||||
padding-top: 2px;
|
||||
}
|
||||
#db-usr-profile h1 {
|
||||
padding: 0 0 4px;
|
||||
}
|
||||
#db-usr-profile .info ul li {
|
||||
display: inline;
|
||||
margin-right: 1em;
|
||||
}
|
||||
#review {
|
||||
margin-bottom: 27px;
|
||||
}
|
||||
/*个人主页右侧*/
|
||||
#profile .userface {
|
||||
float: left;
|
||||
margin: 1px 10px 8px 0;
|
||||
}
|
||||
|
||||
fieldset, img {
|
||||
border: 0 none;
|
||||
}
|
||||
.user-info {
|
||||
color: #666666;
|
||||
}
|
||||
.user-opt {
|
||||
clear: both;
|
||||
padding: 8px 0;
|
||||
}
|
||||
|
||||
.user-group {
|
||||
color: #666666;
|
||||
display: none;
|
||||
margin: 0 0 10px;
|
||||
}
|
||||
|
||||
.user-cs {
|
||||
background: url("icon-ok.png") no-repeat scroll left center transparent;
|
||||
display: inline-block;
|
||||
padding: 0 0 0 15px;
|
||||
}
|
||||
.user-rs {
|
||||
margin: 0 0 0 15px;
|
||||
}
|
||||
|
||||
.user-group-arrow {
|
||||
background: url("icon-arrow-down-b.png") no-repeat scroll center center transparent;
|
||||
border: 1px solid #FFFFFF;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
height: 17px;
|
||||
margin: 0 0 0 -2px;
|
||||
position: relative;
|
||||
top: 5px;
|
||||
width: 17px;
|
||||
}
|
||||
|
||||
.user-opt .user-group-arrow {
|
||||
border-color: #FFF6EE;
|
||||
}
|
||||
|
||||
.a-btn, .a-btn-add, .a-btn-add-light, .a-btn-opt {
|
||||
border-radius: 3px 3px 3px 3px;
|
||||
display: inline-block;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.a-btn:link, .a-btn:active, .a-btn:hover, .a-btn:visited, .a-btn-opt:link, .a-btn-opt:active, .a-btn-opt:hover, .a-btn-opt:visited {
|
||||
background: none repeat scroll 0 0 #FFF3E7;
|
||||
border: 1px solid #E7D7CA;
|
||||
color: #797979;
|
||||
outline: 0 none;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.more-opt {
|
||||
display: inline-block;
|
||||
}
|
||||
#divac {
|
||||
clear: both;
|
||||
}
|
||||
.sep-line {
|
||||
border-bottom: 1px solid #F5E9DB;
|
||||
clear: both;
|
||||
font-size: 0;
|
||||
height: 0;
|
||||
margin: 5px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.user-intro {
|
||||
color: #666666;
|
||||
overflow: hidden;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
.mbt {
|
||||
clear: both;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.mbtrmini {
|
||||
background: url("listdot.gif") no-repeat scroll 0 8px transparent;
|
||||
border-bottom: 1px dashed #DDDDDD;
|
||||
padding: 4px 0 4px 12px;
|
||||
}
|
||||
.quote {
|
||||
background: url("quotel.gif") no-repeat scroll left 4px transparent;
|
||||
margin: 8px 0 0 26px;
|
||||
overflow: hidden;
|
||||
padding: 0 24px 5px 15px;
|
||||
width: auto;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
.quote span.inq {
|
||||
background: url("quoter.gif") no-repeat scroll right bottom transparent;
|
||||
color: #333333;
|
||||
display: inline-block;
|
||||
padding-right: 15px;
|
||||
}
|
||||
.indentrec {
|
||||
color: #333333;
|
||||
line-height: 1.6em;
|
||||
margin-left: 24px;
|
||||
}
|
||||
#event {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.evt_short {
|
||||
float: left;
|
||||
margin-bottom: 10px;
|
||||
width: 100%;
|
||||
}
|
||||
.actfromfri {
|
||||
line-height: 1.6em;
|
||||
padding: 0.6em 0;
|
||||
}
|
||||
.evt_short li {
|
||||
line-height: 1.6em;
|
||||
}
|
||||
#group {
|
||||
width: 100%;
|
||||
}
|
||||
/*小组*/
|
||||
.ob {
|
||||
float: left;
|
||||
margin: 0 0 10px;
|
||||
text-align: center;
|
||||
width: 70px;
|
||||
}
|
||||
.ob dt {
|
||||
height: 50px;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
}
|
||||
.ob dd {
|
||||
height: 30px;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
}
|
||||
.ob span {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.mbtr {
|
||||
border-bottom: 1px solid #EEEEEE;
|
||||
margin: 5px 0;
|
||||
min-height: 55px;
|
||||
overflow: hidden;
|
||||
padding: 5px 0;
|
||||
}
|
||||
|
||||
.bs li {
|
||||
border-bottom: 1px dashed #DDDDDD;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
padding: 4px 0;
|
||||
}
|
||||
|
||||
.spacetopic{}
|
||||
.spacetopic table{}
|
||||
.spacetopic tr td{border-bottom:dashed 1px #DDDDDD;padding:5px 0;}
|
||||
|
||||
|
||||
|
||||
/*动态*/
|
||||
.mbtl {
|
||||
float: left;
|
||||
margin: 8px 7px 0 0;
|
||||
padding: 0;
|
||||
width: 55px;
|
||||
}
|
||||
.mbtr {
|
||||
border-bottom: 1px solid #EEEEEE;
|
||||
margin: 5px 0;
|
||||
min-height: 55px;
|
||||
overflow: hidden;
|
||||
padding: 5px 0;
|
||||
}
|
||||
.pl {
|
||||
color: #666666;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.broadsmr {
|
||||
color: #999999;
|
||||
padding: 5px 24px;
|
||||
}
|
||||
.indentrec {
|
||||
color: #333333;
|
||||
line-height: 1.6em;
|
||||
margin-left: 24px;
|
||||
}
|
||||
|
||||
.quote {
|
||||
background: url("http://t.douban.com/pics/quotel.gif") no-repeat scroll left 4px transparent;
|
||||
margin: 8px 0 0 26px;
|
||||
overflow: hidden;
|
||||
padding: 0 24px 5px 15px;
|
||||
width: auto;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
.quote .inq {
|
||||
background: url("http://t.douban.com/pics/quoter.gif") no-repeat scroll right bottom transparent;
|
||||
color: #333333;
|
||||
display: inline-block;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
.broadimg {
|
||||
border: 1px solid #DDDDDD;
|
||||
float: right;
|
||||
margin-left: 14px;
|
||||
}
|
||||
|
||||
.clearfix:after {
|
||||
clear: both;
|
||||
content: ".";
|
||||
display: block;
|
||||
height: 0;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.indentrec {
|
||||
color: #333333;
|
||||
line-height: 1.6em;
|
||||
margin-left: 24px;
|
||||
}
|
||||
.timeline-album {
|
||||
float: left;
|
||||
margin: 8px 12px 8px 0;
|
||||
}
|
||||
|
||||
/*留言*/
|
||||
.guest{}
|
||||
.guest img{float:left;width:50px;}
|
||||
.guest form{margin-left:60px;}
|
||||
|
||||
.glist{}
|
||||
.glist ul, .glist ul li{list-style: none;margin:0;padding: 0;}
|
||||
.glist ul{}
|
||||
.glist ul li{border-bottom: 1px solid #EEEEEE;overflow: hidden;padding: 10px 0;}
|
||||
.glist ul li img{float:left;}
|
||||
.glist ul li .content{margin-left:60px;line-height:25px;}
|
||||
.glist ul li .content p{padding:0px;margin:0;}
|
||||
|
||||
/*小组列表*/
|
||||
.sub-item{
|
||||
border-bottom: 1px dashed #AAAAAA;
|
||||
float: left;
|
||||
margin: 0 2px 15px 0;
|
||||
overflow: hidden;
|
||||
width: 49%;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
.sub-item .pic {
|
||||
float: left;
|
||||
display: table-cell;
|
||||
vertical-align: top;
|
||||
width: 48px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.sub-item .info {
|
||||
color: #666666;
|
||||
vertical-align: top;
|
||||
word-wrap: break-word;
|
||||
line-height:20px;
|
||||
margin-left:60px;
|
||||
}
|
||||
.sub-item .pic img {
|
||||
height: 48px;
|
||||
width: 48px;
|
||||
}
|
||||
.sub-item p {
|
||||
margin: 0;
|
||||
height:60px;;
|
||||
width:220px;
|
||||
overflow:hidden;
|
||||
|
||||
}
|
||||
|
||||
/*帖子列表*/
|
||||
.topic{}
|
||||
.topic li{line-height:30px;}
|
||||
|
||||
|
||||
/*排行榜页面*/
|
||||
.top10{}
|
||||
.top10 dl{overflow: hidden;}
|
||||
.top10 dl dd{margin-bottom:15px;margin-left: 0;}
|
||||
.top10 dl dd .title{background:none repeat scroll 0 0 #F5F5F5;border:1px solid #EEEEEE;margin:0 8px;padding:10px;position:relative;}
|
||||
|
||||
.top10 dl dd .title span{float:right;color:#999999;position:absolute;right:10px;}
|
||||
|
||||
.top10 dl dd ul, .top10 dl dd ul li{list-style: none;padding:0;margin:0;}
|
||||
|
||||
.top10 dl dd ul{border-top:1px solid #F5F5F5;margin:0 8px;background:#FFFFFF;}
|
||||
.top10 dl dd ul li{border-color:#EEEEEE;border-style:solid;border-width:0 1px 1px;margin-bottom:0;padding:10px;clear:both;line-height:20px;word-wrap:break-word;overflow:hidden;}
|
||||
|
||||
.top10 .avatar {float:left;margin-right:10px;}
|
||||
.top10 .avatar img {height:36px;width:36px;}
|
||||
|
||||
|
||||
.top10 li em {color:#999999;float:right;margin-left:8px;}
|
||||
|
||||
.top10 li span {float:left;font-size:10px;height:14px;line-height:14px;margin:4px 8px 0 0;text-align:center;width:16px;}
|
||||
.top10 li p{height:48px;margin:0;padding:0;}
|
||||
|
||||
/*注册、登陆表格*/
|
||||
.subform{}
|
||||
.subform th{font-size:14px;}
|
||||
.subform input[type="text"], .subform input[type="email"], .subform input[type="password"]{height:30px;line-height:30px;font-size:14px;width:200px;}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.user_space_userinfo{overflow: hidden;}
|
||||
.user_space_userinfo .photo{width:90px;float:left;}
|
||||
.user_space_userinfo .info{margin-left:100px;}
|
||||
.user_space_userinfo .info .sex{}
|
||||
.user_space_userinfo .info .city{}
|
||||
.user_space_userinfo .info .about{}
|
||||
|
||||
|
||||
.user_space_right_follow{overflow: hidden}
|
||||
.user_space_right_follow ul, .user_space_right_follow ul li{list-style: none;margin:0;padding:0;}
|
||||
.user_space_right_follow ul{}
|
||||
.user_space_right_follow ul .br{border-right:solid 1px #ddd;}
|
||||
.user_space_right_follow ul li{float:left;padding:10px 20px;text-align:center}
|
||||
@@ -0,0 +1,486 @@
|
||||
.verify_email{width:500px;margin:0 auto;}
|
||||
.verify_email h3{font-weight:bold;}
|
||||
|
||||
.verify_face{width:500px;margin:0 auto;}
|
||||
.verify_face h3{font-weight:bold;}
|
||||
|
||||
|
||||
.invitecode{width:600px;margin:0 auto;}
|
||||
.invitecode ul{}
|
||||
.invitecode ul li{float:left;width:300px;font-size:14px;padding:10px 0;}
|
||||
|
||||
/**框架CSS**/
|
||||
|
||||
.uinput{width:200px;padding: 3px 0 3px 0;font-size: 14px;}
|
||||
|
||||
.utext{width:300px;height:50;border-color: #999999 #E1E1E1 #E1E1E1 #999999;border-style: solid;border-width: 1px; padding: 3px 0 3px 0;font-size: 14px;}
|
||||
|
||||
.utable{}
|
||||
.utable th{text-align:right;height:40px;}
|
||||
.utable td{}
|
||||
.blockquote {
|
||||
line-height: 1.3;
|
||||
margin: 0 0 10px;
|
||||
padding: 5px 8px;
|
||||
}
|
||||
|
||||
|
||||
/*table olt*/
|
||||
.olt {
|
||||
margin-bottom: 3px;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
border: medium none;
|
||||
border-collapse: collapse;
|
||||
margin: 0;
|
||||
border-spacing: 0;
|
||||
}
|
||||
.olt td {
|
||||
border-bottom: 1px dashed #DDDDDD;
|
||||
padding: 3px 3px 3px 0;
|
||||
}
|
||||
/*右侧会员列表*/
|
||||
.obu {
|
||||
display: inline;
|
||||
float: left;
|
||||
margin: 0 0 10px;
|
||||
width: 70px;
|
||||
}
|
||||
.obu dt {
|
||||
height: 50px;
|
||||
line-height: 16px;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
}
|
||||
.obu dd {
|
||||
margin: 0;
|
||||
height: 30px;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
}
|
||||
.pl {
|
||||
color: #666666;
|
||||
font: 12px/150% Arial;
|
||||
padding:10px 0;
|
||||
}
|
||||
|
||||
.pl2 {
|
||||
color: #666666;
|
||||
font: 14px/150% Arial;
|
||||
}
|
||||
|
||||
.mr5 {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.color_gray, .color-gray {
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
.fright {
|
||||
float: right;
|
||||
}
|
||||
|
||||
|
||||
/*邀请 by QiuJun*/
|
||||
.invites{}
|
||||
.invites h2{font-size:14px;font-weight:bold;margin:20px 0 20px 0;color:#555555}
|
||||
.invites p{line-height:25px;color:#999999;margin:0;}
|
||||
|
||||
/*链接按钮*/
|
||||
.subab{
|
||||
background: #66873E;
|
||||
color: #FFFFFF;
|
||||
cursor: pointer;
|
||||
padding: 10px 20px;
|
||||
font-size:16px;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*table olt*/
|
||||
.olt {
|
||||
margin-bottom: 3px;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
border: medium none;
|
||||
border-collapse: collapse;
|
||||
margin: 0;
|
||||
border-spacing: 0;
|
||||
}
|
||||
.olt td {
|
||||
border-bottom: 1px dashed #DDDDDD;
|
||||
padding: 3px 3px 3px 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*2011-06-20*/
|
||||
/*个人主页左侧*/
|
||||
#db-usr-profile {
|
||||
height: 58px;
|
||||
left: 0;
|
||||
margin-bottom: 2em;
|
||||
position: relative;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
}
|
||||
#db-usr-profile .pic {
|
||||
float: left;
|
||||
margin-right: 12px;
|
||||
}
|
||||
#db-usr-profile .info {
|
||||
float: left;
|
||||
padding-top: 2px;
|
||||
}
|
||||
#db-usr-profile h1 {
|
||||
padding: 0 0 4px;
|
||||
}
|
||||
#db-usr-profile .info ul li {
|
||||
display: inline;
|
||||
margin-right: 1em;
|
||||
}
|
||||
#review {
|
||||
margin-bottom: 27px;
|
||||
}
|
||||
/*个人主页右侧*/
|
||||
#profile .userface {
|
||||
float: left;
|
||||
margin: 1px 10px 8px 0;
|
||||
}
|
||||
|
||||
fieldset, img {
|
||||
border: 0 none;
|
||||
}
|
||||
.user-info {
|
||||
color: #666666;
|
||||
}
|
||||
.user-opt {
|
||||
clear: both;
|
||||
padding: 8px 0;
|
||||
}
|
||||
|
||||
.user-group {
|
||||
color: #666666;
|
||||
display: none;
|
||||
margin: 0 0 10px;
|
||||
}
|
||||
|
||||
.user-cs {
|
||||
background: url("icon-ok.png") no-repeat scroll left center transparent;
|
||||
display: inline-block;
|
||||
padding: 0 0 0 15px;
|
||||
}
|
||||
.user-rs {
|
||||
margin: 0 0 0 15px;
|
||||
}
|
||||
|
||||
.user-group-arrow {
|
||||
background: url("icon-arrow-down-b.png") no-repeat scroll center center transparent;
|
||||
border: 1px solid #FFFFFF;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
height: 17px;
|
||||
margin: 0 0 0 -2px;
|
||||
position: relative;
|
||||
top: 5px;
|
||||
width: 17px;
|
||||
}
|
||||
|
||||
.user-opt .user-group-arrow {
|
||||
border-color: #FFF6EE;
|
||||
}
|
||||
|
||||
.a-btn, .a-btn-add, .a-btn-add-light, .a-btn-opt {
|
||||
border-radius: 3px 3px 3px 3px;
|
||||
display: inline-block;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.a-btn:link, .a-btn:active, .a-btn:hover, .a-btn:visited, .a-btn-opt:link, .a-btn-opt:active, .a-btn-opt:hover, .a-btn-opt:visited {
|
||||
background: none repeat scroll 0 0 #FFF3E7;
|
||||
border: 1px solid #E7D7CA;
|
||||
color: #797979;
|
||||
outline: 0 none;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.more-opt {
|
||||
display: inline-block;
|
||||
}
|
||||
#divac {
|
||||
clear: both;
|
||||
}
|
||||
.sep-line {
|
||||
border-bottom: 1px solid #F5E9DB;
|
||||
clear: both;
|
||||
font-size: 0;
|
||||
height: 0;
|
||||
margin: 5px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.user-intro {
|
||||
color: #666666;
|
||||
overflow: hidden;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
.mbt {
|
||||
clear: both;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.mbtrmini {
|
||||
background: url("listdot.gif") no-repeat scroll 0 8px transparent;
|
||||
border-bottom: 1px dashed #DDDDDD;
|
||||
padding: 4px 0 4px 12px;
|
||||
}
|
||||
.quote {
|
||||
background: url("quotel.gif") no-repeat scroll left 4px transparent;
|
||||
margin: 8px 0 0 26px;
|
||||
overflow: hidden;
|
||||
padding: 0 24px 5px 15px;
|
||||
width: auto;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
.quote span.inq {
|
||||
background: url("quoter.gif") no-repeat scroll right bottom transparent;
|
||||
color: #333333;
|
||||
display: inline-block;
|
||||
padding-right: 15px;
|
||||
}
|
||||
.indentrec {
|
||||
color: #333333;
|
||||
line-height: 1.6em;
|
||||
margin-left: 24px;
|
||||
}
|
||||
#event {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.evt_short {
|
||||
float: left;
|
||||
margin-bottom: 10px;
|
||||
width: 100%;
|
||||
}
|
||||
.actfromfri {
|
||||
line-height: 1.6em;
|
||||
padding: 0.6em 0;
|
||||
}
|
||||
.evt_short li {
|
||||
line-height: 1.6em;
|
||||
}
|
||||
#group {
|
||||
width: 100%;
|
||||
}
|
||||
/*小组*/
|
||||
.ob {
|
||||
float: left;
|
||||
margin: 0 0 10px;
|
||||
text-align: center;
|
||||
width: 70px;
|
||||
}
|
||||
.ob dt {
|
||||
height: 50px;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
}
|
||||
.ob dd {
|
||||
height: 30px;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
}
|
||||
.ob span {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.mbtr {
|
||||
border-bottom: 1px solid #EEEEEE;
|
||||
margin: 5px 0;
|
||||
min-height: 55px;
|
||||
overflow: hidden;
|
||||
padding: 5px 0;
|
||||
}
|
||||
|
||||
.bs li {
|
||||
border-bottom: 1px dashed #DDDDDD;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
padding: 4px 0;
|
||||
}
|
||||
|
||||
.spacetopic{}
|
||||
.spacetopic table{}
|
||||
.spacetopic tr td{border-bottom:dashed 1px #DDDDDD;padding:5px 0;}
|
||||
|
||||
|
||||
|
||||
/*动态*/
|
||||
.mbtl {
|
||||
float: left;
|
||||
margin: 8px 7px 0 0;
|
||||
padding: 0;
|
||||
width: 55px;
|
||||
}
|
||||
.mbtr {
|
||||
border-bottom: 1px solid #EEEEEE;
|
||||
margin: 5px 0;
|
||||
min-height: 55px;
|
||||
overflow: hidden;
|
||||
padding: 5px 0;
|
||||
}
|
||||
.pl {
|
||||
color: #666666;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.broadsmr {
|
||||
color: #999999;
|
||||
padding: 5px 24px;
|
||||
}
|
||||
.indentrec {
|
||||
color: #333333;
|
||||
line-height: 1.6em;
|
||||
margin-left: 24px;
|
||||
}
|
||||
|
||||
.quote {
|
||||
background: url("http://t.douban.com/pics/quotel.gif") no-repeat scroll left 4px transparent;
|
||||
margin: 8px 0 0 26px;
|
||||
overflow: hidden;
|
||||
padding: 0 24px 5px 15px;
|
||||
width: auto;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
.quote .inq {
|
||||
background: url("http://t.douban.com/pics/quoter.gif") no-repeat scroll right bottom transparent;
|
||||
color: #333333;
|
||||
display: inline-block;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
.broadimg {
|
||||
border: 1px solid #DDDDDD;
|
||||
float: right;
|
||||
margin-left: 14px;
|
||||
}
|
||||
|
||||
.clearfix:after {
|
||||
clear: both;
|
||||
content: ".";
|
||||
display: block;
|
||||
height: 0;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.indentrec {
|
||||
color: #333333;
|
||||
line-height: 1.6em;
|
||||
margin-left: 24px;
|
||||
}
|
||||
.timeline-album {
|
||||
float: left;
|
||||
margin: 8px 12px 8px 0;
|
||||
}
|
||||
|
||||
/*留言*/
|
||||
.guest{}
|
||||
.guest img{float:left;width:50px;}
|
||||
.guest form{margin-left:60px;}
|
||||
|
||||
.glist{}
|
||||
.glist ul, .glist ul li{list-style: none;margin:0;padding: 0;}
|
||||
.glist ul{}
|
||||
.glist ul li{border-bottom: 1px solid #EEEEEE;overflow: hidden;padding: 10px 0;}
|
||||
.glist ul li img{float:left;}
|
||||
.glist ul li .content{margin-left:60px;line-height:25px;}
|
||||
.glist ul li .content p{padding:0px;margin:0;}
|
||||
|
||||
/*小组列表*/
|
||||
.sub-item{
|
||||
border-bottom: 1px dashed #AAAAAA;
|
||||
float: left;
|
||||
margin: 0 2px 15px 0;
|
||||
overflow: hidden;
|
||||
width: 49%;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
.sub-item .pic {
|
||||
float: left;
|
||||
display: table-cell;
|
||||
vertical-align: top;
|
||||
width: 48px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.sub-item .info {
|
||||
color: #666666;
|
||||
vertical-align: top;
|
||||
word-wrap: break-word;
|
||||
line-height:20px;
|
||||
margin-left:60px;
|
||||
}
|
||||
.sub-item .pic img {
|
||||
height: 48px;
|
||||
width: 48px;
|
||||
}
|
||||
.sub-item p {
|
||||
margin: 0;
|
||||
height:60px;;
|
||||
width:220px;
|
||||
overflow:hidden;
|
||||
|
||||
}
|
||||
|
||||
/*帖子列表*/
|
||||
.topic{}
|
||||
.topic li{line-height:30px;}
|
||||
|
||||
|
||||
/*排行榜页面*/
|
||||
.top10{}
|
||||
.top10 dl{overflow: hidden;}
|
||||
.top10 dl dd{margin-bottom:15px;margin-left: 0;}
|
||||
.top10 dl dd .title{background:none repeat scroll 0 0 #F5F5F5;border:1px solid #EEEEEE;margin:0 8px;padding:10px;position:relative;}
|
||||
|
||||
.top10 dl dd .title span{float:right;color:#999999;position:absolute;right:10px;}
|
||||
|
||||
.top10 dl dd ul, .top10 dl dd ul li{list-style: none;padding:0;margin:0;}
|
||||
|
||||
.top10 dl dd ul{border-top:1px solid #F5F5F5;margin:0 8px;background:#FFFFFF;}
|
||||
.top10 dl dd ul li{border-color:#EEEEEE;border-style:solid;border-width:0 1px 1px;margin-bottom:0;padding:10px;clear:both;line-height:20px;word-wrap:break-word;overflow:hidden;}
|
||||
|
||||
.top10 .avatar {float:left;margin-right:10px;}
|
||||
.top10 .avatar img {height:36px;width:36px;}
|
||||
|
||||
|
||||
.top10 li em {color:#999999;float:right;margin-left:8px;}
|
||||
|
||||
.top10 li span {float:left;font-size:10px;height:14px;line-height:14px;margin:4px 8px 0 0;text-align:center;width:16px;}
|
||||
.top10 li p{height:48px;margin:0;padding:0;}
|
||||
|
||||
/*注册、登陆表格*/
|
||||
.subform{}
|
||||
.subform th{font-size:14px;}
|
||||
.subform input[type="text"], .subform input[type="email"], .subform input[type="password"]{height:30px;line-height:30px;font-size:14px;width:200px;}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.user_space_userinfo{overflow: hidden;}
|
||||
.user_space_userinfo .photo{width:90px;float:left;}
|
||||
.user_space_userinfo .info{margin-left:100px;}
|
||||
.user_space_userinfo .info .sex{}
|
||||
.user_space_userinfo .info .city{}
|
||||
.user_space_userinfo .info .about{}
|
||||
|
||||
|
||||
.user_space_right_follow{overflow: hidden}
|
||||
.user_space_right_follow ul, .user_space_right_follow ul li{list-style: none;margin:0;padding:0;}
|
||||
.user_space_right_follow ul{}
|
||||
.user_space_right_follow ul .br{border-right:solid 1px #ddd;}
|
||||
.user_space_right_follow ul li{float:left;padding:10px 20px;text-align:center}
|
||||
Reference in New Issue
Block a user