作者:文人博客 | 来源:互联网 | 2018-03-17 02:38
discuz论坛的程序可读性不好,晕晕的.为了整合论坛和网站数据,又不得不看.
还好,用户登录这里通过一个小小的方法可以实现和论坛同步了.可以不用passport接口.
这是我整理的数据,仅供参考.
登录传两值过来就行(username和password);
代码如下:
result($db->query("SELECT count(*) FROM {$tablepre}failedlogins WHERE ip=&#39;$onlineip&#39; AND count>=&#39;$seccodedata[loginfailedcount]&#39; AND $timestamp-lastupdate<=900"), 0);
}
$discuz_uid = 0;
$discuz_user = $discuz_pw = $discuz_secques = $md5_password = &#39;&#39;;
$member = array();
$loginperm = logincheck();
if(!$loginperm) {
showmessage(&#39;login_strike&#39;);
}
$secques = quescrypt($questionid, $answer);
if(isset($loginauth)) {
$field = &#39;username&#39;;
$password = &#39;VERIFIED&#39;;
list($username, $md5_password) = daddslashes(explode("\t", authcode($loginauth, &#39;DECODE&#39;)), 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=&#39;$username&#39;");
$member = $db->fetch_array($query);
//判断登录是否正确
if($member[&#39;password&#39;]!=$md5_password){
echo "您输入的用户名或密码错误!";
exit();
}
//通过就执行下边的程序
extract($member);
$discuz_userss = $discuz_user;
$discuz_user = addslashes($discuz_user);
if(($allowinvisible && $loginmode == &#39;invisible&#39;) || $loginmode == &#39;normal&#39;) {
$db->query("UPDATE {$tablepre}members SET invisible=&#39;".($loginmode == &#39;invisible&#39; ? 1 : 0)."&#39; WHERE uid=&#39;$member[discuz_uid]&#39;", &#39;UNBUFFERED&#39;);
}
$styleid = intval(empty($_POST[&#39;styleid&#39;]) ? ($styleidmem ? $styleidmem :
$_DCACHE[&#39;settings&#39;][&#39;styleid&#39;]) : $_POST[&#39;styleid&#39;]);
$COOKIEtime = intval(isset($_POST[&#39;COOKIEtime&#39;]) ? $_POST[&#39;COOKIEtime&#39;] :
($_DCOOKIE[&#39;COOKIEtime&#39;] ? $_DCOOKIE[&#39;COOKIEtime&#39;] : 0));
dsetCOOKIE(&#39;COOKIEtime&#39;, $COOKIEtime, 31536000);
dsetCOOKIE(&#39;auth&#39;, authcode("$discuz_pw\t$discuz_secques\t$discuz_uid", &#39;ENCODE&#39;), $COOKIEtime);
$sessiOnexists= 0;
updatesession();//更新论坛USERPASS数据
echo "{&#39;action&#39;:&#39;ture&#39;}";//这里是您要输出的数据
print_r($_DSESSION);
echo $discuz_userss;
}
?>