web-dev-qa-db-ja.com

Codeigniter $ this-> input-> post()empty $ _POSTが正常に動作している間

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

print_r($_POST)は、すべての変数を完全かつ正しく与えますか?

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

これを機能させるにはどうすればよいですか?

ありがとう!

16
Matthew Higgins

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

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

vs(機能しません):

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

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

説明:

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

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

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

27
Rauli Rajande

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

これを試して、変更

$config['base_url'] = 'http://mywebsite.cl/';

$config['base_url'] = 'http://www.mywebsite.cl/';

一部のプロバイダーは、ほとんどの場合、URLにwww、httpsなどをURLに自動的に追加します。これにより、この問題が発生します。

4

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

  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']_を探します。これはTRUEまたはFALSEに設定されていますか? TRUEの場合、クロスサイトスクリプティングフィルターが、投稿しているデータに問題がある可能性があります(これは考えにくいです)

1
ShaneH

私の問題は、ajax呼び出しにありました。私はこれを使用していました:

type: 'posts',

の代わりに

type: 'post',

構文、D'oh!

1
Webmaster G

2.2.xから3.0.xへのアップグレード-reason postメソッドが失敗します。 CI 3.xをアップグレードする場合、index_pageを構成ファイルに保持する必要があります。また、mod_rewriteの.htaccessファイルを確認します。 CI_3.x

$config['index_page'] = ''; // ci 2.x
$config['index_page'] = 'index.php'; // ci 3.x

私の.htaccess

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /index.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
 ErrorDocument 404 /index.php
</IfModule>
1
syyu

フォームアクションを変更し、

これから:

<form method="post" action="<?=base_url()?>yourprocess">

これに:

<form method="post" action="<?=base_url()?>index.php/yourprocess">

基本的に、base_url()の後に「index.php」を追加するだけです。

action = "http://www.yourdomain.com/-index.php/yourprocess"

1
Ajie Winugs

_/applicaiton/config/config.php_でcsrf保護を有効にしましたか?

その場合、$this->input->post()は空になります。空ではない$this->input->post('submit')を試してみてください。

1
maan81

つかいます

var_dump($this->input->post());

スクリーンショットをご覧ください。 ここですべてのポスト配列値を印刷しています

0
Jay Bharat

本日、ようやく問題が解決しました。問題は.htaccessファイル。

自分自身への学習: CODEIGNITER DOCUMENTATIONを読む必要があります より徹底的に。

0
user3262234