20

codeigniter のインストールで、組み込み$this->input->post('some_data')関数を使用しようとしています$this->input->post()が、空の配列です。

Aprint_r($_POST)はすべての変数を完全かつ正確に与えますか?

codeigniter docs によると、入力クラスは「システムによって自動的に初期化されるため、手動で行う必要はありません」と、他に何をするつもりなのか疑問に思っています。

これを機能させる方法について何か考えはありますか?

ありがとう!

4

13 に答える 13

30

ビューが次のように見えるかどうかを確認できます (正しい):

<form method="post" action="/controller/submit/">

対(動作しません):

<form method="post" action="/controller/submit">

ポスト変数を引き継がずにリダイレクトするため、ここの 2 番目は正しくありません。

説明:

URL の末尾にスラッシュがない場合は、これがファイルを指していることを意味します。

ここで、Web サーバーがファイルを検索すると、これが実際にはディレクトリであることがわかり、最後にスラッシュを付けてブラウザーにリダイレクトを送信します。

ブラウザーは、スラッシュを使用して新しい URL に新しいクエリを作成しますが、フォームの内容は投稿しません。そこでフォームの内容が失われます。

于 2013-05-28T16:00:48.063 に答える
4

使用$this->input->post() するには、フォーム ヘルパーを初期化します。config でデフォルトでそれを行うことができます。

于 2013-02-25T06:19:53.910 に答える
1

これを解決するために探すことができることがいくつかあります。

  1. コア CodeIgniter ファイルで変更または拡張されたものはありますか。system/core/Input.phpが元のコピーでapplication/libraryありapplication/core、追加ファイルの内容を確認してください

  2. 他の入力方法は機能しますか? 呼び出しの横でこれを実行すると、どのような結果になりますprint_rか?

    echo $this->input->user_agent();

  3. から出力されるデータは何print_rですか? application/config/config.php行を探し$config['global_xss_filtering']ます。これは または に設定されていますTRUEFALSE? TRUEクロス サイト スクリプティング フィルターが投稿しているデータに問題がある場合 (これはありそうにないと思います)

于 2012-09-11T21:25:55.750 に答える
-1

親コンストラクターがありません。コントローラーがロードされたら、コントローラー コンストラクターで親の CI_Controller クラス コンストラクターを呼び出す必要があります。

于 2020-11-11T03:35:42.330 に答える
-2

問題は、$this->input->post()すべてのPOSTデータの取得をサポートしておらず、特定のデータのみを取得することです。たとえば、これが空$this->input->post('my_post_var').である理由です。var_dump($this->input->post());

いくつかの解決策は、すべてのPOSTデータを取得するために$ _POSTに固執するか、必要な各POSTアイテムから変数を割り当てます。次に例を示します。

// variables will be false if not post data exists
$var_1 = $this->input->post('my_post_var_1');
$var_2 = $this->input->post('my_post_var_2');
$var_3 = $this->input->post('my_post_var_3');

ただし、上記のコードはあまり乾燥していないので、次のようにします。

if(!empty($_POST)) 
{
    // get all post data in one nice array
    foreach ($_POST as $key => $value) 
    {
        $insert[$key] = $value;
    }
}
else
{
    // user hasen't submitted anything yet!
}
于 2012-10-23T21:36:49.730 に答える
-2

やっと今日問題が解決しました。問題は.htaccessファイルにありました。

自分自身への学習: CODEIGNITER のドキュメントをより完全に読む必要があります。

于 2015-12-11T21:01:41.757 に答える
-3

すべての投稿値を表示するには、試してくださいvar_dump($this->input->post(ALL));

于 2013-03-15T11:32:51.203 に答える
-3

次のように解決します。

以下は、コントローラーで $ this-> input-> post ('name') を実行する .htacess であるリダイレクトを除外しますか?私の場合、完全に機能しました。

腹筋、ホセ・カマルゴ]

于 2016-01-11T02:15:57.920 に答える