PHP特性
各个函数
intval()
intval() 函数用于获取变量的整数值。
成功时返回 var 的 integer 值,失败时返回 0。 空的 array 返回 0,非空的 array 返回 1。
tips: 数组可以用于得到true。可以识别科学计数法。
in_array()
in_array ( mixed $needle , array $haystack , bool $strict = false ) : bool
在大海(haystack)中搜索针( needle),如果找到 needle 则返回 true,否则返回 false。
如未设置strict,则为弱比较。
gettext() / _()
在当前域中查找消息。
tips: 唯一一个有别名的函数。
ereg()
%00截断漏洞。
preg_match()
无法处理数组。
有回溯次数上限,PHP 为了防止正则表达式的拒绝服务攻击(reDOS),给 pcre设定了一个回溯次数上限 pcre.backtrack_limit。
回溯次数上限默认是 100 万。如果回溯次数超过了 100 万,preg_match 将不再返回非 1 和 0,而是 false。
md5()
无法处理数组。
sha1()
无法处理数组。
php特性
哈希值处理
PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。
常见0e开头的哈希值
1 | QNKCDZO |
优先级问题
and 和 && 都表示逻辑与,or 和 || 都表示逻辑或,但是优先级不同,&& > ‘=’ > and,|| > ‘=’ > or。
tips: 注意and 和 = 的位置。
php原生类
ReflectionClass
可以显示出一个类的相关信息。
FilesystemIterator
可以获取指定目录下的所有文件。
字符串解析
php在解析查询字符串时,会删除空白符,或将某些字符转换为下划线(包括空格)
逻辑与或运算判断
对于“与”(&&) 运算: x && y 当x为false时,直接跳过,不执行y; 对于“或”(||) 运算 : x||y 当x为true时,直接跳过,不执行y。