代码
1 /*
2 [UCenter Home] (C) 2007-2008 Comsenz Inc.
3 $Id: function_common.php 2009-10-20 21:12:00
4 @author ymaozi
5 @copyright http://www.codedesign.cn
6 @uchome源码交流QQ群:83400263
7 */
8 /**
9 * 获取表名
10 * @param string 表名
11 * @return string 加了表前缀的表名
12 */
13 function tname($name) {
14 global $_SC;
15 return $_SC['tablepre'].$name;
16 }
17
18 /**
19 * 对话框
20 * @param string 转入的提示信息
21 * @param string 跳转的url
22 * @param int 跳转的时间
23 *
24 */
25 function showmessage($msgkey, $url_forward='', $second=1, $values=array()) {
26 global $_SGLOBAL, $_SC, $_SCONFIG, $_TPL, $space, $_SN;
27
28 obclean(); //清除缓存
29
30 //去掉广告
31 $_SGLOBAL['ad'] = array();
32
33 //语言
34 include_once(S_ROOT.'./language/lang_showmessage.php'); //引入语言文件
35 if(isset($_SGLOBAL['msglang'][$msgkey])) { //$_SGLOBAL['msglang']数组中是否存在$msgkey
36 $message = lang_replace($_SGLOBAL['msglang'][$msgkey], $values);
37 } else {
38 $message = $msgkey;
39 }
40 //手机
41 if($_SGLOBAL['mobile']) {
42 include template('showmessage');
43 exit();
44 }
45 //显示
46 if(empty($_SGLOBAL['inajax']) && $url_forward && empty($second)) {
47 header("HTTP/1.1 301 Moved Permanently");
48 header("Location: $url_forward");
49 } else {
50 if($_SGLOBAL['inajax']) {
51 if($url_forward) {
52 $message = "<a href=\"$url_forward\">$message</a><ajaxok>";
53 }
54 //$message = "<h1>".$_SGLOBAL['msglang']['box_title']."</h1><a href=\"javascript:;\" onclick=\"hideMenu();\" class=\"float_del\">X</a><div class=\"popupmenu_inner\">$message</div>";
55 echo $message;
56 ob_out();
57 } else {
58 if($url_forward) {
59 $message = "<a href=\"$url_forward\">$message</a><script>setTimeout(\"window.location.href ='$url_forward';\", ".($second*1000).");</script>";
60 }
61 include template('showmessage');
62 }
63 }
64 exit();
65 }
66
67 /**
68 * 判断提交是否正确
69 * @param string 提交的按钮名
70 * @return bool
71 */
72 function submitcheck($var) {
73 //如果存在$var的值并且提交方法为post
74 if(!empty($_POST[$var]) && $_SERVER['REQUEST_METHOD'] == 'POST') {
75 if((empty($_SERVER['HTTP_REFERER']) || preg_replace("/https?:\/\/([^\:\/]+).*/i", "\\1", $_SERVER['HTTP_REFERER']) == preg_replace("/([^\:]+).*/", "\\1", $_SERVER['HTTP_HOST'])) && $_POST['formhash'] == formhash()) {
76 return true;
77 } else {
78 showmessage('submit_invalid');
79 }
80 } else {
81 return false;
82 }
83 }
84
85 /**
86 * 添加数据
87 * @global array $_SGLOBAL
88 * @param string $tablename 表名
89 * @param array $insertsqlarr 要插入的数组
90 * @param int $returnid
91 * @param bool $replace
92 * @param int $silent
93 * @return string
94 */
95 function inserttable($tablename, $insertsqlarr, $returnid=0, $replace = false, $silent=0) {
96 global $_SGLOBAL;
97
98 $insertkeysql = $insertvaluesql = $comma = '';
99 foreach ($insertsqlarr as $insert_key => $insert_value) {
100 $insertkeysql .= $comma.'`'.$insert_key.'`'; //插入的键值
101 $insertvaluesql .= $comma.'\''.$insert_value.'\''; //插入的值
102 $comma = ', ';
103 }
104 $method = $replace?'REPLACE':'INSERT';
105 $_SGLOBAL['db']->query($method.' INTO '.tname($tablename).' ('.$insertkeysql.') VALUES ('.$insertvaluesql.')', $silent?'SILENT':'');
106 if($returnid && !$replace) { //如果$returnid为真,则返回插入的uid.
107 return $_SGLOBAL['db']->insert_id();
108 }
109 }
110
111 /**
112 * 编辑信息
113 * @global array $_SGLOBAL
114 * @param string $tablename 更新的表名
115 * @param array $setsqlarr 更新的字段
116 * @param array $wheresqlarr where
117 * @param int $silent
118 */
119 function updatetable($tablename, $setsqlarr, $wheresqlarr, $silent=0) {
120 global $_SGLOBAL;
121
122 $setsql = $comma = '';
123 foreach ($setsqlarr as $set_key => $set_value) {
124 if(is_array($set_value)) {
125 $setsql .= $comma.'`'.$set_key.'`'.'='.$set_value[0];
126 } else {
127 $setsql .= $comma.'`'.$set_key.'`'.'=\''.$set_value.'\'';
128 }
129 $comma = ', ';
130 }
131 $where = $comma = '';
132 if(empty($wheresqlarr)) {
133 $where = '1';
134 } elseif(is_array($wheresqlarr)) {
135 foreach ($wheresqlarr as $key => $value) {
136 $where .= $comma.'`'.$key.'`'.'=\''.$value.'\'';
137 $comma = ' AND ';
138 }
139 } else {
140 $where = $wheresqlarr;
141 }
142 $_SGLOBAL['db']->query('UPDATE '.tname($tablename).' SET '.$setsql.' WHERE '.$where, $silent?'SILENT':'');
143 }
144
145 /**
146 * 获取用户空间信息
147 * @global array $_SGLOBAL
148 * @global array $_SCONFIG
149 * @global array $_SN
150 * @param int or string $key uid或是用户名
151 * @param string $indextype 通过uid还是用户名开通用户名
152 * @param int $auto_open 是否自动创建空间
153 * @return array
154 */
155 function getspace($key, $indextype='uid', $auto_open=0) {
156 global $_SGLOBAL, $_SCONFIG, $_SN;
157
158 $var = "space_{$key}_{$indextype}";
159 if(empty($_SGLOBAL[$var])) {
160 $space = array();
161 $query = $_SGLOBAL['db']->query("SELECT sf.*, s.* FROM ".tname('space')." s LEFT JOIN ".tname('spacefield')." sf ON sf.uid=s.uid WHERE s.{$indextype}='$key'");
162 if(!$space = $_SGLOBAL['db']->fetch_array($query)) { //如果数据库中不存在传入uid的空间信息
163 $space = array();
164 if($indextype=='uid' && $auto_open) { //如果传入的是uid,并开启自动开通空间功能
165 //自动开通空间
166 include_once(S_ROOT.'./uc_client/client.php');
167 if($user = uc_get_user($key, 1)) {//获取用户的信息
168 include_once(S_ROOT.'./source/function_space.php');
169 $space = space_open($user[0], addslashes($user[1]), 0, addslashes($user[2]));//开通空间
170 }
171 }
172 }
173 if($space) { //如果存在空间
174 $_SN[$space['uid']] = ($_SCONFIG['realname'] && $space['name'] && $space['namestatus'])?$space['name']:$space['username']; //获取实名或是用户名
175 $space['self'] = ($space['uid']==$_SGLOBAL['supe_uid'])?1:0; //是否是自己的空间
176
177 //好友缓存
178 $space['friends'] = array();
179 if(empty($space['friend'])) { //如果好友为空
180 if($space['friendnum']>0) {//如果好友数大于0
181 $fstr = $fmod = '';
182 //则在好友表中查找uid的好友
183 $query = $_SGLOBAL['db']->query("SELECT fuid FROM ".tname('friend')." WHERE uid='$space[uid]' AND status='1'");
184 while ($value = $_SGLOBAL['db']->fetch_array($query)) {
185 $space['friends'][] = $value['fuid'];
186 $fstr .= $fmod.$value['fuid'];
187 $fmod = ',';
188 }
189 $space['friend'] = $fstr;
190 }
191 } else {
192 $space['friends'] = explode(',', $space['friend']);
193 }
194
195 $space['username'] = addslashes($space['username']);
196 $space['name'] = addslashes($space['name']);
197 $space['privacy'] = empty($space['privacy'])?(empty($_SCONFIG['privacy'])?array():$_SCONFIG['privacy']):unserialize($space['privacy']);
198
199 //通知数
200 $space['allnotenum'] = 0;
201 foreach (array('notenum','pokenum','addfriendnum','mtaginvitenum','eventinvitenum','myinvitenum') as $value) {
202 $space['allnotenum'] = $space['allnotenum'] + $space[$value];
203 }
204 if($space['self']) {
205 $_SGLOBAL['member'] = $space;
206 }
207 }
208 $_SGLOBAL[$var] = $space;
209 }
210 return $_SGLOBAL[$var];
211 }
212
213 /**
214 * 通过用户名或真实姓名获取用户的uid
215 * @param string $name
216 * @return int
217 */
218 function getuid($name) {
219 global $_SGLOBAL, $_SCONFIG;
220
221 $wherearr[] = "(username='$name')";
222 if($_SCONFIG['realname']) {//如果设置为实名,则能过实名来获取uid或通过用户名
223 $wherearr[] = "(name='$name' AND namestatus = 1)";
224 }
225 $uid = 0;
226 $query = $_SGLOBAL['db']->query("SELECT uid,username,name,namestatus FROM ".tname('space')." WHERE ".implode(' OR ', $wherearr)." LIMIT 1");
227 if($space = $_SGLOBAL['db']->fetch_array($query)) {
228 $uid = $space['uid'];
229 }
230 return $uid;
231 }
232
233 /**
234 * 获取当前用户信息
235 */
236 function getmember() {
237 global $_SGLOBAL, $space;
238
239 if(empty($_SGLOBAL['member']) && $_SGLOBAL['supe_uid']) {
240 if($space['uid'] == $_SGLOBAL['supe_uid']) {
241 $_SGLOBAL['member'] = $space;
242 } else {
243 $_SGLOBAL['member'] = getspace($_SGLOBAL['supe_uid']);
244 }
245 }
246 }
247
2 [UCenter Home] (C) 2007-2008 Comsenz Inc.
3 $Id: function_common.php 2009-10-20 21:12:00
4 @author ymaozi
5 @copyright http://www.codedesign.cn
6 @uchome源码交流QQ群:83400263
7 */
8 /**
9 * 获取表名
10 * @param string 表名
11 * @return string 加了表前缀的表名
12 */
13 function tname($name) {
14 global $_SC;
15 return $_SC['tablepre'].$name;
16 }
17
18 /**
19 * 对话框
20 * @param string 转入的提示信息
21 * @param string 跳转的url
22 * @param int 跳转的时间
23 *
24 */
25 function showmessage($msgkey, $url_forward='', $second=1, $values=array()) {
26 global $_SGLOBAL, $_SC, $_SCONFIG, $_TPL, $space, $_SN;
27
28 obclean(); //清除缓存
29
30 //去掉广告
31 $_SGLOBAL['ad'] = array();
32
33 //语言
34 include_once(S_ROOT.'./language/lang_showmessage.php'); //引入语言文件
35 if(isset($_SGLOBAL['msglang'][$msgkey])) { //$_SGLOBAL['msglang']数组中是否存在$msgkey
36 $message = lang_replace($_SGLOBAL['msglang'][$msgkey], $values);
37 } else {
38 $message = $msgkey;
39 }
40 //手机
41 if($_SGLOBAL['mobile']) {
42 include template('showmessage');
43 exit();
44 }
45 //显示
46 if(empty($_SGLOBAL['inajax']) && $url_forward && empty($second)) {
47 header("HTTP/1.1 301 Moved Permanently");
48 header("Location: $url_forward");
49 } else {
50 if($_SGLOBAL['inajax']) {
51 if($url_forward) {
52 $message = "<a href=\"$url_forward\">$message</a><ajaxok>";
53 }
54 //$message = "<h1>".$_SGLOBAL['msglang']['box_title']."</h1><a href=\"javascript:;\" onclick=\"hideMenu();\" class=\"float_del\">X</a><div class=\"popupmenu_inner\">$message</div>";
55 echo $message;
56 ob_out();
57 } else {
58 if($url_forward) {
59 $message = "<a href=\"$url_forward\">$message</a><script>setTimeout(\"window.location.href ='$url_forward';\", ".($second*1000).");</script>";
60 }
61 include template('showmessage');
62 }
63 }
64 exit();
65 }
66
67 /**
68 * 判断提交是否正确
69 * @param string 提交的按钮名
70 * @return bool
71 */
72 function submitcheck($var) {
73 //如果存在$var的值并且提交方法为post
74 if(!empty($_POST[$var]) && $_SERVER['REQUEST_METHOD'] == 'POST') {
75 if((empty($_SERVER['HTTP_REFERER']) || preg_replace("/https?:\/\/([^\:\/]+).*/i", "\\1", $_SERVER['HTTP_REFERER']) == preg_replace("/([^\:]+).*/", "\\1", $_SERVER['HTTP_HOST'])) && $_POST['formhash'] == formhash()) {
76 return true;
77 } else {
78 showmessage('submit_invalid');
79 }
80 } else {
81 return false;
82 }
83 }
84
85 /**
86 * 添加数据
87 * @global array $_SGLOBAL
88 * @param string $tablename 表名
89 * @param array $insertsqlarr 要插入的数组
90 * @param int $returnid
91 * @param bool $replace
92 * @param int $silent
93 * @return string
94 */
95 function inserttable($tablename, $insertsqlarr, $returnid=0, $replace = false, $silent=0) {
96 global $_SGLOBAL;
97
98 $insertkeysql = $insertvaluesql = $comma = '';
99 foreach ($insertsqlarr as $insert_key => $insert_value) {
100 $insertkeysql .= $comma.'`'.$insert_key.'`'; //插入的键值
101 $insertvaluesql .= $comma.'\''.$insert_value.'\''; //插入的值
102 $comma = ', ';
103 }
104 $method = $replace?'REPLACE':'INSERT';
105 $_SGLOBAL['db']->query($method.' INTO '.tname($tablename).' ('.$insertkeysql.') VALUES ('.$insertvaluesql.')', $silent?'SILENT':'');
106 if($returnid && !$replace) { //如果$returnid为真,则返回插入的uid.
107 return $_SGLOBAL['db']->insert_id();
108 }
109 }
110
111 /**
112 * 编辑信息
113 * @global array $_SGLOBAL
114 * @param string $tablename 更新的表名
115 * @param array $setsqlarr 更新的字段
116 * @param array $wheresqlarr where
117 * @param int $silent
118 */
119 function updatetable($tablename, $setsqlarr, $wheresqlarr, $silent=0) {
120 global $_SGLOBAL;
121
122 $setsql = $comma = '';
123 foreach ($setsqlarr as $set_key => $set_value) {
124 if(is_array($set_value)) {
125 $setsql .= $comma.'`'.$set_key.'`'.'='.$set_value[0];
126 } else {
127 $setsql .= $comma.'`'.$set_key.'`'.'=\''.$set_value.'\'';
128 }
129 $comma = ', ';
130 }
131 $where = $comma = '';
132 if(empty($wheresqlarr)) {
133 $where = '1';
134 } elseif(is_array($wheresqlarr)) {
135 foreach ($wheresqlarr as $key => $value) {
136 $where .= $comma.'`'.$key.'`'.'=\''.$value.'\'';
137 $comma = ' AND ';
138 }
139 } else {
140 $where = $wheresqlarr;
141 }
142 $_SGLOBAL['db']->query('UPDATE '.tname($tablename).' SET '.$setsql.' WHERE '.$where, $silent?'SILENT':'');
143 }
144
145 /**
146 * 获取用户空间信息
147 * @global array $_SGLOBAL
148 * @global array $_SCONFIG
149 * @global array $_SN
150 * @param int or string $key uid或是用户名
151 * @param string $indextype 通过uid还是用户名开通用户名
152 * @param int $auto_open 是否自动创建空间
153 * @return array
154 */
155 function getspace($key, $indextype='uid', $auto_open=0) {
156 global $_SGLOBAL, $_SCONFIG, $_SN;
157
158 $var = "space_{$key}_{$indextype}";
159 if(empty($_SGLOBAL[$var])) {
160 $space = array();
161 $query = $_SGLOBAL['db']->query("SELECT sf.*, s.* FROM ".tname('space')." s LEFT JOIN ".tname('spacefield')." sf ON sf.uid=s.uid WHERE s.{$indextype}='$key'");
162 if(!$space = $_SGLOBAL['db']->fetch_array($query)) { //如果数据库中不存在传入uid的空间信息
163 $space = array();
164 if($indextype=='uid' && $auto_open) { //如果传入的是uid,并开启自动开通空间功能
165 //自动开通空间
166 include_once(S_ROOT.'./uc_client/client.php');
167 if($user = uc_get_user($key, 1)) {//获取用户的信息
168 include_once(S_ROOT.'./source/function_space.php');
169 $space = space_open($user[0], addslashes($user[1]), 0, addslashes($user[2]));//开通空间
170 }
171 }
172 }
173 if($space) { //如果存在空间
174 $_SN[$space['uid']] = ($_SCONFIG['realname'] && $space['name'] && $space['namestatus'])?$space['name']:$space['username']; //获取实名或是用户名
175 $space['self'] = ($space['uid']==$_SGLOBAL['supe_uid'])?1:0; //是否是自己的空间
176
177 //好友缓存
178 $space['friends'] = array();
179 if(empty($space['friend'])) { //如果好友为空
180 if($space['friendnum']>0) {//如果好友数大于0
181 $fstr = $fmod = '';
182 //则在好友表中查找uid的好友
183 $query = $_SGLOBAL['db']->query("SELECT fuid FROM ".tname('friend')." WHERE uid='$space[uid]' AND status='1'");
184 while ($value = $_SGLOBAL['db']->fetch_array($query)) {
185 $space['friends'][] = $value['fuid'];
186 $fstr .= $fmod.$value['fuid'];
187 $fmod = ',';
188 }
189 $space['friend'] = $fstr;
190 }
191 } else {
192 $space['friends'] = explode(',', $space['friend']);
193 }
194
195 $space['username'] = addslashes($space['username']);
196 $space['name'] = addslashes($space['name']);
197 $space['privacy'] = empty($space['privacy'])?(empty($_SCONFIG['privacy'])?array():$_SCONFIG['privacy']):unserialize($space['privacy']);
198
199 //通知数
200 $space['allnotenum'] = 0;
201 foreach (array('notenum','pokenum','addfriendnum','mtaginvitenum','eventinvitenum','myinvitenum') as $value) {
202 $space['allnotenum'] = $space['allnotenum'] + $space[$value];
203 }
204 if($space['self']) {
205 $_SGLOBAL['member'] = $space;
206 }
207 }
208 $_SGLOBAL[$var] = $space;
209 }
210 return $_SGLOBAL[$var];
211 }
212
213 /**
214 * 通过用户名或真实姓名获取用户的uid
215 * @param string $name
216 * @return int
217 */
218 function getuid($name) {
219 global $_SGLOBAL, $_SCONFIG;
220
221 $wherearr[] = "(username='$name')";
222 if($_SCONFIG['realname']) {//如果设置为实名,则能过实名来获取uid或通过用户名
223 $wherearr[] = "(name='$name' AND namestatus = 1)";
224 }
225 $uid = 0;
226 $query = $_SGLOBAL['db']->query("SELECT uid,username,name,namestatus FROM ".tname('space')." WHERE ".implode(' OR ', $wherearr)." LIMIT 1");
227 if($space = $_SGLOBAL['db']->fetch_array($query)) {
228 $uid = $space['uid'];
229 }
230 return $uid;
231 }
232
233 /**
234 * 获取当前用户信息
235 */
236 function getmember() {
237 global $_SGLOBAL, $space;
238
239 if(empty($_SGLOBAL['member']) && $_SGLOBAL['supe_uid']) {
240 if($space['uid'] == $_SGLOBAL['supe_uid']) {
241 $_SGLOBAL['member'] = $space;
242 } else {
243 $_SGLOBAL['member'] = getspace($_SGLOBAL['supe_uid']);
244 }
245 }
246 }
247