discuz论坛 用户登录 后台程序代码 |
还好,用户登录这里通过一个小小的方法可以实现和论坛同步了.可以不用passport接口. 这是我整理的数据,仅供参考. 登录传两值过来就行(username和password); 复制代码 代码如下: <?php session_start(); define(NOROBOT, TRUE); define(CURSCRIPT, logging); require_once ./include/common.inc.php; require_once DISCUZ_ROOT../include/misc.func.php; if($action == login) { $field = $loginfield == uid ? uid : username; //get secure code checking status (pos. -2) $seccodecheck = substr(sprintf(%05b, $seccodestatus), -2, 1); if($seccodecheck && $seccodedata[loginfailedcount]) { $seccodecheck = $db->result($db->query("SELECT count(*) FROM {$tablepre}failedlogins WHERE ip=$onlineip AND count>=$seccodedata[loginfailedcount] AND $timestamp-lastupdate<=900"), 0); } $discuz_uid = 0; $discuz_user = $discuz_pw = $discuz_secques = $md5_password = ; $member = array(); $loginperm = logincheck(); if(!$loginperm) { showmessage(login_strike); } $secques = quescrypt($questionid, $answer); if(isset($loginauth)) { $field = username; $password = VERIFIED; list($username, $md5_password) = daddslashes(explode("\t", authcode($loginauth, DECODE)), 1); } else { $md5_password = md5($password); $password = preg_replace("/^(.{".round(strlen($password) / 4)."})(.+?)(.{".round(strlen($password) / 6)."})$/s", "\\1***\\3", $password); } $query = $db->query("SELECT m.uid AS discuz_uid, m.username AS discuz_user, m.password AS discuz_pw, m.secques AS discuz_secques, m.adminid, m.groupid, m.styleid AS styleidmem, m.lastvisit, m.lastpost, u.allowinvisible FROM {$tablepre}members m LEFT JOIN {$tablepre}usergroups u USING (groupid) WHERE m.$field=$username"); $member = $db->fetch_array($query); //判断登录是否正确 if($member[password]!=$md5_password){ echo "您输入的用户名或密码错误!"; exit(); } //通过就执行下边的程序 extract($member); $discuz_userss = $discuz_user; $discuz_user = addslashes($discuz_user); if(($allowinvisible && $loginmode == invisible) || $loginmode == normal) { $db->query("UPDATE {$tablepre}members SET invisible=".($loginmode == invisible ? 1 : 0)." WHERE uid=$member[discuz_uid]", UNBUFFERED); } $styleid = intval(empty($_POST[styleid]) ? ($styleidmem ? $styleidmem : $_DCACHE[settings][styleid]) : $_POST[styleid]); $cookietime = intval(isset($_POST[cookietime]) ? $_POST[cookietime] : ($_DCOOKIE[cookietime] ? $_DCOOKIE[cookietime] : 0)); dsetcookie(cookietime, $cookietime, 31536000); dsetcookie(auth, authcode("$discuz_pw\t$discuz_secques\t$discuz_uid", ENCODE), $cookietime); $sessionexists = 0; updatesession();//更新论坛USERPASS数据 echo "{action:ture}";//这里是您要输出的数据 print_r($_DSESSION); echo $discuz_userss; } ?> |