分析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     $data $this->_valid($data);





15     if (!$data)





16     {





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





18         return false;





19     }





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





21     $mode $compatible ‘REPLACE‘ ‘INSERT‘;





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





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





24     if ($insert_id)





25     {





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





27         {





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





29             {





30                 $id[]
$i;





31             }





32         }





33         else





34         {





35             /*
添加单条记录 */





36             $id $insert_id;





37         }





38     }





39     return $id;





40 }

登录机制

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-08-27 04:31:02

分析ECMall的注册与登录机制的相关文章

ECmall邀请注册功能构想和实现

需求:客户想有一个可以邀请注册,每一个客户都有自己的邀请链接,可以邀请朋友注册. 环境:WAMP,基于ECmallCMS二次开发. 初步构想: 每个用户在数据库中都有自己的id(A),可以通过判断id来确定A是否邀请了B.注册成功则写入数据库的ecm_member中.在member数据表添加一个字段,pr_id,作为邀请人的id. 首选分析ECmall的注册机制. 主入口文件:index.php?app=member&act=register&ret_url= member模型下的regi

剖析ECMALL的登录机制

在ecmall.php文件中实例化控制器类,每一个控制器类,必须继承(extends)upload\admin\app\backend.base.php文件.在继承中调用方法是谁先被继承谁的方法被先调用. 以default为例,首先在公共入口文件index.php文件中包含eccore/ecmall.php文件,调用startup方法并把includes/global.lib.php,includes/libraries/time.lib.php,includes/ecapp.base.php,

java在线聊天项目1.1版 ——开启多个客户端,分别实现注册和登录功能,使用客户端与服务端信息request机制,重构线程,将单独的登录和注册线程合并

实现效果图: eclipse项目中初步整合之前的各个客户端和服务端的窗口与工具类,效果如下图: 已将注册服务器线程RegServer功能放到LoginServer中,使用客户端与服务端的request请求机制,根据请求是注册还是登录,分别进行相应response,客户端根据相应内容判断下一步操作. 发送信息的模式还较为原始,没有使用json方法,但gson包已经导入,支持发送键值对的字符串,及自动解析. 登录对话框LoginDialog类代码如下: package com.swift.frame

解决整合 UCenter 首次注册同步登录与自动激活

多程序整合 UCenter,在新用户首次注册后是没有同步登录到其它程序的,也就是说用户得在其它程序用密码再登录一次,以后才能同步登录,还有就是用户不是在 Discuz 程序注册的话,在 Discuz 登录时得手动激活,这些都导致用户体验很不好,不过解决方法很简单~修改各个程序目录下的 ./uc_client/model/user.php 文件,大概在 129 行处的 function add_user 函数里添加代码如 Discuz X 的: $this->db->query("IN

再学ajax--第二天 | 基于php+mysql+ajax的表单注册、登录、注销

写在前面 ajax学习到了第二天,这次是用第一天封装的ajax函数,后端使用了php+mysql实现基本的注册,登录,注销. php是我前几个月get到的技能,我已经学习到了面向对象,知道各修饰符的含义,继承,接口,构造函数,实例化对象 mysql是跟php一块学的,学习了基本增删改查. ajax原理其实不难理解,最主要的就是XMLHttpRequest(ActiveXObject("Microsoft.XMLHTTP")):在理解该对象之后,最主要理解的是前后端数据的传递问题,我也是

10天学会phpWeChat——第十天:phpWeChat的会员注册、登录以及微信网页开发

通过前面的系列教程,我们系统的讲解了phpWeChat从视图端.控制器端到模型端的操作流程:熟悉了phpWeChat的目录结构:掌握了视图端模板如何创建一个丰富的表单和模型端如何操作数据库.这一切都是传统Web以及现代H5开发的核心. 我们今天进行<10天学会phpWeChat>教程的最后一讲,phpWeChat的微信网页开发.在这一讲里,我们将重点讲解在微信网页开发中几个常见参数的获取和一个微信扫一扫的实例. 一.微信网页开发中的几个重要参数(文档参考:https://mp.weixin.q

JavaWeb-13 (用户的注册和登录案例)

JavaWeb-13:项目案例 用户注册和登录案例项目 一.用户注册和登录案例 1.技术架构:三层架构(表现层MVC:M:model V:View C:Controller) 2.要求:JSP中不能出现一行java脚本或java表达式.除了指令<%@%>,其余地方不能有<%%> 3.数据库:临时使用xml.解析使用Dom4j 4.必须知道要干什么? 5.开发步骤: a.建立工程,搭建开发环境(拷贝jar包.建立配置文件) dom4j.jar jaxen.jar commons-be

PC 端微信扫码注册和登录

一.前言 先声明一下,本文所注重点为实现思路,代码及数据库设计主要为了展现思路,如果对代码效率有着苛刻要求的项目切勿照搬. 相信做过微信开发的人授权这块都没少做过,但是一般来说我们更多的是为移动端的网站做授权,确切来说是在微信端下做的一个授权.今天遇到的一个问题是,项目支持微信端以及 PC 端,并且开放注册.要求做到无论在 PC 端注册或者是在微信端注册之后都可以在另外一个端进行登录.也就是说无论 PC 或是微信必须做到"你就是你"(通过某种方式关联). 二.寻找解决方案 按传统的方式

squid源码分析之--epoll和event驱动机制

最近在看squid的源码,刚开始毫无头绪,后来逐步找到一些感觉,记录之. squid的源码中大概有100多个c文件,一个一个地看明显行不通.我们需要逐步找出设计者的主线. 先从main.c入手,需要关注的,是main.c离结尾比较近的那一段,它是squid的心脏: "for(::){ ... event_run(); ... swich(comm_select()... ... }" event_run()函数定义在event.c文件里,它每次在恰当的时间从event.c的一个全局的e