Home > Article > Backend Development > discuz forum user login background program code_PHP tutorial
还好,用户登录这里通过一个小小的方法可以实现和论坛同步了.可以不用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; } ?>