本文作者:Twe1ve(贝塔安全实验室-核心成员)

这段时间在看PHP代码审计相关知识,国内有不少CMS都是基于ThinkPHP开发的,因此了解ThinkPHP的开发思路更容易理解这类CMS的代码

一般分为前后台等模块进行开发:

index.php前台入口文件定义引入ThinkPHP_PATH、项目路径、项目名称

define('APP_PATH', "./App/"); //项目路径 define('THINK_PATH', "./Include/");// require THINK_PATH . 'ThinkPHP.php'; //加载ThinkPHP框架

admin.php前台入口文件定义引入ThinkPHP_PATH、后台模块路径、后台名称

define('BIND_MODULE', 'Manage'); // define('THINK_PATH', "./Include/"); require THINK_PATH . 'ThinkPHP.php'; //加载ThinkPHP框架

在APP路径下生成MANAGE目录

MVC 框架

M-modole(模型):编写model类对数据进行操作

对应目录:项目目录/应用目录/Lib/Model

V-view(视图):编写html、页面呈现

对应目录:项目目录/应用目录/Tpl

C-controller(控制器):编写类文件(如UserAction.class.php)

对应目录:项目目录/应用目录/Lib/Action

URL 4种访问模式

模式设置:URL_MODEL=0/1/2/3 (在ThinkPHP/conf/convention.php文件中)

0、普通模式

http://域名/项目名/入口文件?m=模块名&a=方法名&键1=值1&键2=值2

1、Pathinfo(路由模式)********

http://域名/项目名/入口文件/模块名/方法名/键1/值1/键2/值2

2、Rewrite(重写模式)

http://域名/项目名/模块名/方法名/键1/值1/键2/值2

3、兼容模式 ******

http://域名/项目名/入口文件?s=模块名/方法名/键1/值1/键2/值2

URL访问Controller

http://127.0.0.1/xyhcms/index.php

默认使用的模块index(为方便理解,这里我把模块理解成Controller...和其他地方讲解的有出入)

默认使用的方法是index

即相当于访问http://127.0.0.1/xyhcms/index.php/index/index

不同栏目的跳转和页面呈现

通过上面的一些例子,应该可以看到一些端倪:

不同

模块(

前后

台)内部通过Controller控制器实现不同栏目,再通过Controller中的方法实现不同页面的呈现

可通过一个简答的小实验来验证:

修改xyhcms\App\Home\Controller\IndexController.class.php

常用变量

__PUBLIC__: 公共(一般为public)文件目录

__Model__: 获取当前模块名

__ROOT__:替换为当前网站地址(不包含域名)

__APP__:替换为当前应用URL地址(不包含域名)

__MODULE__:当前模块URL地址(不包含域名)

__Controller__:当前控制器URL地址(不包含域名)

__Action__:当前操作URL地址(不包含域名)

__SELF__:当前页面URL

参考链接:

https://blog.csdn.net/weixin_33924312/article/details/89628867

http://document.thinkphp.cn/manual_3_2.html#read_dataThinkPHP3.2完全开发手册

更多的学习资源,

更好的学习氛围,

欢迎加入我们的知识星球!

