YII 框架学习-第二波
来源:互联网 发布:淘宝代码怎么写 编辑:程序博客网 时间:2024/05/16 06:00
入口文件
YII框架入口文件有两个,一个是 web application的入口文件,一个是console application的入口文件。
Web application的入口文件是 index.php,用户通过url访问后台的时候的入口文件。
Console application的入口文件是 yii(是php文件), 这个文件是通过yii.bat启动的时候调用的。
如果YII框架安装成功之后的话,那么我们访问YII框架的URL为(以我的环境为准):
http://localhost/DemoPage/Yii/basic/web/index.php
这个index.php 文件就是入口文件。在这个index.php 中加载了环境所有需要的文件,并且启动整个框架。
接下来我们要做一个简单的Hello World程序,
- 创建一个Action
- Action简单定义
- Action定义于Controller之中。
- Action对应着一个方法
- Action是直接处理用户请求的逻辑的地方
- 为了简单,可以直接在框架里面已经存在的SiteController里面定义。
该方法接受一个参数message,如果message为空,默认为"Hello World"。 最后,会返回给用户一个say视图,并且会把参数也传递过去。(注意方法命名,YII通过action前缀区分action方法和普通方法。这个是一种约定。然后action后缀后面的部分,作为我们的具体的action名字)
- 创建一个View
- 每个Controller对应着一个view目录。比如我们使用的这个框架自带的SiteController,在views目录中有个site目录。里面存放着对应的view。
- 我们需要在views/site/目录中创建一个say.php. view文件的命名需要和action中的render方法传递的say参数对应。里面的内容如下:
该view将会展示传递过来的message信息。注意这里使用encode方法,是因为这个参数是从用户那边传递过来的。如果直接展示容易受到跨站攻击。比如用户在传递过来的参数中植入恶意的JavaScript代码。通过这个encode方法编码之后,可以有效地防止这个问题。
- 访问Action和View
- 在index.php 后面加上路由和参数信息,见下面:
- http://localhost/DemoPage/Yii/basic/web/index.php?r=site/say&message=hello world
- 页面结果如下:
有个很有趣的现象,View自动继承了yii框架的页面结构。请看页头~
这个是通过什么方式得到的呢?
下面是官网的解释:
Thenew page shares the same header and footer as other pages because the render() methodwill automatically embed the result of the say viewin a so-called layoutwhich inthis case is located at views/layouts/main.php.
其实在render方法中,会自动把我们返回的结果嵌入到下面的文中:views/layouts/main.php,然后作为一个整体,返回给用户。
我们也可以为自己的项目创建自己的的main.php,替换掉默认的就可以了。
- 关于跨站攻击
- 如果我们在URL中传递参数,message=<script type="text/javascript">alert(1);</script>,请看结果:
是直接把值给展示出来了。那如果不是用encode方法的话,结果呢?
备注:Google浏览器貌似可以自动屏蔽跨站攻击,所以我使用了IE浏览器测试。
可以看出encode方法的重要性了吧。
- YII 框架学习-第二波
- Yii框架学习第二天-执行流程
- YII框架学习-第一波
- YII框架学习 第二天(2) gii 和 模块
- Yii框架学习 引入Yii框架
- yii框架学习
- Yii框架学习笔记
- Yii框架学习
- Yii框架学习
- YII 框架学习随记
- #yii框架学习之路#yii CUrlManager
- YII框架学习 第二天(1) 控制器分析 和 布局模板
- yii框架学习笔记1
- yii php框架研究学习
- yii框架学习(一)
- #yii#框架学习之路
- yii框架学习笔记一
- 【PHP】YII 框架学习笔记
- MVVM模式的使用
- sts 快捷键 /Eclipse 快捷键(sts基本也一样)
- C++内存占用问题
- 易飞ERP--自定义报表之采购价格分析功能表
- 安卓打包
- YII 框架学习-第二波
- Trafodion 查询SQL来自哪个客户端
- django报错解决,no attribute 'lru_cache'
- C++实现顺序栈
- 手机不能访问局域网服务器的解决办法
- 数据通信与网络
- Linux的一些重要命令
- SpringMVC中ajax传值的几种接收方式
- JS判断输入框值是否为空