yaobas 发表于 2011-3-18 17:12:52

CI版本1.7.3发现一个网址传参BUG

我通过网址传两个参数,第一个参数用ci的encode加密,第二个参数明码。例如下面网址
http://xx.com/project/edit/ADA=/18
结果,我在控制器里无法正常取到第二个参数。
难道是CI的bug?
请高手指点。

Hex 发表于 2011-3-18 19:28:15

请贴相关代码。

liaomars 发表于 2011-3-18 22:42:01

想看下代码

yaobas 发表于 2011-3-19 10:29:42

view层:
<td align="center"><a href="/project/edit/<?=$this->encrypt->encode($row->projid)?>/18">编辑</a></td>

controll层:

function edit($projid, $typeid)
{

$tid = $typeid;
//此处$tid的值应该为18,但实际却不是。
//我经过测试发现若加密后的projid是以“=”结尾的,例如“ADA=”,就会出现无法正确取值的情况。

}

tiana 发表于 2011-3-19 10:46:31

加密后有时会混合一些符号,你可以用urlencode转换一下编码

yaobas 发表于 2011-3-19 11:34:12

回复 5# tiana


    对$this->encrypt->encode($row->projid)再进行urlencode是个解决方案,但encode两次,decode两次。
   不知有无更简单的解决方法?

tiana 发表于 2011-3-19 11:55:26

封装成一个函数或方法,一处修改,重复利用。

Hex 发表于 2011-3-19 12:47:09

$this->encrypt->encode()
这不是 urlencode,所以这里会出现“/”,所以你那里就出错了。
建议这样的使用 GET 传参,参考 google 的 URL。
页: [1]
查看完整版本: CI版本1.7.3发现一个网址传参BUG