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)
你有一个编码器/解码器:
在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)