这段php代码的意思?
publicfunctiontype(){switch($this->type){caseself::COMPUTER:return"计算机课";break;casese...
public function type(){
switch ($this->type){
case self::COMPUTER:
return "计算机课";
break;
case self::MUSIC:
return "音乐课";
break;
}
} 展开
switch ($this->type){
case self::COMPUTER:
return "计算机课";
break;
case self::MUSIC:
return "音乐课";
break;
}
} 展开
2个回答
展开全部
整个代码是用来过滤恶意注入的。
if(isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS'])) exit('Request Denied');
这一行是发现有恶意的全局变量提交上来就拦截。
@set_magic_quotes_runtime(0);
$MQG = get_magic_quotes_gpc();
这里是读取系统环境变量
foreach(array('_POST', '_GET', '_COOKIE') as $__R) {
这个是新建一个数组,三个值就在上面了。
if(isset($$__R)) {
foreach($$__R as $__k => $__v) {
if(isset($$__k) && $$__k == $__v) unset($$__k);
}
估计难的就是这里吧。。$__R 在第一次循环时,值是 _POST 前面再加一个 $ 即 $_POST
如果 $_POST 已经赋值,这个有点多余,因为这是内置变量,一定存在的。
之后把 $$__R 分别看成 $_POST $_GET 啥的即可,拆分 $_POST 每个值到 $__V 里,索引存到 $__K 里。如果有 $_POST['a'] = 'b'; 那 $__K 就是 a ,$__V 就是 b。下面是同样的意思。
如果 $($__K) 即 $a 已经存在,并且这个变量的值和现在 POST 过来的值相同,就把原来的变量注销掉。只保留 POST 过来的那个变量。
也就是说,如果代码原来有 $a='b' 现在又提交了一个 $_POST['a']='b'; 现在就删掉原来的 $a 保留 POST 的那个。这是用于别人已经成功注入的情况下,可以把他们已经注入的变量干掉。
if(!$MQG)$$__R = daddslashes($$__R);
上面这个是检查环境变量,魔法引号是否开启,如果没有开启的话,过滤整个 $_POST(GET COOKIE)
$$__R = strip_sql($$__R);
$$__R = dsafe($$__R);
上面这两个是自定义过滤,看样子是过滤 SQL 注入啥的。原理同上。
}
}
if(isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS'])) exit('Request Denied');
这一行是发现有恶意的全局变量提交上来就拦截。
@set_magic_quotes_runtime(0);
$MQG = get_magic_quotes_gpc();
这里是读取系统环境变量
foreach(array('_POST', '_GET', '_COOKIE') as $__R) {
这个是新建一个数组,三个值就在上面了。
if(isset($$__R)) {
foreach($$__R as $__k => $__v) {
if(isset($$__k) && $$__k == $__v) unset($$__k);
}
估计难的就是这里吧。。$__R 在第一次循环时,值是 _POST 前面再加一个 $ 即 $_POST
如果 $_POST 已经赋值,这个有点多余,因为这是内置变量,一定存在的。
之后把 $$__R 分别看成 $_POST $_GET 啥的即可,拆分 $_POST 每个值到 $__V 里,索引存到 $__K 里。如果有 $_POST['a'] = 'b'; 那 $__K 就是 a ,$__V 就是 b。下面是同样的意思。
如果 $($__K) 即 $a 已经存在,并且这个变量的值和现在 POST 过来的值相同,就把原来的变量注销掉。只保留 POST 过来的那个变量。
也就是说,如果代码原来有 $a='b' 现在又提交了一个 $_POST['a']='b'; 现在就删掉原来的 $a 保留 POST 的那个。这是用于别人已经成功注入的情况下,可以把他们已经注入的变量干掉。
if(!$MQG)$$__R = daddslashes($$__R);
上面这个是检查环境变量,魔法引号是否开启,如果没有开启的话,过滤整个 $_POST(GET COOKIE)
$$__R = strip_sql($$__R);
$$__R = dsafe($$__R);
上面这两个是自定义过滤,看样子是过滤 SQL 注入啥的。原理同上。
}
}
2014-11-12 · 知道合伙人软件行家
关注
展开全部
大概说明一下:
1、这段代码应该是某个类里的函数代码。
2、代码根据类属性 type 的值输出不同的结果:
如果值是 COMPUTER,返回 计算机课;
如果值是 MUSIC,返回 音乐课。
COMPUTER 和 MUSIC 应该是类定义的常量。
3、关于 :: 操作符:
在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(定义常量)或者static(声明静态),那么就必须使用操作符:: 。
反之如果被引用的变量或者方法没有被声明成const或者static,那么就必须使用操作符->。
另外,如果从类的内部访问const或者static变量或者方法,那么就必须使用自引用的self,
反之如果从类的内部访问不为const或者static变量或者方法,那么就必须使用自引用的$this。
1、这段代码应该是某个类里的函数代码。
2、代码根据类属性 type 的值输出不同的结果:
如果值是 COMPUTER,返回 计算机课;
如果值是 MUSIC,返回 音乐课。
COMPUTER 和 MUSIC 应该是类定义的常量。
3、关于 :: 操作符:
在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(定义常量)或者static(声明静态),那么就必须使用操作符:: 。
反之如果被引用的变量或者方法没有被声明成const或者static,那么就必须使用操作符->。
另外,如果从类的内部访问const或者static变量或者方法,那么就必须使用自引用的self,
反之如果从类的内部访问不为const或者static变量或者方法,那么就必须使用自引用的$this。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询