坑1:
$a = 'test'; echo $a['bdd'];
得到结果
t
一个字符串,把它当成数组并取它一个不存在的键值,得到的是第一个字符。今天写一个方法的时候,返回结果可能是字符串也可能是数组,调用这个方法的时候用数组中的某个值来判断,无疑是错的!
坑2:
在post的时候有大量的数据,发现post不过去,原来php在5.3.9以后的版本中加入了最大post数量的限制,默认是1000条,可以在php.ini中找到该项
max_input_vars来做修改。
为什么在5.3.9中加入这个参数?这个就要提到hash冲突的一个漏洞了,这个漏洞在没patch的低版本php中存在,包括java等各种语言中存在。hash表是一种良好的数据结构,当数据被精心构造过之后,会使hash表降级成一个链表结构,在查询数据的时候每次都会发生hash冲突,一次命中率极低,大大降低了效率,这就使得单机DDOS攻击成为可能。因此加入这个post数量限制限制了服务器接收的post数据,即使post过来默认的1000个数据都能精确的造成hash冲突,那么也是在服务器能够承受的范围内了。
可以参考: