ECMall注册机制简要分析

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基础类,通过






1 $app = isset($_REQUEST[‘app‘]) ? trim($_REQUEST[‘app‘]) : $default_app;






2 $act = isset($_REQUEST[‘act‘]) ? trim($_REQUEST[‘act‘]) : $default_act;

来获取app和act。

如果是注册,act=member那么






1 $app_class_name = ucfirst($app) . ‘App‘;






2 /* 实例化控制器 */






3 $app new $app_class_name();

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






1 include(ROOT_PATH . ‘/includes/passport.base.php‘);






2 include(ROOT_PATH . ‘/includes/passports/‘ . MEMBER_TYPE . ‘.passport.php‘.regissword.php

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






1 include(ROOT_PATH . ‘/includes/passports/‘ . MEMBER_TYPE . ‘.passport.php‘);






2 $class_name  = ucfirst(MEMBER_TYPE) . ‘Passport‘;






3 $ms new $class_name();

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






1 $user_class_name = ucfirst($this->_name) . ‘PassportUser‘;






2 $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)方法来进行数据库处理。从而完成了注册功能。






01 /**






02  *  添加一条记录






03  *






04  *  @author Garbin






05  *  @param  array $data






06  *  @return mixed






07  */






08 function add($data$compatible = false)






09 {






10     if (empty($data) || !$this->dataEnough($data))






11     {






12         return false;






13     }





14  






15     $data $this->_valid($data);






16     if (!$data)






17     {






18         $this->_error(‘no_valid_data‘);






19         return false;






20     }






21     $insert_info $this->_getInsertInfo($data);






22     $mode $compatible ‘REPLACE‘ ‘INSERT‘;





23  






24     $this->db->query("{$mode} INTO {$this->table}{$insert_info[‘fields‘]} VALUES{$insert_info[‘values‘]}");






25     $insert_id $this->db->insert_id();






26     if ($insert_id)






27     {






28         if ($insert_info[‘length‘] > 1)






29         {






30             for ($i $insert_id$i $insert_id $insert_info[‘length‘]; $i++)






31             {






32                 $id[] = $i;






33             }






34         }






35         else






36         {






37             /* 添加单条记录 */






38             $id $insert_id;






39         }






40     }





41  






42     return $id;






43 }

登录机制

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();这里就是来声明登陆对象的.

ECMall注册机制简要分析,布布扣,bubuko.com

时间: 2024-10-23 18:04:01

ECMall注册机制简要分析的相关文章

Android -- Vold机制简要分析

Android -- Vold机制简要分析 Vold是用于管理和控制Android外部存储介质的后台进程,这里说的管控,主要包括SDK的插拔.挂载/卸载和格式化等:它是Android平台外部存储系统的管控枢纽. Vold的整个控制模块主要由三个类模块构成:NetlinkManager.VolumeManager和CommandListener,它们的功能划分大概是: NetlinkManager:用于从kernel中获取SD卡插拔的Uevnet消息 VolumeManager:管理模块,对Net

Android AsyncTask内部线程池异步执行任务机制简要分析

如下分析针对的API 25的AsyncTask的源码: 使用AsyncTask如果是调用execute方法则是同步执行任务,想要异步执行任务可以直接调用executeOnExecutor方法,多数情况下我们会使用AsyncTask内部静态的线程池, THREAD_POOL_EXECUTOR,这里并不是要分析AsyncTask内部的流程,而是简单介绍下线程池的工作流程.可以看到THREAD_POOL_EXECUTOR的配置如下: new ThreadPoolExecutor( CORE_POOL_

小记--------spark的Master的Application注册机制源码分析及Master的注册机制原理分析

原理图解: Master类位置所在:spark-core_2.11-2.1.0.jar的org.apache.spark.deploy.master下的Master类 //截取了部分代码 //处理Application注册的请求 case RegisterApplication(description, driver) => //如果master的状态是standby,也就是当前这个master,是standby master,不是active master //那么Application来请求

Chromium网页输入事件处理机制简要介绍和学习计划

用户在浏览网页的时候,需要与网页进行交互,常用的操作如滑动.捏合网页,以及点击网页中的链接等.这些交互操作也称为用户输入事件,浏览器需要对它们作出迅速的响应,例如及时更新网页内容或者打开新的网页等.浏览器能够对用户输入事件作出迅速的响应是至关重要的,因为这关乎到用户浏览网页时的体验,尤其是在用户滑动和捏合网页时.本文接下来就简要介绍Chromium对用户输入事件的处理机制,以及制定后续的学习计划. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 在任何一个

Android电源管理-休眠简要分析

工作需要,需要对这一块深入学习.故在此做一点分析记录,存疑解惑. 一.开篇 1.Linux 描述的电源状态 - On(on)                                                 S0 -  Working - Standby (standby)                              S1 -  CPU and RAM are powered but not executed - Suspend to RAM(mem)        

Netfilter之连接跟踪实现机制初步分析

Netfilter之连接跟踪实现机制初步分析 原文: http://blog.chinaunix.net/uid-22227409-id-2656910.html 什么是连接跟踪 连接跟踪(CONNTRACK),顾名思义,就是跟踪并且记录连接状态.Linux为每一个经过网络堆栈的数据包,生成一个新的连接记录项(Connection entry).此后,所有属于此连接的数据包都被唯一地分配给这个连接,并标识连接的状态.连接跟踪是防火墙模块的状态检测的基础,同时也是地址转换中实现SNAT和DNAT的

Java虚拟机类加载机制——案例分析

原文出处: 朱小厮 在<Java虚拟机类加载机制>一文中详细阐述了类加载的过程,并举了几个例子进行了简要分析,在文章的最后留了一个悬念给各位,这里来揭开这个悬念.建议先看完<Java虚拟机类加载机制>这篇再来看这个,印象会比较深刻,如若不然,也没什么关系~~下面是程序代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 package jvm.cla

intel万兆网卡驱动简要分析

原创文章,转载请注明: 转载自pagefault 本文链接地址: intel万兆网卡驱动简要分析 这里分析的驱动代码是给予linux kernel 3.4.4 对应的文件在drivers/net/ethernet/intel 目录下,这个分析不涉及到很细节的地方,主要目的是理解下数据在协议栈和驱动之间是如何交互的. 首先我们知道网卡都是pci设备,因此这里每个网卡驱动其实就是一个pci驱动.并且intel这里是把好几个万兆网卡(82599/82598/x540)的驱动做在一起的. 首先我们来看对

SEAndroid安全机制简要介绍和学习计划

与iOS相比,Android最被人诟病的是其流畅性和安全性.然而,从4.0开始,Android不遗余力地改善其流畅性.特别是在即将发布的L版本中,用ART替换了Dalvik,相信会越来越流畅.至于安全性,Android也没有遗忘.从4.3开始,Android引入了一套基于SELinux的安全机制,称为SEAndroid,来加强系统安全性.接下来我们就对SEAndroid进行简要介绍和制定学习计划. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 在介绍SE