web-dev-qa-db-fra.com

Codeigniter $ this-> input-> post () vide tant que $ _POST fonctionne correctement

Sur une installation de codeigniter, j'essaie d'utiliser la fonction intégrée $this->input->post('some_data'), cependant $this->input->post() est un tableau vide.

Une print_r($_POST) donne toutes les variables complètement et correctement?

Selon la documentation de codeigniter, la classe d'entrée "est initialisée automatiquement par le système, il n'est donc pas nécessaire de le faire manuellement", ce qui me laisse penser à ce que je suis censé faire d'autre.

Des idées sur la façon dont je devrais essayer de faire fonctionner cela?

Merci!

16
Matthew Higgins

Vous pouvez vérifier si votre vue ressemble à ceci (correct):

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

vs (ne fonctionne pas):

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

La seconde est incorrecte car elle redirige sans reporter les variables post.

Explication:

Lorsque l'url ne comporte pas de barre oblique à la fin, cela signifie que cela pointe vers un fichier.

Désormais, lorsque le serveur Web consulte le fichier, il voit qu’il s’agit bien d’un répertoire et envoie une redirection au navigateur avec une barre oblique à la fin.

Le navigateur crée une nouvelle requête sur la nouvelle URL avec une barre oblique, mais n'envoie pas le contenu du formulaire. C'est là que le contenu du formulaire est perdu.

26
Rauli Rajande

Pour utiliser $this->input->post(), initialisez l’assistant de formulaire. Vous pouvez le faire par défaut dans config.

4

Essayez ceci, changez

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

à

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

Certains fournisseurs ajoutent automatiquement www, https, etc. à votre URL, la plupart du temps, cela cause ce problème

3
Italo Hernández

Vous pouvez chercher de l’aide pour résoudre ce problème.

  1. Quelque chose a changé ou a été étendu dans les fichiers de base CodeIgniter. Vérifiez que system/core/Input.php est une copie originale et que le contenu de application/library et application/core pour des fichiers supplémentaires.

  2. Les autres méthodes de saisie fonctionnent-elles? Quel est le résultat de cette opération lorsqu'elle est exécutée à côté de votre appel print_r?

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

  3. Quelles données sont sorties de print_r? Cherchez dans application/config/config.php la ligne $config['global_xss_filtering']. Est-ce réglé sur TRUE ou FALSE? Si TRUE le filtre de script intersite a peut-être un problème avec les données que vous publiez (c'est peu probable, je pense)

1
ShaneH

Mon problème était avec un appel ajax. J'utilisais ceci:

type: 'posts',

au lieu de 

type: 'post',

Syntaxe, D'oh!

1
Webmaster G

Mise à niveau de la version 2.2.x vers la version 3.0.x - la méthode de publication de la raison échoue . Si vous mettez à niveau CI 3.x, vous devez conserver la page index_page dans le fichier de configuration. Vérifiez également le fichier .htaccess pour mod_rewrite. CI_3.x

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

Mon .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

Changer l'action de votre formulaire,

À partir de ceci:

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

Dans ceci:

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

En gros, il vous suffit d’ajouter "index.php" après votre base_url ():

action = "http://www.votredomaine.com/ index.php / votre processus"

1
Ajie Winugs

Avez-vous activé la protection csrf dans /applicaiton/config/config.php?

Si tel est le cas, $this->input->post() apparaîtra vide. Vous pouvez essayer de faire $this->input->post('submit') qui ne devrait pas être vide. 

1
maan81

Utilisation

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

S'il vous plaît voir la capture d'écran . Ici, je priniting toutes les valeur de tableau après

0
Jay Bharat

Finalement, le problème a été résolu aujourd'hui. Le problème était avec le fichier .htaccess.

Apprendre à moi-même: DOIT LIRE ATTENTIVEMENT LA DOCUMENTATION DU CODEIGNITATEUR .

0
user3262234