您现在的位置:首页
--> 风雪之隅
对于Apache来说, 如果URL和PATH_INFO中出现%2f(/)或者%5c(\\), 会被认为这是个不合法的请求, Apache将会直接返回404结束. 对于使用mod_rewrite做URL改写的情况来说, 可能会比较容易遇到这个问题. 解决的办法有两种. 1. 进行俩次encode, /变为%252f 2. 在apache的配置中增加: AllowEncodedSlashes On 具体可以参看:http://httpd.apache.org/docs/2.2/mod/core.html#allowencodedslashes
PHP的命名空间, 实现的还真是简单.
最近有个同事, 被一个100%重现的core搞的很郁闷, 和我说过几次, 今天我终于被他说的有兴趣了, 就帮忙看了看, 代码很简单, 如下:
在翻看Vim插件的时候, 发现了一个比较有意思的应用(非插件): 把PHP的手册融如Vim中, 在Vim中, 按”K”, 就可以跳转到光标下函数的手册说明…
PHP的异常机制的原理是什么? 在PHP每一个可独立执行的op array最后的ZEND_HANDLE_EXCEPTION是用来干什么呢?
在处理字符变量的算数运算时,PHP 沿袭了 Perl 的习惯,而非 C 的。例如,在 Perl 中 ‘Z’+1 将得到 ‘AA’,而在 C 中,’Z'+1 将得到 ‘[‘(ord(‘Z’) == 90,ord(‘[‘) == 91)。注意字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z)。
PHP运算符优先级的一个例外
今天有人问我, 说他看到有PHPer在说unless语句, 我很是纳闷, 后来才知道, 原来是一个国外的PHP大牛自己Hack了PHP的源码, 加入了一个unless语句. 很有意思, 今天, 我也带领大家, 一起来为我们自己的PHP加入unless语句..
PHP中, 传递Callback的方式, 一直很丑陋. 在PHP5.3以前, 我们只有俩种选择: 1. 字符串的函数名 2. 使用create_function的返回值 在PHP5.3以后, 我们多了一个选择, 也就是Closure, $func = function () { ... }; array_walk($arr, $func);
今天同事反馈一个问题, PHP5.2.x在使用反射做函数包装的时候, 得到\"Invocation failed\"的异常, 而使用call_user_func代替则不会, 原逻辑太复杂, 经过精简以后可重现异常的代码如下.
最后: 正则虽易, 用好却难.. 尤其在做大数据量的文本处理的时候, 如果正则设计不慎, 很容易导致深度嵌套, 另外考虑到性能, 还是建议能用字符串处理尽量使用字符串处理代替.
在读别人代码的时候, 在没有详细文档的时候, 如何快速的看清整个代码的结构(类结构), 就成为了一个现实的问题. 今天我就介绍一种, 自动生成UML图的方法.
PHP为了避免数字索引和数字字符串索引(注1)的混乱, 引入了zend_symtable_*系列函数, 并应用于数组中. 这样一来, 数字字符串索引也就会被当作数字索引, 然而总是有一些情况, 是PHP的维护者没有想到的... 比如, 类型转换时刻.
今天cici网友发来一个问题, 说是在函数调用参数前面使用错误抑制符号(@)的时候, 貌似引用传参就失效了. 他想让我帮他解答为什么. 看下面的例子: ..... 这个问题, 我之前没有遇到过, 所以首先去找找相关资料, 看看有没有现成的答案, Goolge了一番, 发现虽然有人已经向PHP报了类似的Bug:http://bugs.php.net/bug.php?id=47623, 但PHP官方还没有解决, 也没有给出答复. 没办法, 只能自己分析了...
之前我对Javascript的原型链中, 原型继承与标识符查找有些迷惑。
在大型的Web项目中, include_path是一个模块化涉及的根本中的根本, 但是正是因为include_path, 经常会让我们遇到一些因为没有找到正确的文件而导致的看似\"诡异\"的问题. 也就有了如下的疑问: 1. include_path是怎么起作用的? 2. 如果有多个include_path顺序是怎么样的? 3. 什么情况下include_path不起作用?
ob_flush/flush在手册中的描述, 都是刷新输出缓冲区, 并且还需要配套使用, 所以会导致很多人迷惑... 其实, 他们俩的操作对象不同, 有些情况下, flush根本不做什么事情..
如果你ini_set(\"memory_limit\", *)返回了false, 不妨检查下, 是否开启了安全模式(手册中没有述及)..
最近公司组织了个PHP安全编程的培训, 其中涉及到一部分关于Mysql的\"SET NAMES\"和mysql_set_charset (mysqli_set_charset)的内容: 说到, 尽量使用mysqli_set_charset而不是\"SET NAMES\", 当然, 这个内容在PHP手册中也有叙及, 但是却没有解释为什么. 最近有好几个朋友问我这个问题, 到底为什么? 问的人多了, 我也就觉得可以写篇blog, 专门介绍下这部分的内容了.
今天在升级我自己的语法高亮显示插件的时候, 发现在IE下, 都缺少了最后一行的显示, 如果pre中只有一行语句的时候, 就什么都不显示.. 最后发现, 原来在IE下,pre的innerHTML取不到原本应该有的结尾的回车换行符号.
近3天十大热文
- [68] 如何拿下简短的域名
- [68] Go Reflect 性能
- [64] Oracle MTS模式下 进程地址与会话信
- [61] 图书馆的世界纪录
- [60] 【社会化设计】自我(self)部分――欢迎区
- [60] IOS安全–浅谈关于IOS加固的几种方法
- [58] android 开发入门
- [53] 视觉调整-设计师 vs. 逻辑
- [48] 读书笔记-壹百度:百度十年千倍的29条法则
- [47] 界面设计速成
赞助商广告