网站首页 > 知识剖析 正文
介绍
介绍
上一课大家已经跟着福哥了解了用户请求的基本知识了,今天我们就来把这个用户请求对象的功能实现了。因为用户请求包含很多输入数据,我们需要对每一个数据进行实体化,也就是说为它们建立独立的实体对象。在PHP语言里面这些输入数据都是以全局数组形式存在的,所以我们在建立这些实体对象的时候又可以使用相同的基类。基于这些分析结果,福哥会建立这些数据对象给请求对象TFRequest调用。
代码
TFVars
filter
private function filter($value, bool $deFilter=false){
if(!$deFilter){
return htmlspecialchars($value);
}
else{
return htmlspecialchars_decode($value);
}
}
get
public function get(string $key, bool $deFilter=false):string {
if(isset($this->items[$key])){
if(!$deFilter){
return $this->items[$key];
}
else{
return $this->filter($this->items[$key]);
}
}
return null;
}
set
public function set(string $key, string $value){
if($this->readOnly){
return false;
}
$this->items[$key] = $this->filter($value);
return true;
}
TFGet
继承TFVars
TFPost
继承TFVars
TFServer
继承TFVars
TFCookie
继承TFVars
TFFiles
继承TFVars
TFRequest
属性
public TFGet $get;
public TFPost $post;
public TFServer $server;
public TFCookie $cookie;
public TFSession $session;
public TFFiles $files;
讲解
TFVars
filter
这个方法会对输入变量进行htmlspecialchars处理,也就是说将特殊字符转换成html实体,举例:在网页上显示“<”字符,就在网页里面写上“<”,而“>”字符对应的是“>”,后面这些以“&”开通并且以“;”结尾的符号就是html实体了。
这个方法除了可以将普通字符转换为html实体,也可以将html实体转换回普通字符。
get
这个方法可以将指定键对于的值返回回来。
set
这个方法可以对指定键的值进行覆盖,也就是说可以修改指定键的值。
TFGet
这个对象继承自TFVars,默认数据来自全局数组“$_GET”。
TFPost
这个对象继承自TFVars,默认数据来自全局数组“$_POST”。
TFServer
这个对象继承自TFVars,默认数据来自全局数组“$_SERVER”。
TFFiles
这个对象继承自TFVars,默认数据来自全局数组“$_FILES”。
TFRequest
属性
可以看到我们将前面建立的输入数据对象在TFRequest对象里面都设置了一个对于的属性对于它们的对象实例,也就是说通过这些属性就可以访问任何输入数据了。
之所以不提倡在代码里面直接使用“$_GET”和“$_POST”之类的全局数组,是因为这些输入数据库有可能会被有意无意地携带一些“威胁”,如果我们不将这些数据进行过滤处理就有可能被黑客利用通过这些输入数据对我们的系统进行攻击。
总结
今天福哥带着大家进一步实现了请求对象TFRequest的功能,为请求对象增加了六个输入数据的实体对象,通过这些实体对象,TFPHP的TFRequest就可以方便且安全地调用来自用户请求的输入数据了。
下一课我们会开始讲解关于响应对象TFResponse的功能,这个响应对象实现之后我们就可以开始着手开发基于TFPHP框架的项目了。
P.S.
福哥说明一下,童鞋们可能发现了,福哥并没有提供TFPHP各个模块里面的对象的全部代码,而是提供了主要函数的代码,为什么不直接粘贴全部对象定义的代码呢?
这个是因为福哥出于一些安全考虑,避免麻烦不得已而为之。
TFPHP是童鞋们和福哥一块儿设计、一块儿敲代码敲出来的web框架,所以福哥今后发布TFPHP框架的时候一定是免费的。
但是这个TFPHP的所有权必须是我们的,只有我们对TFPHP有着所有权,我们才能保证它是免费的。
https://m.tongfu.net/home/35/blog/512869.html
- 上一篇: 代码审计-minicms 代码审计面试题
- 下一篇: PHP 基础知识(一) php相关知识
猜你喜欢
- 2024-11-11 详解如何防止SQL注入:应对方案与优缺点分析
- 2024-11-11 XSS注入我也不怕不怕啦--PHP从框架层面屏蔽XSS的思考和实践
- 2024-11-11 挖0day漏洞原来如此简单,我的黑客朋友手把手教你
- 2024-11-11 php用soap调用接口实例,返回值没有见到xml
- 2024-11-11 备战金九银十,2020最新大厂PHP面试题(附答案)
- 2024-11-11 dede后台发布文章的时候显示标题不能为空?
- 2024-11-11 PHP漏洞之-Session劫持 php session机制
- 2024-11-11 php特殊字符处理 php 特殊字符自动转义
- 2024-11-11 Java面试260题(2020年版,3-5年面试题重点突破)(二)
- 2024-11-11 2020最新大厂PHP面试题(附答案) php面试官应该问些什么
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)