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;
}
?>