zoukankan      html  css  js  c++  java
  • discuz论坛 用户登录 后台程序

    discuz论坛 用户登录 后台程序

    discuz论坛的程序可读性不好,晕晕的.为了整合论坛和网站数据,又不得不看.
    还好,用户登录这里通过一个小小的方法可以实现和论坛同步了.可以不用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;
                
    }
    ?>
  • 相关阅读:
    hdu 4893 Wow! Such Sequence!(线段树)
    Leetcode Best Time to Buy and Sell Stock II
    Debian GNU Linux服务列表的获取、服务的关闭/开启、服务在启动时是否自己主动执行的生效/失效
    R语言中数据结构
    C#编写Windows服务程序 (服务端),client使用 消息队列 实现淘宝 订单全链路效果
    deep learning实践经验总结
    Java编程思想第四版 *第五章 个人练习
    CEPH OBJECTSTORE API介绍
    leetcode(58)-Range Sum Query
    Android百日程序:GridView实现相冊效果
  • 原文地址:https://www.cnblogs.com/fengju/p/6173950.html
Copyright © 2011-2022 走看看