opencart.com (部分内容似乎被墙了)

中文站点居然有两个:
opencartchina.com (定制版 mycncart )
opencart.cn (中文官网)
数据库(以mycncart为例):
127表。有的对象单张表,有的对象多张表。统计如下:
产品对象(product)是16张表 => 
订单对象(order)是10张表 =>
客户对象(customer)是11张表 =>
页面布局数据表:layout, banner, information
用于扩展的自定义字段表:custom_field
用于维护的表:download, upload
安装好程序,再删除所有的表,再访问本地网站,会出什么事呢?
数据库仍在,连接配置也正确,只是表不见了。
我猜测会在model层发生错误,实际上报错的却是db.php模块和mysqli.php模块。
Controller.php 抽象控制类文件内容只有16行,操纵着registry对象(以下简称reg)。构造函数接收reg的注入,_set函数为reg提供键值对,_get函数提取某个存在的key的值。admin程序目录下的Controller目录下的所有子目录下的具体控制类文件都继承自抽象控制类。
写一个具体的control类:
输出内容语句:
$this->response->setOutput($this->load->view('common/login.tpl',$data));//或者是
return $this->load->view('common/login.tpl',$data);

重定向语句:
<?phpreturn new Action('common/login');?>

写一个index方法,可以使用全局资源:
$this->load->language('common/login'); //翻译模块
$this->language->get('button_upload'); //获取翻译文字
$this->request->get['dictory']; //请求参数
$this->request->files['file']['name'] //上传文件
$this->request->server('HTTPS'); //访问$_SERVER
$this->response->addHeader('Content-Type: application/json');$this->response->setOutput(json_encode($json));$this->response->redirect($this->url->link('common/login', '', 'SSL'));//输出重定向$this->load->model('tool/image'); //导入模型层
$this->model_tool_image->method(); //访问模型层
$this->session->data['token']; //访问会话数据
$this->url->link('report/customer_online', 'token=' . $this->session->data['token'], 'SSL'); //链接
$this->config->get('config_name'); //访问配置文件
$this->user->getUserName(); //用户模块
$this->document->getKeyWords(); //文档模块

$pagination = new Pagination(); //分页数据
$pagination->total = $image_total; //记录数量
$pagination->page = $page; //当前页
$pagination->limit = 16; //单页记录
$pagination->url = $this->url->link('common/filemanager', 'token=' . $this->session->data['token'] . $url . '&page={page}', 'SSL'); //分页链接
$data['pagination'] = $pagination->render(); //渲染分页代码

<?php//在别处引用通用控制器模块。// 以下摘自controller/account/login.php。// 这里的controller所做的事情:计算变量,翻译模板,保存部分html。// 在view/theme/mytemplatename/template/account/login.tpl文件中引用这些变量:// <?php echo $header; ?>, <?php echo $footer; ?> ...
$data['column_left'] = $this->load->controller('common/column_left');$data['column_right'] = $this->load->controller('common/column_right');$data['content_top'] = $this->load->controller('common/content_top');$data['content_bottom'] = $this->load->controller('common/content_bottom');$data['footer'] = $this->load->controller('common/footer');$data['header'] = $this->load->controller('common/header');?>

很棒的一点是,这些资源并没有写死,而是在启动时注入controller类的,很灵活。
控制层的代码十分优雅,精彩。
模型层的代码十分肮脏,无法阅读。
config文件并不是使用数组配置数据,而是使用define函数定义了一堆常量。
url大全:
1 注册 http://host/index.php?route=account/register
2 登录 http://host/index.php?route=account/login
3 忘记 http://host/index.php?route=account/forgotten
4 会员 http://host/index.php?route=account/account

头部操作

<?php//摘自 controller/account/register.php
$this->document->addScript('catalog/view/javascript/jquery/datetimepicker/moment.js');$this->document->addScript('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js');$this->document->addStyle('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.css');?>

如何快速地使用一个开源系统?
1 修改网站元数据。一般在语言翻译文件,配置文件,数据库某个有关配置的结构。为了适应项目的需求,修改菜单、修改按钮的文字。
2 修改模板。在保留原有模板的基础上,新建一套全覆盖或半覆盖的模板文件。在新的模板子系统中应用熟悉的js,css框架。
3 使用原有的资源,比如admin后台的发布表单,web编辑器,各种接口。不要修改。需要的话就新建一个表单模块。比如有的系统中没有适应项目需求的批量操作表单,那就新建一个,自己写一个,然后在后台菜单中挂上链接。
4 不要一下子就想着改动系统,不改动是最好的方案。要考虑如何最大化地利用现有的系统资源。