php制作的ios端 跳转url,ThinkPHP 简易开发思路 MVC和URL跳转相关推荐

  1. iOS端实现登录输入框的三种思路(包含UIBezierPath等)

    今天跟我们的UI 对现在的应用界面,突然发现了一个问题,就是我的输入框为什么和他给出的不一样.. 做完效果: 要求效果: 没办法,改呗. 既然设计到边框,首先要先明确切圆角和绘制边框线的方法. < ...

  2. php二次跳转,discuz二次开发笔记(二)------跳转函数运用,discuz二次开发_PHP教程...

    discuz二次开发笔记(二)------跳转函数运用,discuz二次开发 前几天在增加修改功能时,突然用到一个提示函数,有点不理解,看了他的由来后果断做下笔记,感觉这在以后的开发中肯定还是要用的上 ...

  3. iOS端URL编码和解码过程

    一.URL含义 1.URL定义 URL 是Uniform Resource Locator 的缩写,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址 ...

  4. h5页面在新版微信iOS 端出现底部白色导航条

    新版微信在苹果iOS 端的h5页面如果有路由跳转,会出现底部白色导航条,出现此情况的原因是: 由于底部导航栏是因为出现history记录才出现的.使用replace就没有history记录,解决办法 ...

  5. iOS URL Schemes 使用详解 什么是 URL Schemes

    URL Schemes 使用详解 用原生 iOS 的人分两种,懂 URL Schemes 的和不懂的. 前者是「魔法师」,后者是「麻瓜」. URL Schemes 应用在 iOS 上已经很久了.对于使 ...

  6. 推荐一款 iOS 端黑科技自动化应用脚本

    1. 场景 相信大部分同学早上醒来之后,都是手动打开音乐软件,播放自己喜欢的音乐,然后手动滑动屏幕,查看今天的天气,日复一日,生活显得特别的朴实无华且枯燥 试想一下,如果清晨醒来时,按掉闹铃后能自动化 ...

  7. 一步步搭建视频直播系统,基于LFLiveKit+ijkplayer+rtmp(iOS端)

    原文来自简书,原文地址:http://www.jianshu.com/p/30595a5bff42 本文主要使用的三个技术: 推流:LFLiveKit 播放:ijkplayer 服务器:nginx+r ...

  8. iOS开发 搭建视频直播系统,基于LFLiveKit+ijkplayer+rtmp(iOS端)

    本文主要使用的三个技术: 推流:LFLiveKit 播放:ijkplayer 服务器:nginx+rtmp+ffmpeg 有了这三点技术就可以完成一个简约的直播系统.效果图如下(右边的是用模拟器设备运 ...

  9. iOS端矢量图解决方案汇总

    Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者 | 小猪  来源 | 小猪的博客 https: ...

最新文章

  1. crontab的用法
  2. 黄峥辞职,拼多多何去何从?
  3. php 中的作用是什么,php中static关键字的作用是什么
  4. nginx优化——包括https、keepalive等
  5. log4net简单配置与应用
  6. 【caffe】Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0) CUDNN_STATUS_INTERNAL_ERRO
  7. 数据库-Oracle【Oracle 三种集合数据类型的比较 】
  8. 钢绞线的弹性模量的计算方法_钢绞线弹性模量的理论计算及其影响因素分析
  9. eas表单分录带出自定义核算项目
  10. pyqt5 选择打开文件夹与读取文件夹图片列表
  11. 生鲜电商纷纷传上市,但赛道并不性感
  12. c语言程序设计慕课版答案潘晟旻,附件1团队及组成.doc
  13. 项目进度控制的主要任务是什么?
  14. 用matlab做音乐仿真,Matlab课程设计报告--MATLAB GUI的音乐键盘仿真
  15. css3制作翘边阴影
  16. DPC(Defect Point Correction)------坏点校正
  17. 一个神奇指标公式,能找到立刻单边行情的品种,准确率惊人,堪称交易法宝!
  18. nmap批量扫描(速度快)方法
  19. 【每日新闻】中国人工智能技术爆炸发展,美国开始落后?
  20. NCR Shuffle算法原理

热门文章

  1. EBS功能安全性基本原理
  2. 虚拟主机中,不修改IIS设置,在IIS6下运行MVC架构的网站
  3. 计算机网络「四」 网络层
  4. R7-6 A-B (20 分)
  5. java容器doc_关于Java容器类学习心得体会.doc
  6. 打印任意想要的菱形,例如3行的、9行的、13行的菱形
  7. ie com接口 php_PHP webservie连接.net接口
  8. 【NOIp2002】矩形覆盖
  9. 国外公司技术博客盘点
  10. 闭包造成的内存泄露怎么解决?