获取$_GET变量的一个bug

浏览:355 发布日期:2012/04/27
- 普通 - 未处理
在tp3.0中,当我的参数和值之间用的是"_",并且有多个参数时,就会获取不到值。仔细下了一下Dispatcher.class.php 文件,发现在重新组合url时,一个地方的正则有问题:
原句如下:$res= preg_replace('@(\w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']=strip_tags(\'\\2\');', implode($depr,$paths));
上面的\w里面包含了“_” 所以不能正常获取到.
我就这样改了:$res= preg_replace('@([a-zA-Z0-9]+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']=strip_tags(\'\\2\');', implode($depr,$paths));
只充许字每和数字。这时就搞定了。能正常获取到了.

但还有另一个情况下还会出问题:
当我的自定义参数有a_xx 时(就是a=xx),那么系统会把这个"a"看成是action,系统默认的刚好就是"a" 所以就没有xx操作.这时就报错了。
这个问题的解决方法还没看,下班了,明天再看看.
评论(
后面还有条评论,点击查看>>