获取HTTP变量

您正在阅读旧版文档,新版文档已迁移至 [https://document.pescms.com]

目录

在安全方面,PESCMS连接数据库使用了PDO的预处理,彻底杜绝了SQL注入的问题。在获取外部变量的时候,可以直接使用$_GET或$_POST。但这样一来网站将存在XSS攻击的险情。为此,PESCMS提供了获取HTTP变量的方法。

获取$_GET或$_POST变量

PESCMS对于$_GET和$_POST,提供了 g() 和 p() 方法。下面对拿g()的参数进行说明

参数说明备注
$name
HTTP变量名称必填
$htmlentities 
是否转义HTML标签 | 默认是Ture,即转义
非必填

两者用法一样,仅名称存在差异。用法非常简单,下面的为在控制器中使用的用法演示

$uid = $this->g('id'); //获取$_GET['id']的值并作了xss过滤。

$content = $this->p('content'); //获取$_POST['content']的值并作了XSS过滤。

$script = $this->p('footerCountScrtip', FALSE); //获取$_POST['footerCountScrtip']的值,但不过滤HTML标签

检查HTTP变量是否存在

我们经常需要检测用户输入的变量是否存在,为此PESCMS提供了封装好的方法: isG() 和 isP()。依旧以isG()说明:

参数说明备注
$name
HTTP变量名称必填
$message
当检查不存在时,返回的提示信息必填
$htmlentities 
是否转义HTML标签 | 默认是Ture,即转义非必填

用法非常简单,依旧是控制器下使用:

$uid = $this->isG('id', '请选择您要查看的用户'); //判断用户是否有提交$_GET['id']值,没有则弹出提示框。反之作xss过滤后赋值

$script = $this->isP('footerCountScrtip', '请提交统计代码', FALSE)//判断用户是否有提交$_GET['id']值,没有则弹出提示框。反之不作xss过滤赋值

是不是非常简单?我相信大家现在能够安全地处理好用户提交数据了!

明确的请求类型

在我的开发过程中,我发现有一些朋友对于处理HTTP变量选择偷懒性的方式:$_REQUEST 接收内容。在PESCMS中,并没有提供$_REQUEST函数的过滤,因此官方不推荐使用该变量进行获取HTTP变量。更重要一点的是,我们开发的功能肯定是明确表达请求类型的。若连自己的请求内容都不清楚,谈何开发呢?最后,若执意使用$_REQUEST获取HTTP变量,请自行编写相关过滤方法。

PESCMS DOC 文档系统
© Copyright 2015-2024. by the PESCMS DOC
耗时0.023秒