-2

CakePHP で渡される URL を暗号化しようとしています。この記事 ( http://bakery.cakephp.org/articles/yuri.salame/2008/07/15/encrypting-urls# ) に従いましたが、機能しません。これが古い記事であることは承知しています。CakePHP 2.x を使用しています

表示されるエラーは次のとおりです。

Notice (8): Undefined index: url [APP/webroot/index.php, line 108]
Warning (4096): Argument 1 passed to Dispatcher::dispatch() must be an instance of CakeRequest, null given, called in /home/xxx/domains/xxx.com/public_html/xxx/v3/app/webroot/index.php on line 110 and defined [CORE/Cake/Routing/Dispatcher.php, line 140]
Warning (4096): Argument 2 passed to Dispatcher::dispatch() must be an instance of CakeResponse, none given, called in /home/xxx/domains/xxx.com/public_html/xxx/v3/app/webroot/index.php on line 110 and defined [CORE/Cake/Routing/Dispatcher.php, line 140]
Notice (8): Trying to get property of non-object [CORE/Cake/Routing/Filter/AssetDispatcher.php, line 45]

私のapp/webroot/index.phpは (最後の部分のみを表示しています):

App::uses('Dispatcher', 'Routing');

$url = do_decrypt($_REQUEST["url"]); 
$Dispatcher = new Dispatcher(); 
$Dispatcher->dispatch($url);

$Dispatcher = new Dispatcher();
$Dispatcher->dispatch(
    new CakeRequest(),
    new CakeResponse()
);
4

1 に答える 1

1

CakePHP に付属している.htaccessファイルは、CakePHP 2.x で変更されました。変数を設定しなくなったurlため、 では使用できません$_REQUEST。代わりに、 を使用$_SERVER['REQUEST_URI']して URL を取得できます。次に、この URL を のコンストラクターに渡す必要がありCakeRequestます。したがって、コードは次のようになります。

App::uses('Dispatcher', 'Routing');

$url = do_decrypt($_SERVER["REQUEST_URI"]); 
$Dispatcher = new Dispatcher();
$Dispatcher->dispatch(
    new CakeRequest($url),
    new CakeResponse()
);
于 2013-08-01T09:45:22.057 に答える