用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3617|回复: 9
收起左侧

[修补 Patch] CI 修改版,基于2.1.3 定名为ICI,欢迎下载

[复制链接]
发表于 2013-3-18 14:24:58 | 显示全部楼层 |阅读模式
本帖最后由 crazhou 于 2013-3-18 14:27 编辑

以下是修改版的一些特性,持续更新中。。。谢谢大家

-- 增加了和Apache 下的 nginx 下的Rewrite 规则

-- 增加 input 类下的 is_post 和 is_get 方法

-- 增加 output 类下的 toJSON 和 ajaxError 方法

-- 建立了 static 及其子目录 js, css, images, captcha

-- system/core/Input.php 下的 Disallowed Key Characters 的问题

-- 增加了ranstr, static 注意ranstr 中包含ranstr 生产随机字符,和 create_valicode 生成验证码两个函数,并依赖 captcha 扩展


zip 包在此----下载吧 ICI2.1.3-v1.0.zip (441.17 KB, 下载次数: 64)

评分

参与人数 1威望 +5 收起 理由
Hex + 5 赞一个!

查看全部评分

发表于 2013-3-18 14:27:12 | 显示全部楼层
{:soso_e113:}沙发,坐等下载地址
发表于 2013-3-18 20:12:31 | 显示全部楼层
不错,支持
 楼主| 发表于 2013-3-19 10:53:00 | 显示全部楼层
startbbs 发表于 2013-3-18 20:12
不错,支持

谢谢转载,请保持正确性啊,
http://www.startbbs.com/forum/view/375
发表于 2013-3-19 11:22:22 | 显示全部楼层
标记一下。
发表于 2013-3-21 22:23:19 | 显示全部楼层
mark一下
发表于 2013-3-22 04:19:43 | 显示全部楼层
大半夜来发帖,就是这个问题。不知道此版本解决没有,完全是把“&”当键名
PHP复制代码
 
 
$post_data = array(
        "key"     => $this->submit_remote_key,
        "ipa_list" => json_encode($id_data)
);    // 这里数组如果是只有一个值,则没有问题
 
$context = array(
                                'http'  => array(
                                                'method'        => 'POST',    // GET方式,也不会有问题
                                                'header'        => 'Content-type:application/x-www-form-urlencoded',
                                                'content'       => http_build_query($post_data)
                                        )
                        );
 
复制代码

运行出现了 Disallowed Key Characters.
我在input的_clean_input_keys下对$str输出后得到 "amp;ipa_list",也就是 &ipa_list 无法通过

而在POST方式下,post的数组$post_data是要被转换成如下格式的,
"keys=skljfdl8908sdfs0sfd0&ipa_list=%5B%7B%22item_id%22%3A..
它把“&”链接符号当键名处理,于是视为非法字符了。如果这不算是一个bug的话,那我只能GET或者只提交一个表单元素了

这个问题,我一般是不想去改动或重写方法的。如果处处我都要重写,我为何要用CI呢?
加上Hex老大对此问题有非凡的见解,我只好深更半夜来发发贴了~~

也不知道楼主解决这个没有
发表于 2013-3-22 10:04:41 | 显示全部楼层
Beyoung 发表于 2013-3-22 04:19
大半夜来发帖,就是这个问题。不知道此版本解决没有,完全是把“&”当键名

运行出现了 Disallowed Key Cha ...

这是什么问题?不能POST提交内容?
另外,http_build_query($post_data) 这个函数默认是用 & 拼接字符串,如果你想用 & 拼接要这样写(PHP 5.1.2以后):
http_build_query($post_data, '', '&')
发表于 2013-3-23 01:30:41 | 显示全部楼层
Hex 发表于 2013-3-22 10:04
这是什么问题?不能POST提交内容?
另外,http_build_query($post_data) 这个函数默认是用 & 拼接字符串, ...

我一直使用的手册中 http_build_query 只有2个参数, 官方最新的此函数都4个参数了!~~!,我太OUT了,换手册

因为我在网上看到人家也没有这样处理过就post了, 第一次知道有这样一个符号区别。

核实后果真如Hex老师所说,

原生PHP是不会提示的,并且会把这个&加到表单名中,CI对此给出了提示而已

是我浅薄了

感谢Hex老师
发表于 2013-3-25 10:55:11 | 显示全部楼层
Beyoung 发表于 2013-3-23 01:30
我一直使用的手册中 http_build_query 只有2个参数, 官方最新的此函数都4个参数了!~~!,我太OUT了,换手 ...

呵呵,太客气了。
这个问题,我猜想可能有一定的历史和环境因素,在当初php5发布的时候,XHTML正如日中天,那时候PHP估计是为了兼容XHTML而使用&的,但为了灵活也保留了可定制性。
一般来说在XHTML里要使用&,而真正的URL规范里是必须用&组合的。

本版积分规则