118 votes

php Le tableau $_POST est vide lors de la soumission du formulaire.

J'ai construit un système de gestion de contenu (CMS) personnalisé qui fonctionne parfaitement sur ma boîte de développement (Ubuntu/PHP5+/MySQL5+).

Je viens de le déplacer vers la boîte de production pour mon client et maintenant toutes les soumissions de formulaire apparaissent comme des tableaux $_POST vides.

J'ai trouvé une astuce pour vérifier que les données sont réellement transmises en utilisant file_get_contents('php://input'); et les données s'affichent bien ici la $_POST / $_REQUEST Les tableaux sont toujours vides.

J'ai également vérifié que les en-têtes content-type sont corrects via firebug ( application/x-www-form-urlencoded; charset=utf-8 ).

Ce problème se produit indépendamment du fait qu'un formulaire soit soumis via AJAX ou via un formulaire normal.

Toute aide est grandement appréciée !

0voto

Victor Häggqvist Points 639

C'est un peu similaire à ce que @icesar a déclaré .

Mais j'essayais de poster des trucs dans mon api, située dans site/api/index.php en ne postant que pour site/api puisqu'il est transmis à index.php par lui-même. Cependant, cela a apparemment provoqué une erreur, car ma $_POST s'est vidée à la volée. Il suffit de poster sur site/api/index.php directement au lieu de le résoudre.

0voto

Ben Points 172

Mon problème était que j'utilisais le HTML <base> pour modifier l'URL de base de mon site de test. Une fois que j'ai supprimé cette balise de l'en-tête, la balise $_POST Les données sont revenues.

0voto

PaulH Points 2076

Dans mon cas (page php sur serveur mutualisé OVH) enctype="text/plain" ne fonctionne pas ( $_POST et correspondant $_REQUEST est vide), les autres exemples ci-dessous fonctionnent. `

<form action="?" method="post">
<!-- in this case, my google chrome 45.0.2454.101 uses -->
<!--     Content-Type:application/x-www-form-urlencoded -->
    <input name="say" value="Hi">
    <button>Send my greetings</button>
</form>

<form action="?" method="post" enctype="application/x-www-form-urlencoded">
    <input name="say" value="Hi">
    <button>Send my application/x-www-form-urlencoded greetings</button>
</form>

<form action="?" method="post"  enctype="multipart/form-data">
    <input name="say" value="Hi">
    <button>Send my multipart/form-data greetings</button>
</form>

<form action="?" method="post" enctype="text/plain"><!-- not working -->
    <input name="say" value="Hi">
    <button>Send my text/plain greetings</button>
</form>

`

Plus d'informations ici : method="post" enctype="text/plain" ne sont pas compatibles ?

0voto

Frank Hsieh Points 1

Assurez-vous d'utiliser le nom=" votre_variable_name "dans la balise d'entrée.

J'utilise par erreur id=" votre_variable_name ".

J'ai passé beaucoup de temps à attraper le virus.

0voto

Christian Igay Points 25

J'ai rencontré le même problème lorsque j'ai migré vers le nouveau serveur. post_max_size en el php.ini a réglé mon problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X