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

[已解决] URL 传参数的问题

[复制链接]
发表于 2010-4-8 22:07:26 | 显示全部楼层 |阅读模式
本帖最后由 suxiaolu 于 2010-4-8 22:09 编辑

我在做一个搜索,用户可能会输入类似 http://codeigniter.org.cn 这样的关键字,我把用户输入的关键字进行了 urlencode 编码,最后生成的url是:class/function/url/http%3A%2F%2Fcodeigniter.org.cn ,之后用 redirect 转向,参数就是 'class/function/url/http%3A%2F%2Fcodeigniter.org.cn',就出现 "您指定的网页无法访问! 错误类型:404” 这样的错误,请问如何能正确的转向?或者说url中就不能出现这些字符,即使是编码过的也不行。
发表于 2010-4-8 22:11:12 | 显示全部楼层
使用URI类
在你的function中使用
$test = $this->uri->uri_to_assoc(3)
可以得到一个类是于array('url'=>'http://www.example.com')
的数组
 楼主| 发表于 2010-4-8 22:17:20 | 显示全部楼层
本帖最后由 suxiaolu 于 2010-4-8 22:20 编辑

我现在的问题是 redirect('class/function/url/http%3A%2F%2Fcodeigniter.org.cn'); 这句话无法正确的转向
发表于 2010-4-8 22:21:47 | 显示全部楼层
你可以试一试使用header来转向
header("Location: ".site_url('class/function').'/url/xxx.html');
 楼主| 发表于 2010-4-8 22:32:15 | 显示全部楼层
不行,主要的问题是 'class/function/url/xxx.html' 中,这三个xxx其中有 '/' 这个符号,即便是 urlencode 后也是不行,我试过,只要不包含 '/' 就没问题
发表于 2010-4-8 22:41:02 | 显示全部楼层
可以通过在路由表中定义一条规则试一试

。或者就是传入参数之前替换URL中http://部分
 楼主| 发表于 2010-4-8 22:45:33 | 显示全部楼层
好的,多谢,我现在就是在传入参数之前替换URL中http://部分,没办法的办法,我再试试你说的路由
发表于 2010-4-8 22:50:58 | 显示全部楼层
路由应该也不行。
除非将URI的分隔符更换了。
 楼主| 发表于 2010-4-8 22:58:28 | 显示全部楼层
我现在有一点不明白,redirect('class/function/url/http%3A%2F%2Fcodeigniter.org.cn');这句话为什么执行完后出现 "您指定的网页无法访问! 错误类型:404” 这样的错误
发表于 2010-4-8 23:01:47 | 显示全部楼层
你的function怎么写的?

本版积分规则