还好,用户登录这里通过一个小小的方法可以实现和论坛同步了.可以不用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(" ", 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 $discuz_secques $discuz_uid", "ENCODE"), $cookietime);
$sessionexists = 0;
updatesession();//更新论坛USERPASS数据
echo "{"action":"ture"}";//这里是您要输出的数据
print_r($_DSESSION);
echo $discuz_userss;
}
?>