discuz論壇 用戶登錄 后臺(tái)程序代碼
更新時(shí)間:2008年11月27日 20:24:59 作者:
discuz論壇的程序可讀性不好,暈暈的.為了整合論壇和網(wǎng)站數(shù)據(jù),又不得不看.
還好,用戶登錄這里通過一個(gè)小小的方法可以實(shí)現(xiàn)和論壇同步了.可以不用passport接口.
這是我整理的數(shù)據(jù),僅供參考.
登錄傳兩值過來就行(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 "您輸入的用戶名或密碼錯(cuò)誤!";
exit();
}
//通過就執(zhí)行下邊的程序
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數(shù)據(jù)
echo "{'action':'ture'}";//這里是您要輸出的數(shù)據(jù)
print_r($_DSESSION);
echo $discuz_userss;
}
?>
這是我整理的數(shù)據(jù),僅供參考.
登錄傳兩值過來就行(username和password);
復(fù)制代碼 代碼如下:
<?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 "您輸入的用戶名或密碼錯(cuò)誤!";
exit();
}
//通過就執(zhí)行下邊的程序
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數(shù)據(jù)
echo "{'action':'ture'}";//這里是您要輸出的數(shù)據(jù)
print_r($_DSESSION);
echo $discuz_userss;
}
?>
相關(guān)文章
114啦源碼(114la)不能生成地方房產(chǎn)和地方報(bào)刊問題4級(jí)頁面0字節(jié)的解決方法
做了個(gè)網(wǎng)址導(dǎo)航站,用的是114la的源碼,沒想到里面有很多問題,官方也沒出補(bǔ)丁,沒辦法,自己學(xué)著改吧2012-01-01thinkphp3.2中實(shí)現(xiàn)phpexcel導(dǎo)出帶生成圖片示例
本篇文章主要介紹了thinkphp3.2中實(shí)現(xiàn)phpexcel導(dǎo)出帶生成圖片示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02基于php和mysql的簡單的dao類實(shí)現(xiàn)crud操作功能
一個(gè)簡單的dao,實(shí)現(xiàn)基本的CRUD功能,可以繼承擴(kuò)展為實(shí)際業(yè)務(wù)的dao類,當(dāng)然也可以直接使用2014-01-01WordPress中訪客登陸實(shí)現(xiàn)郵件提醒的PHP腳本實(shí)例分享
這篇文章主要介紹了WordPress中訪客登陸實(shí)現(xiàn)郵件提醒的PHP腳本實(shí)例分享,類似于社交網(wǎng)站的異地IP登陸提醒,不過IP所在地顯示的實(shí)現(xiàn)并沒有在本文介紹范圍中,需要的朋友可以參考下2015-12-12PHP Ajax JavaScript Json獲取天氣信息實(shí)現(xiàn)代碼
這篇文章主要介紹了PHP Ajax JavaScript Json實(shí)現(xiàn)天氣信息獲取 的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-08-08