안녕하세요 선생님, thinkphp5에서 리디렉션을 사용할 때 매우 혼란스러운 문제에 직면했습니다. 이에 대한 답변을 도와주실 수 있기를 바랍니다.
<?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 '登录失败跳转'; } }
이 코드는 선생님이 말씀하신 방법을 따릅니다. 성공하면 Baidu 웹페이지로 이동합니다. 하지만 리디렉션된 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 '登录失败跳转'; } }
코드에 나와 있듯이 리디렉션된 주소를 mqqapi 프로토콜(QQ의 프로토콜입니다)의 주소로 바꾸었는데, 이 주소로 바꾸면 다음과 같은 오류가 보고되었습니다.
논리적으로 말하면 show_pslcard는 mqqapi 프로토콜 URL의 일부일 뿐인데 왜 그런 오류가 발생하는지 모르겠습니다. thinkphp 프레임워크의 내용과 충돌하는 걸까요, 아니면 다른 이유가 있는 걸까요?
선생님께서 답변을 도와주셨으면 좋겠습니다.
qzuser2017-10-04 22:27:09
thinkphp의 리다이렉트 메소드의 매개변수 사용법은 Url::build 메소드의 사용법과 일치합니다. 직접 참조 매뉴얼을 확인해보면 이해가 되실 겁니다. 먼저 로컬 메서드에 액세스하여 해결됩니다. 예상한 결과를 얻을 수 없습니다