如何在codeigniter中将URL作为控制器方法的参数传递

Pee*_*ush 9 php url codeigniter

我有一个Codeigniter控制器,它将完整的URL作为第一个参数,但我的控制器内传递的URL仅显示 http:

public function mydata($link)
{
   echo $link; //then it show only http: rather than the full url http://abc.com
}
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

Jua*_*int 10

如果你想传递url作为参数然后使用

进行urlencode(BASE64_ENCODE($ STR))

即:

$url=urlencode(base64_encode('http://stackoverflow.com/questions/9585034'));
echo $url
Run Code Online (Sandbox Code Playgroud)

结果:

aHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy85NTg1MDM0
Run Code Online (Sandbox Code Playgroud)

然后你打电话:

http://example.com/mydata/aHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy85NTg1MDM0

并在你的控制器

public function mydata($link)
{

$link=base64_decode(urldecode($link));
...
...
...
Run Code Online (Sandbox Code Playgroud)

你有一个编码器/解码器:

http://www.base64decode.org/


Wes*_*rch 8

在Codeigniter控制器中,每个方法参数都来自以/斜杠分隔的URL .http://example.com

有几种不同的方法可以将参数拼凑成一个字符串:

public function mydata($link)
{
    // URL: http://example.com/mysite/mydata/many/unknown/arguments

    // Ways to get the string "many/unknown/arguments"
    echo implode('/', func_get_args());
    echo ltrim($this->uri->uri_string(), '/');
}
Run Code Online (Sandbox Code Playgroud)

然而:

在您的情况下,//使用这些方法之一可能会丢失双斜杠,因为它将在URL中压缩为一个.事实上,我很惊讶一个URL如:

http://example.com/mydata/http://abc.com

...没有触发Codeigniter的"URI包含不允许的聊天"错误.我建议您使用查询字符串来完成此任务,以避免所有这些问题:

http://example.com/mydata/?url=http://abc.com

public function mydata()
{
    $link = $this->input->get('url');
    echo $link;
}
Run Code Online (Sandbox Code Playgroud)