owned this note
owned this note
Published
Linked with GitHub
fuelphp質問2
===
再度検証してみたのですが、うまくいきません。
login.phpとsignup.phpのアクション名を変えて実行してみたのですが404エラーが発生しました。
おそらく、リダイレクト設定がうまくできていない可能性があるのかなっと思っています。
しかし、他のphpファイルでは
Response::redirect('login');
でlogin.phpにリダイレクトできているので、どこでエラーが発生しているのかがわかりません。
var_dampの結果は値は何も入っていませんでした。
この結果から、無限ループの場合は配列の中の値は入らないのですか?
あと、
>Request::active()->actionにて対象のページのアクションを取得し、それを比較すれば無限ループを避けることができる
>
のであれば、
>Request::active()->actionの値は「index」となるので、「Request::active()->action != 'login’」はtrue
>
この場合、
1. 比較対象の'login'と'index'は同じではないのでtrueつまり、ループし続ける。
2. 中の値を'login'と'login'でfalseにすればループから抜ける。
3. っということは、Request::active()->actionの中の値を'login'にすればいい。
っという解釈で合っていますか?
ヒントをいただけましたら幸いです。
よろしくお願いします。
検証したコードは長いため、下記のURLに添付しときます。
https://hackmd.io/sLU8caGsRyaH7mCANNWX_Q
---
## パターン1(無限)
* login.phpのアクション名はindex
* signup.phpのアクション名はindex
* auth.phpを編集
* https://helog.jp/framework/fuelphp-auth/ の内容は質問する前に試したのですが、この検証と同じでした。
```php=
<!-- auth.php -->
class Controller_Auth extends Controller
{
public function before()
{
parent::before();
if (!Auth::check() && Request::active()->action != 'login') {
Log::debug(var_dump('!Auth::check()の値:', !Auth::check()));
Log::debug(var_dump('Request::active()の値:', Request::active()));
Log::debug(var_dump('Request::active()->actionの値:', Request::active()->action));
Log::debug('未ログインユーザーです。');
Log::debug(var_dump("Request::active()->action != 'login'の値: ", Request::active()->action != 'login'));
Log::debug('ログインページに遷移します');
Response::redirect('login');
}
}
}
```
```php=
<!-- ログ -->
WARNING - 2019-12-10 02:11:04 --> Fuel\Core\Fuel::init - The configured locale ja_JP.utf8 is not installed on your system.
INFO - 2019-12-10 02:11:04 --> Fuel\Core\Request::__construct - Creating a new main Request with URI = "login"
INFO - 2019-12-10 02:11:04 --> Fuel\Core\Request::execute - Called
INFO - 2019-12-10 02:11:04 --> Fuel\Core\Request::execute - Setting main Request
DEBUG - 2019-12-10 02:11:04 -->
DEBUG - 2019-12-10 02:11:04 -->
DEBUG - 2019-12-10 02:11:04 -->
DEBUG - 2019-12-10 02:11:04 --> 未ログインユーザーです。
DEBUG - 2019-12-10 02:11:04 -->
DEBUG - 2019-12-10 02:11:04 --> ログインページに遷移します
...
```
login,signupともに同じログ結果。
var_dampの結果はなし。
## パターン2
* login.phpのアクション名をloginに変更
* signup.phpのアクション名をsignupに変更
```php=
<!-- login.php -->
class Controller_Login extends Controller_Auth
{
//クラス定数の作成
const PASS_LENGTH_MIN = 6;
const PASS_LENGTH_MAX = 20;
public function action_login()
{
Log::debug('「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「');
Log::debug('「 ログインページ ');
Log::debug('「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「');
...
```
```php=
<!-- ログ -->
WARNING - 2019-12-10 02:15:17 --> Fuel\Core\Fuel::init - The configured locale ja_JP.utf8 is not installed on your system.
INFO - 2019-12-10 02:15:17 --> Fuel\Core\Request::__construct - Creating a new main Request with URI = "login"
INFO - 2019-12-10 02:15:17 --> Fuel\Core\Request::execute - Called
INFO - 2019-12-10 02:15:17 --> Fuel\Core\Request::execute - Setting main Request
INFO - 2019-12-10 02:15:17 --> Fuel\Core\Request::__construct - Creating a new main Request with URI = "welcome/404"
INFO - 2019-12-10 02:15:17 --> Fuel\Core\Request::execute - Called
INFO - 2019-12-10 02:15:17 --> Fuel\Core\Request::execute - Setting main Request
```

