老師您好,我在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方法的用法一致 你查看下參考手冊就明白了,直接用? 就會被優先解析為存取了本地方法。達不到預想效果