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

[已解决] controllers参数如果为http://xxx模式就不能接收,怎么修改呢?

[复制链接]
发表于 2011-10-17 08:55:15 | 显示全部楼层 |阅读模式
本帖最后由 yangyynn 于 2011-10-17 11:34 编辑

请教大家,
我需要在登录有返回登陆前的地址,所以在登录的controllers/login中接收一个参数。
PHP复制代码
 
class User extends CI_controllers{
 
public function login($backurl=''){
//codeing here
}
 
}
 
复制代码


我在进入这个login的时候,
1、通过地址:http://xxx.xxx.xxx/index.php/user/login/http://codeigniter.org.cn
错误:
A PHP Error was encounteredSeverity: Warning
Message:  parse_url(/home/login/http://codeigniter.org.cn/) [function.parse-url]: Unable to parse URL
Filename: core/URI.php
Line Number: 193

2、进行urlencode编码后:http://xxx.xxx.xxx/index.php/user/login/http%3A%2F%2Fcodeigniter.org.cn
错误:The requested URL /home/login/http://codeigniter.org.cn was not found on this server.

请问大家有什么解决办法吗?

发表于 2011-10-17 09:18:47 | 显示全部楼层
第一种方法显然不对,转向链接里的下划线跟URL本身的下划线冲突。

第二种方式:
http://xxx.xxx.xxx/index.php/user/login/http%3A%2F%2Fcodeigniter.org.cn
The requested URL /home/login/http://codeigniter.org.cn was not found on this server.

这个错误的链接都不对应的,怎么回事?
发表于 2011-10-17 09:19:41 | 显示全部楼层
跳转到登录前地址不是这么实现的。你可以搜索一下论坛。
 楼主| 发表于 2011-10-17 09:23:36 | 显示全部楼层
我不想用系统记录登陆传入地址,再登陆后再跳转。
我想用传入参数的方式。

传入参数不能是url地址的格式吗?
 楼主| 发表于 2011-10-17 09:26:19 | 显示全部楼层
baiyuxiong 发表于 2011-10-17 09:18
第一种方法显然不对,转向链接里的下划线跟URL本身的下划线冲突。

第二种方式:

这个是这样的,可能是会自动解码。
PHP复制代码
echo anchor('user/login/'.urlencode('http://codeigniter.org.cn'), '登录');
复制代码

我是这么做测试的。
 楼主| 发表于 2011-10-17 11:34:48 | 显示全部楼层
使用base64_encode编码搞定
echo anchor('user/login/'.base64_encode('http://codeigniter.org.cn'), '登录');
发表于 2011-10-17 11:50:04 | 显示全部楼层
yangyynn 发表于 2011-10-17 11:34
使用base64_encode编码搞定
echo anchor('user/login/'.base64_encode('http://codeigniter.org.cn'), '登 ...

你这样做的话,只是让用户跳转到了固定的链接。
没办法让用户跳转到登录前链接,因为你没办法取到登录前的链接是什么。
 楼主| 发表于 2011-10-17 13:44:19 | 显示全部楼层
登录前地址我是让传入的应用自己添加的。
发表于 2011-10-17 20:14:02 | 显示全部楼层
记得论坛里有详细解决办法的,找不到了

本版积分规则