Discuz教程网

discuz论坛 用户登录 后台程序代码

[复制链接]
authicon dly 发表于 2011-9-12 14:48:10 | 显示全部楼层 |阅读模式
还好,用户登录这里通过一个小小的方法可以实现和论坛同步了.可以不用passport接口.
这是我整理的数据,仅供参考.
登录传两值过来就行(username和password);
代码如下:

  1. <?php
  2. session_start();
  3. define('NOROBOT', TRUE);
  4. define('CURSCRIPT', 'logging');
  5. require_once './include/common.inc.php';
  6. require_once DISCUZ_ROOT.'./include/misc.func.php';
  7. if($action == 'login') {
  8. $field = $loginfield == 'uid' ? 'uid' : 'username';
  9. //get secure code checking status (pos. -2)
  10. $seccodecheck = substr(sprintf('%05b', $seccodestatus), -2, 1);
  11. if($seccodecheck && $seccodedata['loginfailedcount']) {
  12. $seccodecheck = $db->result($db->query("SELECT count(*) FROM {$tablepre}failedlogins WHERE ip='$onlineip' AND count>='$seccodedata[loginfailedcount]' AND $timestamp-lastupdate<=900"), 0);
  13. }
  14. $discuz_uid = 0;
  15. $discuz_user = $discuz_pw = $discuz_secques = $md5_password = '';
  16. $member = array();
  17. $loginperm = logincheck();
  18. if(!$loginperm) {
  19. showmessage('login_strike');
  20. }
  21. $secques = quescrypt($questionid, $answer);
  22. if(isset($loginauth)) {
  23. $field = 'username';
  24. $password = 'VERIFIED';
  25. list($username, $md5_password) = daddslashes(explode("\t", authcode($loginauth, 'DECODE')), 1);
  26. } else {
  27. $md5_password = md5($password);
  28. $password = preg_replace("/^(.{".round(strlen($password) / 4)."})(.+?)(.{".round(strlen($password) / 6)."})$/s", "\\1***\\3", $password);
  29. }
  30. $query = $db->query("SELECT m.uid AS discuz_uid, m.username AS discuz_user, m.password AS discuz_pw, m.secques AS discuz_secques,
  31. m.adminid, m.groupid, m.styleid AS styleidmem, m.lastvisit, m.lastpost, u.allowinvisible
  32. FROM {$tablepre}members m LEFT JOIN {$tablepre}usergroups u USING (groupid)
  33. WHERE m.$field='$username'");
  34. $member = $db->fetch_array($query);
  35. //判断登录是否正确
  36. if($member['password']!=$md5_password){
  37. echo "您输入的用户名或密码错误!";
  38. exit();
  39. }
  40. //通过就执行下边的程序
  41. extract($member);
  42. $discuz_userss = $discuz_user;
  43. $discuz_user = addslashes($discuz_user);
  44. if(($allowinvisible && $loginmode == 'invisible') || $loginmode == 'normal') {
  45. $db->query("UPDATE {$tablepre}members SET invisible='".($loginmode == 'invisible' ? 1 : 0)."' WHERE uid='$member[discuz_uid]'", 'UNBUFFERED');
  46. }
  47. $styleid = intval(empty($_POST['styleid']) ? ($styleidmem ? $styleidmem :
  48. $_DCACHE['settings']['styleid']) : $_POST['styleid']);
  49. $cookietime = intval(isset($_POST['cookietime']) ? $_POST['cookietime'] :
  50. ($_DCOOKIE['cookietime'] ? $_DCOOKIE['cookietime'] : 0));
  51. dsetcookie('cookietime', $cookietime, 31536000);
  52. dsetcookie('auth', authcode("$discuz_pw\t$discuz_secques\t$discuz_uid", 'ENCODE'), $cookietime);
  53. $sessionexists = 0;
  54. updatesession();//更新论坛USERPASS数据
  55. echo "{'action':'ture'}";//这里是您要输出的数据
  56. print_r($_DSESSION);
  57. echo $discuz_userss;
  58. }
  59. ?>
复制代码





上一篇:PHP读取msn上的用户信息类
下一篇:PHP AJAX实例根据邮编自动完成地址信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 05:08

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表