この問題は非常に紛らわしく、私のような初心者にとって理解するのは非常に異なるため、ここでいくつかのガイダンスが本当に必要です.
最新の CI バージョンで WAMP サーバーを実行しています。
core/MY_Controller.php には次のものがあります。
public GeneralController extend CI_Controller {
public GeneralController() {
parent::__construct();
// Does some stuff
}
}
public AuthenticatedController extend GeneralController {
public AuthenticatedController() {
parent::__construct();
if(!loggedIn()) redirect("/login");
// Does some stuff
}
}
public UnauthenticatedController extend GeneralController {
public UnauthenticatedController() {
parent::__construct();
if(loggedIn()) redirect("/home");
// Does some stuff
}
}
私のログインコントローラーは次のとおりです。
class Login extends UnauthenticatedController {
したがって、基本的に、ログインして「/login」をロードすると、「/home」にルーティングされます。
これは私のローカル環境で完全に機能します。
サーバーにアップロードして「/login」に移動すると、無限ループが発生します。デバッグ後、Login コントローラーが UnauthenticatedController ではなく AuthenticatedController をロードするため、「/login」に無限にリダイレクトし続けることがわかりました。
さて、何らかの理由で継承が壊れているので、Auth コントローラーと Unauth コントローラーの両方を呼び出すかどうかを確認する必要があります。いいえ。UnauthenticatedController を拡張しても Auth を呼び出すだけです。
私はここで途方に暮れています。想像できる限りのことはすべて試しましたが、新しい php プログラマーとして、あなたの頭脳をいくつか試してみようと思いました!
ありがとうございました!
解決策: 本番サーバーの php バージョンとローカルを確認してください