从echo到response——对框架的一丝乱想
php的echo函数很奇怪,不仅能把数据回显到控制台,也能把数据送给浏览器(这个过程应该是把数据传递给了web服务器,再由web服务器发送到浏览器)。echo既能发送header信息,也能发送body内容(当然兄弟函数printf也能够做到)。这个本该叫做send或passto的函数,却只有display的含义。
如果调用了ob_start函数,echo参数承载的内容还能被暂时“扣押”,直到调用了ob_end或ob_flush,才被发送给浏览器(这还能够被叫做回声吗?!)。
种种迹象表明,echo不是回声,而是发送器。
有了一点内容,出了一点故障,就把信息echo给浏览器,这样子做很烦琐,满纸乱跳的字符串“横割”代码的情况也不好看。框架的开发者们一致地隐藏了echo,提供了一个response对象。这个res对象跟web服务器的res对象不是一回事!在php的世界里,php是站在web服务器后面的,因此这个response对象也是站在web服务器后排的。它所要做的事情是打包echo,集中处理发送的业务(发送给web服务器)。与之相对的,request对象则是要打包各种request数据,提供新的句柄和方法。因为原始的request处理办法很紊乱(file, request, post, get, cookie, server...各种分崩离析的数组)。
写一个admin后台控制程序危险系数有多高?
1 与member后台一样高。
2 admin后台权力越高,风险越大。
3 目录为空或文件是静态,无风险。
4 如果使用了表单,危险全集中在表单处理环节。数据库对谁谁谁都是一样的。
5 危险系数高吗?跟评论框、上传控件、script标签、iframe标签、img标签一样。

转载于:https://www.cnblogs.com/yasir/p/opencart_notes.html

opencart笔记相关推荐

  1. amazeui学习笔记--css(常用组件6)--图标Icon

    amazeui学习笔记--css(常用组件6)--图标Icon 一.总结 1.关注用法即可:在 HTML 上添加添加 am-icon-{图标名称} class. <span class=&quo ...

  2. 【读书笔记】知易行难,多实践

    前言: 其实,我不喜欢看书,只是喜欢找答案,想通过专业的解答来解决我生活的困惑.所以,我听了很多书,也看了很多书,但看完书,没有很多的实践,导致我并不很深入在很多时候. 分享读书笔记: <高效1 ...

  3. 【运维学习笔记】生命不息,搞事开始。。。

    001生命不息,搞事不止!!! 这段时间和hexesdesu搞了很多事情! 之前是机械硬盘和固态硬盘的测速,我就在那默默的看着他一个硬盘一个机械测来测去. 坐在他后面,每天都能看到这位萌萌的小男孩,各 ...

  4. SSAN 关系抽取 论文笔记

    20210621 https://zhuanlan.zhihu.com/p/353183322 [KG笔记]八.文档级(Document Level)关系抽取任务 共指id嵌入一样 但是实体嵌入的时候 ...

  5. pandas以前笔记

    # -*- coding: utf-8 -*- """ Created on Sat Jul 21 20:06:20 2018@author: heimi "& ...

  6. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  7. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  8. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  9. 王道考研 计算机网络笔记 第六章:应用层

    本文基于2019 王道考研 计算机网络: 2019 王道考研 计算机网络 个人笔记总结 第一章:王道考研 计算机网络笔记 第一章:概述&计算机网络体系结构 第二章:王道考研 计算机网络笔记 第 ...

  10. 王道考研 计算机网络笔记 第五章:传输层

    本文基于2019 王道考研 计算机网络: 2019 王道考研 计算机网络 个人笔记总结 第一章:王道考研 计算机网络笔记 第一章:概述&计算机网络体系结构 第二章:王道考研 计算机网络笔记 第 ...

最新文章

  1. 如何征服Webpack 4并构建一个出色的React应用
  2. java appendchild_详解javascript appendChild()的完整功能
  3. PTA 基础编程题目集 7-7 12-24小时制 C语言
  4. 关于string转int、float、double常用方法
  5. decltype 和 auto
  6. ABAP正则表达式 vs SPLIT INTO
  7. python c 选择_C和Python,小白应该选择学习哪门语言?
  8. VMware12部署windows xp虚拟机
  9. 阻止跳转的四种方式,你知道吗?
  10. 2015.12.24 OC中的装箱
  11. world办公软件小技巧
  12. CMD命令行下编译.Net Visual Studio 项目
  13. 按下键时蜂鸣器发出声音c语言,学习日记——蜂鸣器开关实例
  14. 2019年360笔试
  15. 解决Word无响应崩溃的问题
  16. PS调色技巧及HSB调色原理
  17. 关于c++产生string subscript out of range问题的自己的经历与解决方案
  18. IDEA 有个很牛逼的功能
  19. Python GUI制作实例 wxPython使用多线程 防假死含wxFormBuilder的文件及源码
  20. 高仿优酷Android客户端图片左右滑动(自动切换)

热门文章

  1. iOS开发经验总结(一)
  2. 苹果Mac强大的网络流量分析工具:Debookee
  3. 教你如何创建第一个Java应用程序
  4. 11.1 LAMP架构介绍 11.2 MySQL、MariaDB介绍 11.3/11.4/11.5 MySQL安装
  5. python生成器表达式yield,面向过程编程,部分内置函数
  6. JS写的简单的图片播放器
  7. Mac唤醒后无声的一种解决方法
  8. Resteasy配置及其使用
  9. 分表分页/跨库分页为什么这么难?
  10. 瞬间几千次的重复提交,我用 SpringBoot+Redis 扛住了~