老师您好,我在在thinkphp5中使用redirect遇到了一个让我非常困惑的问题,希望能帮助解答。
<?php namespace app\index\controller; class At extends Common { public function hi($name) { if ($name == 'thinkphp') { return $this->redirect('http://www.baidu.com',302); }else{ return $this->error('登录失败','ds'); } } public function cg() { return '登录成功跳转'; } public function ds() { return '登录失败跳转'; } }
这个代码按照老师说的方法,如果成功,则会跳转到百度网页,这个代码执行起来没有任何问题,但是,当我将这个重定向的url替换成另外一个的时候,问题出现了。
替换如下:
<?php namespace app\index\controller; class At extends Common { public function hi($name) { if ($name == 'thinkphp') { return $this->redirect('mqqapi://card/show_pslcard?src_type=internal&version=1&uin=1921779545&card_type=person&source=sharecard',302); }else{ return $this->error('登录失败','ds'); } } public function cg() { return '登录成功跳转'; } public function ds() { return '登录失败跳转'; } }
如代码所示,我将redirect重定向的地址替换成了mqqapi协议的一个地址(这个是QQ的一个协议),当我替换成这个地址的时候,报如下错误:
按道理来说这个show_pslcard只是这个mqqapi协议的url其中的一部分,不知道为什么会出现这样的错误。是与thinkphp框架中某个东西冲突了吗,还是什么别的原因。
希望老师能帮我解答。
qzuser2017-10-04 22:27:09
thinkphp 的redirect方法的参数用法和Url::build方法的用法一致 你查看下参考手册就明白了,直接用? 就会被优先解析为访问了本地方法。达不到预想效果