안녕하세요 선생님, 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 프레임워크의 내용과 충돌하는 걸까요, 아니면 다른 이유가 있는 걸까요?
선생님께서 답변을 도와주셨으면 좋겠습니다.
만료된 세션 임시 파일은 세션 임시 파일이 운영 체제의 임시 디렉터리에 있는 경우에만 자동으로 삭제됩니다
thinkphp의 리다이렉트 메소드의 매개변수 사용법은 Url::build 메소드의 사용법과 일치합니다. 직접 참조 매뉴얼을 확인해보면 이해가 되실 겁니다. 먼저 로컬 메서드에 액세스하여 해결됩니다. 예상한 결과를 얻을 수 없습니다