分析ECMall的注册与登录机制

ECMall的注册和登录的过程比较复杂
服务器君一共花费了106.947 ms进行了4次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

ecmall的注册流程index.php?app=member&act=register。

首先app是member,act是register方法。

index.php中。通过ecmall的startup方法来启动,主要包含了eccore/ecmall.php,startup方法中包含eccore/controller/app.base.php和eccore/model/model.base.php基础类,通过

$app = isset($_REQUEST['app']) ? trim($_REQUEST['app']) : $default_app;
$act = isset($_REQUEST['act']) ? trim($_REQUEST['act']) : $default_act; 

来获取app和act。

如果是注册,act=member那么

$app_class_name = ucfirst($app) . 'App';
/* 实例化控制器 */
$app = new $app_class_name();

这里的$app = new MemberApp,调用MemberApp类里面的register方法。而在register方法里面,获取注册信息。通过global.lib.php中的ms方法。

include(ROOT_PATH . '/includes/passport.base.php');
include(ROOT_PATH . '/includes/passports/' . MEMBER_TYPE . '.passport.php'.regissword.php

而在register中ms()函数中以下程序

include(ROOT_PATH . '/includes/passports/' . MEMBER_TYPE . '.passport.php');
$class_name  = ucfirst(MEMBER_TYPE) . 'Passport';
$ms = new $class_name();

包含了default.passport.php中的DefaultPassport类,而他又继承了BasePassport,他有几行代码

$user_class_name = ucfirst($this->_name) . 'PassportUser';
$this->user = new $user_class_name();

所以程序里面的$this -> user就是这么来的。

$user_class_name其实就是includes/passports/default.passport.php中的DefaultPassportUser类。而他又extends了BasePassportUser,他调用了BasePassportUser中的_local_add()方法。而_local_add()方法通过调用model中的 member.model.php中的初始化数据,通过eccore/model/model.base.php中的BaseModel类下的function add($data, $compatible = false)方法来进行数据库处理。从而完成了注册功能。

    /**
     *  添加一条记录
     *
     *  @author Garbin
     *  @param  array $data
     *  @return mixed
     */
    function add($data, $compatible = false)
    {
        if (empty($data) || !$this->dataEnough($data))
        {
            return false;
        }
        $data = $this->_valid($data);
        if (!$data)
        {
            $this->_error('no_valid_data');
            return false;
        }
        $insert_info = $this->_getInsertInfo($data);
        $mode = $compatible ? 'REPLACE' : 'INSERT';
        $this->db->query("{$mode} INTO {$this->table}{$insert_info['fields']} VALUES{$insert_info['values']}");
        $insert_id = $this->db->insert_id();
        if ($insert_id)
        {
            if ($insert_info['length'] > 1)
            {
                for ($i = $insert_id; $i < $insert_id + $insert_info['length']; $i++)
                {
                    $id[] = $i;
                }
            }
            else
            {
                /* 添加单条记录 */
                $id = $insert_id;
            }
        }
        return $id;
    }

登录机制

ecmall电子商务系统的登陆,过程其实非常复杂。首先他是通过调用mall\default\login.html来调用登陆页面,调用的程序是通过app\frontend.base.php的login方法来调用来实现的。

if (!IS_POST)程序表示登陆页面的显示,通过$this->display('login.html')的调用来处理。ecmall的login.html页面主要有以下几个变量要传递,user_name,password,captcha三个变量,来用用于登陆验证。$user_name = trim($_POST['user_name'])和$password = $_POST['password']主要是用来接受用户名和密码的。通过连接登陆中心$ms =& ms()来调用$ms->user->auth($user_name, $password)来进行登陆验证的。

文件includes/global.lib.php中的function &ms()就是用来连接登陆中心的。 include(ROOT_PATH . '/includes/passports/' . MEMBER_TYPE . '.passport.php'); $class_name = ucfirst(MEMBER_TYPE) . 'Passport';$ms = new $class_name();这里就是来声明登陆对象的。

本文地址:http://www.nowamagic.net/librarys/veda/detail/1309,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/1309

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《代码大全(第2版)》 史蒂夫•迈克康奈尔 (Steve McConnell) (作者), 金戈 (译者)

代码大全(第2版)是著名IT畅销书作者、《IEEE Software》杂志前主编、具有20年编程与项目管理经验的Steve McConnell十余年前的经典著作的全新演绎:第2版做了全面的更新,增加了很多与时俱进的内容,包括对新语言、新的开发过程与方法论的讨论等等。这是一本百科全书式的软件构建手册,涵盖了软件构建活动的方方面面,尤其强调提高软件质量的种种实践方法。

更多计算机宝库...