■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

Admin領域へのIPアドレスによるアクセス制限

 

<前のページ |  1  |  2  

cruel > Re: Admin領域へのIPアドレスによるアクセス制限 @ 2011/3/5 1:44
yosyos さま

ありがとうございます。ここしばらくクライアントからは連絡がないため、また
週明けにでも問い合わせして、うまくいくといいのですが・・・。


ryuring さま

ryuring 様の環境では動作されているとのことで、私の環境(CSV, MySQL)でも再度
確認を行っておりましたが、やはり動作しないようです。スマートURLのオン・オフ
両環境でも試しましたが、結果は同様でした。

デバッグモードを有効にしたところ、以下のようなエラーが発生しておりました。
エラーをクリックして展開された部分も含めて記載いたします。


Warning (2): Parameter 1 to AdminPermissionHookComponent::initialize() expected to be a reference, value given [CORE/baser/controllers/components/plugin_hook.php, line 122]

PluginHookComponent::executeHook() - CORE/baser/controllers/components/plugin_hook.php, line 122
PluginHookComponent::initialize() - CORE/baser/controllers/components/plugin_hook.php, line 92
Component::initialize() - CORE/cake/libs/controller/component.php, line 95
Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 207
Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 193
[main] - APP/webroot/index.php, line 111


Warning (2): Parameter 1 to AdminPermissionHookComponent::beforeRender() expected to be a reference, value given [CORE/baser/controllers/components/plugin_hook.php, line 122]

PluginHookComponent::executeHook() - CORE/baser/controllers/components/plugin_hook.php, line 122
PluginHookComponent::beforeRender() - CORE/baser/controllers/components/plugin_hook.php, line 146
Component::beforeRender() - CORE/cake/libs/controller/component.php, line 127
Controller::render() - CORE/cake/libs/controller/controller.php, line 776
Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 229
Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 193
[main] - APP/webroot/index.php, line 111


MySQLのテスト環境では、デバッグモード3にするとメニュー等が文字化けして
正常に表示できませんでしたが、CSVの方ですと問題なく表示されましたので、
そちらでのプラグイン変数部分も抜粋いたします。


    [PluginHook] => PluginHookComponent Object
        (
            [pluginHooks] => Array
                (
                    [AdminPermission] => AdminPermissionHookComponent Object
                        (
                            [registerHooks] => Array
                                (
                                    [0] => initialize
                                    [1] => beforeRender
                                )

                            [allowClients] => Array
                                (
                                    [0] => 192.168.0.1
                                    [1] => 192.168.1.1
                                    [2] => localhost
                                    [3] => 127.0.0.1
                                )

                            [_log] => 
                        )

                )

            [registerHooks] => Array
                (
                    [initialize] => Array
                        (
                            [0] => AdminPermission
                        )

                    [beforeRender] => Array
                        (
                            [0] => AdminPermission
                        )

                )

            [_log] => 
            [enabled] => 1
        )


上記変数にあるIPアドレス以外からアクセスを行っておりますが、管理領域への
アクセスは可能でした。

PHP 5.3.5という環境が悪いのか、他に原因があるのか、もしお気づきの点がござい
ましたらご指摘いただけますと幸いです。

たびたびのご依頼で申し訳ございませんが、よろしくお願いいたします。
ryuring > Re: Admin領域へのIPアドレスによるアクセス制限 @ 2011/3/6 14:04
こんにちは。

なるほど、5.3を使っているのですね。参照渡しの問題だと思います。

BaserCMSは現在、PHP4もサポートしているので、先日のようなコードとなりましたが、
5.3であれば、引き数の参照渡しを示す「&」を外してあげれば解決します。

class AdminPermissionHookComponent extends Object {
	
	var $registerHooks = array('initialize','beforeRender');
	var $allowClients = array('0.0.0.0', '127.0.0.1');
	function initialize($controller){
		if(!empty($controller->params['admin'])){
			$controller->components += array('RequestHandler');
		}
	}
    function beforeRender($controller){
		if(!empty($controller->params['admin']) && $controller->name != 'CakeError'){
			if(!in_array($controller->RequestHandler->getClientIP(),$this->allowClients)){
				$controller->notFound();
			}
		}
    }
	
}


この辺が参考になると思います。↓
PHP 5.3: 参照渡しの関数/メソッドを定義してた人は call_user_func_array に注意CommentsAdd Star

こういう問題を考えると、PHP4をサポートしていくのもそろそろ限界かもしれませんね。。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

cruel > Re: Admin領域へのIPアドレスによるアクセス制限 @ 2011/3/7 22:58
ryuring さま

たびたびお手数をお掛けしまして申し訳ありませんでした。おかげさまで、
ご掲示くださったコードにて動作いたしました。誠にありがとうございました。

PHPは5.2までと5.3以降では、挙動がかなり違うと聞いたことはありましたが、
細かいところでもだいぶ変わっているのですね。似非コーダーのため、この辺りの
事情には全く詳しくなかったのですが、真面目に勉強しないといけないなと思い
知りました・・・。

このプラグインをセッティングして、クライアントに再度提案をしてみたいと思い
ます。この度はどうもありがとうございました。

 

<前のページ |  1  |  2  

ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
28 人のユーザが現在オンラインです。 (26 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 28