URL変わらず
```php=
<!-- signup.php -->
class Controller_Signup extends Controller_Auth
{
//クラス定数の作成
const PASS_LENGTH_MIN = 6;
const PASS_LENGTH_MAX = 20;
public function action_signup()
{
Log::debug('「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「');
Log::debug('「 ユーザー登録ページ ');
Log::debug('「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「');
...
```
```php=
WARNING - 2019-12-10 02:16:56 --> Fuel\Core\Fuel::init - The configured locale ja_JP.utf8 is not installed on your system.
INFO - 2019-12-10 02:16:56 --> Fuel\Core\Request::__construct - Creating a new main Request with URI = "signup"
INFO - 2019-12-10 02:16:56 --> Fuel\Core\Request::execute - Called
INFO - 2019-12-10 02:16:56 --> Fuel\Core\Request::execute - Setting main Request
INFO - 2019-12-10 02:16:56 --> Fuel\Core\Request::__construct - Creating a new main Request with URI = "welcome/404"
INFO - 2019-12-10 02:16:56 --> Fuel\Core\Request::execute - Called
INFO - 2019-12-10 02:16:56 --> Fuel\Core\Request::execute - Setting main Request
```

URL変わらず
## 検証結果(1,2)
アクション名を変更したが、404エラー発生。
リダイレクト設定がうまくできていない可能性。
## パターン3(無限)
* auth.php変更
* login.phpのアクション名はindex
* signup.phpのアクション名はindex
```php=
<!-- auth.php -->
class Controller_Auth extends Controller
{
public function before()
{
parent::before();
if (Request::active()->controller !== 'Controller_Auth' or !in_array(Request::active()->action, array('login', 'signup'))) {
if (Auth::check()) {
if (!Auth::member(100)) {
Session::set_flash('error', e('You don\'t have access to the admin panel'));
Response::redirect('/');
}
} else {
Log::debug(var_dump('Request::active()->controller:', Request::active()->controller));
Log::debug(var_dump('Request::active()->actionの値:', Request::active()->action));
Log::debug('未ログインユーザーです。');
Log::debug('ログインページに遷移します');
Response::redirect('login');
}
}
}
}
```
```php=
<!-- ログ -->
WARNING - 2019-12-10 02:25:27 --> Fuel\Core\Fuel::init - The configured locale ja_JP.utf8 is not installed on your system.
INFO - 2019-12-10 02:25:27 --> Fuel\Core\Request::__construct - Creating a new main Request with URI = "login"
INFO - 2019-12-10 02:25:27 --> Fuel\Core\Request::execute - Called
INFO - 2019-12-10 02:25:27 --> Fuel\Core\Request::execute - Setting main Request
DEBUG - 2019-12-10 02:25:27 -->
DEBUG - 2019-12-10 02:25:27 -->
DEBUG - 2019-12-10 02:25:27 --> 未ログインユーザーです。
DEBUG - 2019-12-10 02:25:27 --> ログインページに遷移します
...
```
login,signup共に同じログ内容
## パターン4
* login.phpのアクション名をloginに変更
* signup.phpのアクション名をsignupに変更
```php=
<!-- ログ -->
WARNING - 2019-12-10 02:25:10 --> Fuel\Core\Fuel::init - The configured locale ja_JP.utf8 is not installed on your system.
INFO - 2019-12-10 02:25:10 --> Fuel\Core\Request::__construct - Creating a new main Request with URI = "login"
INFO - 2019-12-10 02:25:10 --> Fuel\Core\Request::execute - Called
INFO - 2019-12-10 02:25:10 --> Fuel\Core\Request::execute - Setting main Request
INFO - 2019-12-10 02:25:10 --> Fuel\Core\Request::__construct - Creating a new main Request with URI = "welcome/404"
INFO - 2019-12-10 02:25:10 --> Fuel\Core\Request::execute - Called
INFO - 2019-12-10 02:25:10 --> Fuel\Core\Request::execute - Setting main Request
```
パターン2と同じ。404エラー
## パターン5
```php=
<!-- auth.php -->
class Controller_Auth extends Controller
{
public function before()
{
if (!Auth::check() && Request::active()->action != array('login', 'signup')) {
Log::debug(var_dump('!Auth::check()の値:', !Auth::check()));
Log::debug(var_dump('Request::active()の値:', Request::active()));
Log::debug(var_dump('Request::active()->actionの値:', Request::active()->action));
Log::debug('未ログインユーザーです。');
Log::debug(var_dump("Request::active()->action != array('login', 'signup')の値: ", Request::active()->action != array('login', 'signup')));
Log::debug('ログインページに遷移します');
Response::redirect('login');
}
}
}
```
アクション名の変更なしパターン、変更パターンどちらも試したが、結果は同じ。
## 検証結果
パターン{1,3} {2,4}は同じことをしている可能性