将转义的url作为CodeIgniter中的控制器参数传递

时间:2013-09-21 08:19:52

标签: php codeigniter escaping

控制器Home有一个方法export

public function export($id , $url){
     ...
}

在我的smarty模板中,有一个链接:<a href="/home/export/{%$id%}/{%$url%}">export</a>。 如果网址为http://www.facebook.comexport方法只需将 http:作为网址的值。所以我将其更改为<a href="/home/export/{%$id%}/{%$url|escape:'url'%}">export</a>,以逃避网址中的斜杠。

然后该位置变为“ ... / home / export / 59 / http%3A%2F%2Fwww.facebook.com%2F ”(是我想要的),但是“404 Not Found”错误(不是我想要的)。

为什么?该位置不应映射到export方法吗?以及如何使用完整网址映射到它?

1 个答案:

答案 0 :(得分:0)

在Codeigniter控制器中,每个方法参数都来自以/斜杠分隔的URL。对于这种工作Codeigniter通过像“URI包含不允许的聊天”错误这样的错误。 我建议您使用查询字符串来完成此任务,以避免所有这些问题:

http://example.com/export/?id=1&url=http://www.facebook.com

public function export()
{
    $link = $this->input->get('url');
    echo $link;
}

在Codeigniter中,您可以获得完整的网址:

$this->uri->uri_string()


public function export($id , $url){
     echo  $this->uri->uri_string();
}