新秀网络验证 發表於 2024-10-28 21:34:20

Discuz x3.5 核心文件 function/function_member.php 函数注释

<ol><li>&lt;?php<br /><li> <br /><li>/**<br /><li> *&nbsp; &nbsp;&nbsp; &nbsp; (C)2001-2099 Comsenz Inc.<br /><li> *&nbsp; &nbsp;&nbsp; &nbsp;This is NOT a freeware, use is subject to license terms<br /><li> *<br /><li> *&nbsp; &nbsp;&nbsp; &nbsp;$Id: function_member.php 35030 2014-10-23 07:43:23Z laoguozhang $<br /><li> */<br /><li> <br /><li>if(!defined('IN_DISCUZ')) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;exit('Access Denied');<br /><li>}<br /><li>/**<br /><li> * 用户登录函数<br /><li> *<br /><li> * @param string $username 用户名、UID、邮箱或安全手机号<br /><li> * @param string $password 用户密码<br /><li> * @param int $questionid 安全问题ID(暂未使用)<br /><li> * @param string $answer 安全问题答案(暂未使用)<br /><li> * @param string $loginfield 登录方式标识,默认为'username',可选'uid'、'email'、'auto'、'secmobile'<br /><li> * @param string $ip 用户登录的IP地址,默认为空<br /><li> * @return array 返回登录结果,包括状态(status)、用户信息(member)和UC登录结果(ucresult)<br /><li> */<br /><li>function userlogin($username, $password, $questionid, $answer, $loginfield = 'username', $ip = '') {<br /><li>&nbsp; &nbsp; $return = array();<br /><li> <br /><li>&nbsp; &nbsp; // 根据登录字段确定登录类型<br /><li>&nbsp; &nbsp; if($loginfield == 'uid' &amp;&amp; getglobal('setting/uidlogin')) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$isuid = 1;<br /><li>&nbsp; &nbsp; } elseif($loginfield == 'email') {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$isuid = 2;<br /><li>&nbsp; &nbsp; } elseif($loginfield == 'auto') {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$isuid = 3;<br /><li>&nbsp; &nbsp; } elseif($loginfield == 'secmobile' &amp;&amp; getglobal('setting/secmobilelogin')) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$isuid = 4;<br /><li>&nbsp; &nbsp; } else {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$isuid = 0;<br /><li>&nbsp; &nbsp; }<br /><li> <br /><li>&nbsp; &nbsp; // 加载UCenter通信函数,如未定义则先加载<br /><li>&nbsp; &nbsp; if(!function_exists('uc_user_login')) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;loaducenter();<br /><li>&nbsp; &nbsp; }<br /><li> <br /><li>&nbsp; &nbsp; // 处理自动登录逻辑<br /><li>&nbsp; &nbsp; if($isuid == 3) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 根据用户名尝试登录,支持UID、邮箱和安全手机号<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if(!strcmp(dintval($username), $username) &amp;&amp; getglobal('setting/uidlogin')) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$return['ucresult'] = uc_user_login($username, $password, 1, 1, $questionid, $answer, $ip, 1);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} elseif(isemail($username)) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$return['ucresult'] = uc_user_login($username, $password, 2, 1, $questionid, $answer, $ip, 1);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} elseif(preg_match('/^(\d{1,12}|\d{1,3}-\d{1,12})$/', $username) &amp;&amp; getglobal('setting/secmobilelogin')) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$username = strpos($username, '-') === false ? (getglobal('setting/smsdefaultcc') . '-' . $username) : $username;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$return['ucresult'] = uc_user_login($username, $password, 4, 1, $questionid, $answer, $ip, 1);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 如果登录失败且不是因为账户不存在,则尝试使用用户名密码登录<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if($return['ucresult'] &lt;= 0 &amp;&amp; $return['ucresult'] != -3) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$return['ucresult'] = uc_user_login(addslashes($username), $password, 0, 1, $questionid, $answer, $ip);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br /><li>&nbsp; &nbsp; } else {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 处理非自动登录类型<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if($isuid == 4) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$username = strpos($username, '-') === false ? (getglobal('setting/smsdefaultcc') . '-' . $username) : $username;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$return['ucresult'] = uc_user_login(addslashes($username), $password, $isuid, 1, $questionid, $answer, $ip);<br /><li>&nbsp; &nbsp; }<br /><li> <br /><li>&nbsp; &nbsp; // 解析UC登录结果<br /><li>&nbsp; &nbsp; $tmp = array();<br /><li>&nbsp; &nbsp; $duplicate = '';<br /><li>&nbsp; &nbsp; list($tmp['uid'], $tmp['username'], $tmp['password'], $tmp['email'], $duplicate) = $return['ucresult'];<br /><li>&nbsp; &nbsp; $return['ucresult'] = $tmp;<br /><li> <br /><li>&nbsp; &nbsp; // 检查登录结果,登录失败或用户数据重复则返回<br /><li>&nbsp; &nbsp; if($duplicate &amp;&amp; $return['ucresult']['uid'] &gt; 0 || $return['ucresult']['uid'] &lt;= 0) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$return['status'] = 0;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return $return;<br /><li>&nbsp; &nbsp; }<br /><li> <br /><li>&nbsp; &nbsp; // 获取用户详细信息<br /><li>&nbsp; &nbsp; $member = getuserbyuid($return['ucresult']['uid'], 1);<br /><li>&nbsp; &nbsp; if(!$member || empty($member['uid'])) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$return['status'] = -1;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return $return;<br /><li>&nbsp; &nbsp; }<br /><li>&nbsp; &nbsp; $return['member'] = $member;<br /><li> <br /><li>&nbsp; &nbsp; // 登录成功<br /><li>&nbsp; &nbsp; $return['status'] = 1;<br /><li>&nbsp; &nbsp; if($member['_inarchive']) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 如果用户是归档用户,则将其移回主表<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;C::t('common_member_archive')-&gt;move_to_master($member['uid']);<br /><li>&nbsp; &nbsp; }<br /><li>&nbsp; &nbsp; // 更新用户邮箱,解决可能的邮箱变更问题<br /><li>&nbsp; &nbsp; if($member['email'] != $return['ucresult']['email']) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;C::t('common_member')-&gt;update($return['ucresult']['uid'], array('email' =&gt; $return['ucresult']['email']));<br /><li>&nbsp; &nbsp; }<br /><li> <br /><li>&nbsp; &nbsp; return $return;<br /><li>}<br /><li>/**<br /><li> * 设置登录状态<br /><li> *<br /><li> * 用于在用户成功登录后,设置用户的登录状态,包括但不限于用户ID、用户名、管理员等级、用户组等信息,<br /><li> * 同时更新会话信息、设置登录相关的cookie,以及更新统计信息。<br /><li> *<br /><li> * @param array $member 包含用户登录信息的数组,至少应包含uid、username、adminid、groupid等字段<br /><li> * @param int $cookietime 登录cookie的有效时间,单位为秒<br /><li> */<br /><li>function setloginstatus($member, $cookietime) {<br /><li>&nbsp; &nbsp; global $_G;<br /><li>&nbsp; &nbsp; $_G['uid'] = intval($member['uid']);<br /><li>&nbsp; &nbsp; $_G['username'] = $member['username'];<br /><li>&nbsp; &nbsp; $_G['adminid'] = $member['adminid'];<br /><li>&nbsp; &nbsp; $_G['groupid'] = $member['groupid'];<br /><li>&nbsp; &nbsp; $_G['formhash'] = formhash();<br /><li>&nbsp; &nbsp; $_G['session']['invisible'] = getuserprofile('invisible');<br /><li>&nbsp; &nbsp; $_G['member'] = $member;<br /><li>&nbsp; &nbsp; loadcache('usergroup_'.$_G['groupid']);<br /><li>&nbsp; &nbsp; C::app()-&gt;session-&gt;isnew = true;<br /><li>&nbsp; &nbsp; C::app()-&gt;session-&gt;updatesession();<br /><li> <br /><li>&nbsp; &nbsp; // 设置登录认证cookie<br /><li>&nbsp; &nbsp; dsetcookie('auth', authcode(&quot;{$member['password']}\t{$member['uid']}&quot;, 'ENCODE'), $cookietime, 1, true);<br /><li>&nbsp; &nbsp; dsetcookie('loginuser');<br /><li>&nbsp; &nbsp; dsetcookie('activationauth');<br /><li>&nbsp; &nbsp; dsetcookie('pmnum');<br /><li> <br /><li>&nbsp; &nbsp; // 更新登录统计信息<br /><li>&nbsp; &nbsp; include_once libfile('function/stat');<br /><li>&nbsp; &nbsp; updatestat('login', 1);<br /><li>&nbsp; &nbsp; if(defined('IN_MOBILE')) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;updatestat('mobilelogin', 1);<br /><li>&nbsp; &nbsp; }<br /><li>&nbsp; &nbsp; if($_G['setting']['connect']['allow'] &amp;&amp; $_G['member']['conisbind']) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;updatestat('connectlogin', 1);<br /><li>&nbsp; &nbsp; }<br /><li>&nbsp; &nbsp; // 更新用户积分<br /><li>&nbsp; &nbsp; $rule = updatecreditbyaction('daylogin', $_G['uid']);<br /><li>&nbsp; &nbsp; if(!$rule['updatecredit']) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;checkusergroup($_G['uid']);<br /><li>&nbsp; &nbsp; }<br /><li>}<br /><li> <br /><li>/**<br /><li> * 登录检查<br /><li> *<br /><li> * 用于检查用户登录名是否可用,如果是,则返回可以登录的标志;如果不可用,根据失败次数返回相应的延迟时间。<br /><li> *<br /><li> * @param string $username 用户输入的用户名<br /><li> * @return int 返回值为0表示可以登录,大于0表示需要等待的时间(秒)<br /><li> */<br /><li>function logincheck($username) {<br /><li>&nbsp; &nbsp; global $_G;<br /><li> <br /><li>&nbsp; &nbsp; $return = 0;<br /><li>&nbsp; &nbsp; $username = trim($username);<br /><li>&nbsp; &nbsp; loaducenter();<br /><li>&nbsp; &nbsp; if(function_exists('uc_user_logincheck')) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 如果存在与UCenter的登录检查函数,则调用UCenter的登录检查<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$return = uc_user_logincheck(addslashes($username), $_G['clientip']);<br /><li>&nbsp; &nbsp; } else {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 不存在时,进行本地登录检查<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$login = C::t('common_failedlogin')-&gt;fetch_ip($_G['clientip']);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$return = (!$login || (TIMESTAMP - $login['lastupdate'] &gt; 900)) ? 5 : max(0, 5 - $login['count']);<br /><li> <br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if(!$login) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;C::t('common_failedlogin')-&gt;insert(array(<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 'ip' =&gt; $_G['clientip'],<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 'count' =&gt; 0,<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 'lastupdate' =&gt; TIMESTAMP<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;), false, true);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} elseif(TIMESTAMP - $login['lastupdate'] &gt; 900) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;C::t('common_failedlogin')-&gt;insert(array(<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 'ip' =&gt; $_G['clientip'],<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 'count' =&gt; 0,<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 'lastupdate' =&gt; TIMESTAMP<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;), false, true);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;C::t('common_failedlogin')-&gt;delete_old(901);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br /><li>&nbsp; &nbsp; }<br /><li>&nbsp; &nbsp; return $return;<br /><li>}<br /><li> <br /><li>/**<br /><li> * 登录失败处理<br /><li> *<br /><li> * 当用户登录失败时,记录登录失败信息,防止恶意登录攻击。<br /><li> *<br /><li> * @param string $username 用户输入的用户名<br /><li> */<br /><li>function loginfailed($username) {<br /><li>&nbsp; &nbsp; global $_G;<br /><li> <br /><li>&nbsp; &nbsp; loaducenter();<br /><li>&nbsp; &nbsp; if(function_exists('uc_user_logincheck')) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 如果存在与UCenter的登录检查函数,则不进行处理<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return;<br /><li>&nbsp; &nbsp; }<br /><li>&nbsp; &nbsp; // 记录登录失败信息<br /><li>&nbsp; &nbsp; C::t('common_failedlogin')-&gt;update_failed($_G['clientip']);<br /><li>}<br /><li>/**<br /><li> * 检查IP尝试次数是否超过限制。<br /><li> *<br /><li> * @param $numiptry int 尝试次数限制。<br /><li> * @param $timeiptry int 时间限制(秒)。超过此时间限制,尝试次数将被重置。<br /><li> * @return bool 如果尝试次数超过限制,返回true;否则,返回false。<br /><li> */<br /><li>function failedipcheck($numiptry, $timeiptry) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;global $_G;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if(!$numiptry) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; return false;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 检查当前IP在指定时间内尝试的次数是否已达到或超过限制<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return $numiptry &lt;= C::t('common_failedip')-&gt;get_ip_count($_G['clientip'], TIMESTAMP - $timeiptry);<br /><li>}<br /><li> <br /><li>/**<br /><li> * 记录一个失败的IP尝试。<br /><li> */<br /><li>function failedip() {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;global $_G;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 插入当前IP到失败尝试表中<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;C::t('common_failedip')-&gt;insert_ip($_G['clientip']);<br /><li>}<br /><li> <br /><li>/**<br /><li> * 获取邀请码信息。<br /><li> *<br /><li> * @return array 包含邀请码相关用户信息的数组,如果不存在有效邀请码则返回空数组。<br /><li> */<br /><li>function getinvite() {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;global $_G;<br /><li> <br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 如果注册功能关闭,则直接返回空数组<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if($_G['setting']['regstatus'] == 1) return array();<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$result = array();<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$cookies = empty($_G['cookie']['invite_auth']) ? array() : explode(',', $_G['cookie']['invite_auth']);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$cookiecount = count($cookies);<br /><li> <br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 处理通过URL传入的邀请码<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$_GET['invitecode'] = trim($_GET['invitecode']);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if($cookiecount == 2 || $_GET['invitecode']) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $id = intval($cookies);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $code = trim($cookies);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; if($_GET['invitecode']) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;// 通过邀请码查询邀请信息<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$invite = C::t('common_invite')-&gt;fetch_by_code($_GET['invitecode']);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$code = trim($_GET['invitecode']);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; } else {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;// 通过ID查询邀请信息<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$invite = C::t('common_invite')-&gt;fetch($id);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; }<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; // 验证邀请信息的有效性<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; if(!empty($invite)) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if($invite['code'] == $code &amp;&amp; empty($invite['fuid']) &amp;&amp; (empty($invite['endtime']) || $_G['timestamp'] &lt; $invite['endtime'])) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$result['uid'] = $invite['uid'];<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$result['id'] = $invite['id'];<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;}<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; }<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} elseif($cookiecount == 3) { // 处理通过cookie传入的邀请码<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $uid = intval($cookies);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $code = trim($cookies);<br /><li> <br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $invite_code = helper_invite::generate_key($uid);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; if($code === $invite_code) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$member = getuserbyuid($uid);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if($member) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$usergroup = C::t('common_usergroup')-&gt;fetch($member['groupid']);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 如果用户组不允许邀请或邀请需要付费,则返回空数组<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if(!$usergroup['allowinvite'] || $usergroup['inviteprice'] &gt; 0) return array();<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;} else {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return array();<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;}<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$result['uid'] = $uid;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; }<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br /><li> <br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 如果获取到有效的邀请信息,填充邀请者用户名<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if($result['uid']) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $member = getuserbyuid($result['uid']);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $result['username'] = $member['username'];<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} else {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; // 如果没有有效的邀请信息,清除邀请cookie<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; dsetcookie('invite_auth', '');<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br /><li> <br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return $result;<br /><li>}<br /><li>/**<br /><li> * 替换字符串中的站点变量<br /><li> *<br /><li> * @param string $string 需要替换的字符串<br /><li> * @param array $replaces 用户自定义的替换数组,默认为空数组<br /><li> * @return string 替换后的字符串<br /><li> */<br /><li>function replacesitevar($string, $replaces = array()) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;global $_G;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 定义站点变量<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$sitevars = array(<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; '{sitename}' =&gt; $_G['setting']['sitename'],<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; '{bbname}' =&gt; $_G['setting']['bbname'],<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; '{time}' =&gt; dgmdate(TIMESTAMP, 'Y-n-j H:i'),<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; '{adminemail}' =&gt; $_G['setting']['adminemail'],<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; '{username}' =&gt; $_G['member']['username'],<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; '{myname}' =&gt; $_G['member']['username']<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 合并用户自定义替换数组和站点变量<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$replaces = array_merge($sitevars, $replaces);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 替换字符串并返回<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return str_replace(array_keys($replaces), array_values($replaces), $string);<br /><li>}<br /><li> <br /><li>/**<br /><li> * 清除用户cookie<br /><li> */<br /><li>function clearcookies() {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;global $_G;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 遍历cookie,除去特定的键值,其余全部清除<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;foreach($_G['cookie'] as $k =&gt; $v) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; if($k != 'widthauto') {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;dsetcookie($k);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; }<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 重置用户登录状态<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$_G['uid'] = $_G['adminid'] = 0;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$_G['username'] = $_G['member']['password'] = '';<br /><li>}<br /><li> <br /><li>/**<br /><li> * 处理犯罪记录相关操作<br /><li> *<br /><li> * @param string $fun 要执行的操作<br /><li> * @return mixed 操作结果,失败返回false<br /><li> */<br /><li>function crime($fun) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if(!$fun) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; return false;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;include_once libfile('class/member');<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$crimerecord = &amp; crime_action_ctl::instance();<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$arg_list = func_get_args();<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 根据传入的函数名执行不同的操作<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if($fun == 'recordaction') {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; list(, $uid, $action, $reason) = $arg_list;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; return $crimerecord-&gt;$fun($uid, $action, $reason);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} elseif($fun == 'getactionlist') {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; list(, $uid) = $arg_list;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; return $crimerecord-&gt;$fun($uid);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} elseif($fun == 'getcount') {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; list(, $uid, $action) = $arg_list;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; return $crimerecord-&gt;$fun($uid, $action);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} elseif($fun == 'search') {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; list(, $action, $username, $operator, $starttime, $endtime, $reason, $start, $limit) = $arg_list;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; return $crimerecord-&gt;$fun($action, $username, $operator, $starttime, $endtime, $reason, $start, $limit);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} elseif($fun == 'actions') {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; return crime_action_ctl::$actions;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return false;<br /><li>}<br /><li> <br /><li>/**<br /><li> * 检查并更新关注的动态<br /><li> */<br /><li>function checkfollowfeed() {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;global $_G;<br /><li> <br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if($_G['uid']) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $lastcheckfeed = 0;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; if(!empty($_G['cookie']['lastcheckfeed'])) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$time = explode('|', $_G['cookie']['lastcheckfeed']);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if($time == $_G['uid']) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$lastcheckfeed = $time;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;}<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; }<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; if(!$lastcheckfeed) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$lastcheckfeed = getuserprofile('lastactivity');<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; }<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; // 设置最后一次检查动态的时间<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; dsetcookie('lastcheckfeed', $_G['uid'].'|'.TIMESTAMP, 31536000);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; // 获取关注的用户<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $followuser = C::t('home_follow')-&gt;fetch_all_following_by_uid($_G['uid']);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $uids = array_keys($followuser);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; if(!empty($uids)) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;// 检查是否有新的动态<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$count = C::t('home_follow_feed')-&gt;count_by_uid_dateline($uids, $lastcheckfeed);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if($count) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 有新动态,添加通知<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;notification_add($_G['uid'], 'follow', 'member_follow', array('count' =&gt; $count, 'from_id'=&gt;$_G['uid'], 'from_idtype' =&gt; 'follow'), 1);<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;}<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; }<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 更新检查动态的cookie<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;dsetcookie('checkfollow', 1, 30);<br /><li>}<br /><li> <br /><li>/**<br /><li> * 验证邮箱格式及合法性<br /><li> *<br /><li> * @param string $email 需要验证的邮箱地址<br /><li> */<br /><li>function checkemail($email) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;global $_G;<br /><li> <br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$email = strtolower(trim($email));<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if(strlen($email) &gt; 255) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; // 邮箱地址过长<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; showmessage('profile_email_illegal', '', array(), array('handle' =&gt; false));<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if($_G['setting']['regmaildomain']) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; // 检查邮箱域名是否合法<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; $maildomainexp = '/('.str_replace(&quot;\r\n&quot;, '|', preg_quote(trim($_G['setting']['maildomainlist']), '/')).')$/i';<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; if($_G['setting']['regmaildomain'] == 1 &amp;&amp; !preg_match($maildomainexp, $email)) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;showmessage('profile_email_domain_illegal', '', array(), array('handle' =&gt; false));<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; } elseif($_G['setting']['regmaildomain'] == 2 &amp;&amp; preg_match($maildomainexp, $email)) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;showmessage('profile_email_domain_illegal', '', array(), array('handle' =&gt; false));<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; }<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br /><li> <br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 调用ucenter接口验证邮箱<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;loaducenter();<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$ucresult = uc_user_checkemail($email);<br /><li> <br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;// 处理ucenter返回的结果<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if($ucresult == -4) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; showmessage('profile_email_illegal', '', array(), array('handle' =&gt; false));<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} elseif($ucresult == -5) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; showmessage('profile_email_domain_illegal', '', array(), array('handle' =&gt; false));<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} elseif($ucresult == -6) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; showmessage('profile_email_duplicate', '', array(), array('handle' =&gt; false));<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br /><li>}<br /><li> <br /><li>/**<br /><li> * 生成获取密码的签名链接<br /><li> *<br /><li> * @param int $uid 用户ID<br /><li> * @param string $idstring 用户注册ID字符串<br /><li> * @return string 签名链接<br /><li> */<br /><li>function make_getpws_sign($uid, $idstring) {<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;global $_G;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;$link = &quot;member.php?mod=getpasswd&amp;uid={$uid}&amp;id={$idstring}&quot;;<br /><li>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return dsign($link);<br /><li>}<br /><li> <br /><li>?&gt;</ol><br /><br />function<em>, </em>Discuz<em>, </em>核心<em>, </em>文件

天外飘仙 發表於 2024-10-28 21:56:01

感谢大佬分享

白天也懂夜的黑 發表於 2024-10-29 08:23:43

小白路过。请问这是干嘛用的?
頁: [1]
查看完整版本: Discuz x3.5 核心文件 function/function_member.php 函数注释