0

私が使用しているサードパーティのサービスは、ユーザーを次のようなURLに戻します。

site.com/something.php?id=XXX&something=abc....

$_GETしたがって、サイトの一部のパラメーターのみを受け入れることができる必要があります。

次のようなことをするcodeigniterのアプリケーションディレクトリの外にファイルを置く方法はありますか?

<?
$id = $_GET['id'];
$something = $_GET['something'];

//Do something so codeigniter thinks this is a request to site.com/process/$id/$something

require('index.php'); //codeigniter's index.php file
?>

私は過去にこれを達成するために使用putenv()したことを覚えていますが、詳細は覚えていません。

4

4 に答える 4

1

putenvについてはよくわかりませんが、悪化した場合は、展開してget配列の内容を取得できます。$_SERVER['QUERY_STRING']

getを有効にする必要はなく、引き続きアクセスできます。

于 2012-05-31T01:12:31.987 に答える
0

試す

$this->config->set_item("allow_get_array",TRUE); 

の前にコントローラーのコンストラクターでparent::__construct();

新しいコントローラが呼び出されると、セキュリティフィルタリング機能が自動的に呼び出されます。次のことを行います。

$ config ['allow_get_array']がFALSE(デフォルトはTRUE)の場合、グローバルGET配列を破棄します。

于 2012-05-29T06:22:25.230 に答える
0

リダイレクトを使用してみてください:

<?php
$id = $_GET['id'];
$something = $_GET['something'];
header('Location: http://www.site.com/' . $id . '/' . $something);

最初のsomething.phpリクエストがそのファイルに対して直接行われ、ではない限りindex.php、CodeIgniterは実行されません(実際には、.htaccess [または同等の]ファイルに依存するため、微調整が必​​要になる場合があります)。

これは私が考えることができる最も安全な方法であり、CodeIgniterのプログラムフローを分割したり、アプリケーションでクエリ文字列を有効にしたりする必要はありません。これは安全ではない可能性があります。

于 2012-05-29T03:19:01.113 に答える
0

たぶん私はあなたのアーキテクチャを誤解していますが、codeigniterに対してGETを有効にすることはできませんでした..?

$config['allow_get_array']ドキュメントを参照してください:

http://codeigniter.com/user_guide/libraries/input.html

そして$this->input->get()、同じページを参照してください。

于 2012-05-29T03:23:38.120 に答える