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

[Others] ci参数.被自动替换为_的问题

[复制链接]
发表于 2010-3-26 15:25:46 | 显示全部楼层 |阅读模式
本帖最后由 wintion 于 2010-3-26 17:20 编辑

问题缘由:
需要在通过url传email地址,可是email地址的某些字符被替换掉。

请求的uri如下(实际情况下已经做了urlencode转义):
user/register/abc@gmail.com

在ci根目录下的index.php首行加入调试,输出如下(请注意:点号被替换为下划线了):
PHP复制代码
 
<?php
echo $_SERVER['REQUEST_URI'];//输出/user/register/abc@gmail.com
print_r($_GET);//输出Array ( [/user/register/abc@gmail_com] => )
?>
 
复制代码


可是,index.php应该是ci接受请求的入口处,我把该输出操作位于ci的处理最开始的地方,可是字符串还是被替换了,百思不得其解,还望高人指点
发表于 2010-3-26 15:50:46 | 显示全部楼层
本帖最后由 ywqbestever 于 2010-3-26 16:09 编辑

去掉CI过滤.呗
不建议你这样传参额
发表于 2010-3-26 16:16:03 | 显示全部楼层
urlencode()
 楼主| 发表于 2010-3-26 17:04:38 | 显示全部楼层
本帖最后由 wintion 于 2010-3-26 17:06 编辑

也有可能是我个人理解错了,不过视乎没有这么简单,ci里面router、uri基类包含有replace字样的函数都过了一遍。

urlencode肯定是加了的,这是phper的常识

至于这个是不是个问题,你可以想象这个参数是个float类型数据,这个时候小数点也是被替换为下划线的,大家觉得还有必要解决吗?

我现在想到的办法是,暂时把.替换为^然后再urlencode再传,然后再反转
发表于 2010-3-31 15:47:07 | 显示全部楼层
本帖最后由 zycbob 于 2010-3-31 17:24 编辑

您是啥意思?
改下config$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-@'; //最后加上@
我这里可以

本版积分规则