本文目录一览:
帮我解释一下这段PHP的代码,新人不太明白
分成二部分看:
function make_safe($variable) {
$variable = addslashes(trim($variable));
return $variable;
}
这是一个函数,作用是将 $variable
中的单引号之类的特殊符号加上 \
进行转义,是简单的安全过滤。
$y0 = make_safe($_REQUEST["y0"]);
$x = make_safe($_REQUEST["x"]);
$y = make_safe($_REQUEST["y"]);
if ($y0 != "") {
switch($y0) {
case "+":
$daan = $y + $x;
break;
case "-":
$daan = $y - $x;
break;
case "*":
$daan = $y * $x;
break;
case "/":
$daan = $y / $x;
break;
default:
}
echo $y . $y0 . $x . "=" . $daan;
}
这是一个简单的计算器,$y0
应该是运算符,前台应该有三个输入框,name
分别是 y0
, x
, y
,提交后传到这个 PHP 文件中,最后输出类似 1+1=2
,2-1=1
的样式。
帮我解释下这段PHP代码的意思
$lev = 0;
循环中第一次运行的代码,以后不再运行。
如果 $lev < $level * 2 - 1
执行代码部分,$level_nbsp .= ""
,.
的意思相当于 JavaScript 中的 +
或者 VB 中的 &
。这条语句的意思是把空格追加到变量 $level_nbsp
后面。
执行完毕以后再执行 $lev++
,++
的意思是 $lev
自身加 1,然后再回到 $lev < $level * 2 - 1
,直到条件不成立为止。
麻烦帮解释下这段PHP代码 是什么意思 谢谢!
就是写出你朋友的数量和各个名字,你运行一次就知道了。
你的朋友是:"Robert Barwell"
, "Mike Parry"
, "Jeremy Beacock"
数量是 friendNames.Length
这段php代码的意思?
整个代码是用来过滤恶意注入的。
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);
$$__R = strip_sql($$__R);
$$__R = dsafe($$__R);
}
上面这个是检查环境变量,魔法引号是否开启,如果没有开启的话,过滤整个 $_POST
、$_GET
、$_COOKIE
。
上面这两个是自定义过滤,看样子是过滤 SQL 注入啥的。原理同上。
帅哥麻烦能否帮我解释一下这段PHP代码谢谢!
<?php
if ($item['q_content']) {
// 检查数组变量 $item['q_content'] 是否存在
$item_q_content = unserialize($item['q_content']); // 用 unserialize() 还原已经序列化的对象
$keysvalue = $new_array = array(); // 声明数组变量
foreach ($item_q_content as $k => $v) {
// 将 $item_q_content 循环, 由此可以断定它是个数组
$keysvalue[$k] = $v['time']; // 将 $item_q_content 中的 'time' 键值复制到新变量 $keysvalue 中去
$h = date("H", $v['time']); // 取得小时
$i = date("i", $v['time']); // 取得分钟
$s = date("s", $v['time']); // 取得秒
list($timesss, $msss) = explode(".", $v['time']); // 用 '.' 分割字符串 $v['time']
$item_q_content[$k]['timeadd'] = $h . $i . $s . $msss; // 重新赋值 $item_q_content,并建立一个多维数组
}
arsort($keysvalue); // 逆序排序
reset($keysvalue); // 将数组的内部指针倒回到第一个单元
foreach ($keysvalue as $k => $v) {
// 遍历 $keysvalue,得到 $k,也就是键值
$new_array[$k] = $item_q_content[$k]; // 取得变量 $item_q_content 中键值的值,并且重新赋值给新变量 $new_array
}
$item['q_content'] = $new_array; // 赋值
}