discuz论坛 用户登录 后台程序代码
2018-09-21 10:07
还好,用户登录这里通过一个小小的方法可以实现和论坛同步了.可以不用passport接口.
这是我整理的数据,仅供参考.
登录传两值过来就行(username和password);
复制代码 代码如下:
<?php
session_start();
define(NOROBOT, TRUE);
define(CURSCRIPT, logging);
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);
}
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;
}
?>