$ _POST est une donnée vide en PHP
J'ai un étrange problème avec mon $_POST données pas à venir à travers. Tout d'abord, cela fonctionne très bien sur mon ordinateur hôte local, mais ne fonctionne pas sur mon ordinateur hôte partagé sur le web. Voici le formulaire:
<form action="/add" method="POST" enctype="multipart/form-data">
<div>
Name : <input type='text' name='form[name]' class='form-text ' value="" style='width: 350px' placeholder="I.E. Boulder Vote Bus" maxlength="30"/>
</div>
<div>
Description : <textarea name='form[description]' class='form-bigbox '/></textarea>
</div>
<div class='clearfix pull-left'>
Logo: <input type="file" name='form[image_name]' class='' value="" accept="image/jpeg, image/jpg, image/png"/>
</div>
<div class='clearfix'></div>
<div>
<span id='date' class='change'>
Date : <input type='text' name='form[date]' id='datepicker' class='form-text ' placeholder="mm/dd/yyyy" value="" style='width: 160px;'/>
</span>
Time : <input type='text' name='form[hr]' class='form-text ' style='width: 40px;' placeholder="01" value=""/> : <input type='text' style='width: 40px;' name='form[min]' class='form-text ' placeholder="00" value=""/> <select name='form[ampm]' class='form-text form-select' style='width: 60px;'><option value='am' >AM</option><option value='pm' >PM</option></select>
</div>
<div>
Your Email : <input type='text' name='form[email]' class='form-text ' value="" style='width: 350px' placeholder="[email protected]"/>
</div>
<div>
Zip code : <input type='text' name='form[zipcode]' class='form-text ' value="" placeholder="80304"/> Radius : <input type='text' name='form[radius]' class='form-text ' value="" placeholder="25" style='width:50px;'/> mi
</div>
<div>
<input type='submit' class='form-submit btn-warning' value='Create a Ride' />
</div>
</form>
Problème est, après avoir soumis le formulaire, je n'ai pas de $_POST données. Si je ne echo serialize($_POST);
- je obtenir a:0:{}
. Cependant, si je le fais, echo file_get_contents('php://input');
je reçois le texte suivant:
------WebKitFormBoundaryLCabCxfMMHCvWsAO
Content-Disposition: form-data; name="form[name]"
Some Name
------WebKitFormBoundaryLCabCxfMMHCvWsAO
Content-Disposition: form-data; name="form[description]"
Some Description
------WebKitFormBoundaryLCabCxfMMHCvWsAO
Content-Disposition: form-data; name="form[image_name]"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundaryLCabCxfMMHCvWsAO
Content-Disposition: form-data; name="form[date]"
------WebKitFormBoundaryLCabCxfMMHCvWsAO
Content-Disposition: form-data; name="form[hr]"
------WebKitFormBoundaryLCabCxfMMHCvWsAO
Content-Disposition: form-data; name="form[min]"
------WebKitFormBoundaryLCabCxfMMHCvWsAO
Content-Disposition: form-data; name="form[ampm]"
am
------WebKitFormBoundaryLCabCxfMMHCvWsAO
Content-Disposition: form-data; name="form[email]"
------WebKitFormBoundaryLCabCxfMMHCvWsAO
Content-Disposition: form-data; name="form[zipcode]"
------WebKitFormBoundaryLCabCxfMMHCvWsAO
Content-Disposition: form-data; name="form[radius]"
------WebKitFormBoundaryLCabCxfMMHCvWsAO--
En outre, et étrangeté, si je prends la forme vers le bas pour seulement 3 éléments, il fonctionne. 3 éléments sont très bien, mais 4 et ça ne fonctionne pas. En outre, d'autres formes sur le site (avec plus de 3 éléments) fonctionnent tout aussi bien. C'est juste celui-ci.
Ici sont certains des paramètres de PHP à partir de mon ordinateur hôte partagé:
PHP Version 5.3.16
max_execution_time 300
max_file_uploads 20
max_input_time -1 -1
max_input_vars 1000 1000
memory_limit 128M 128M
post_max_size 500M 500M
Si c'est un paramètre du serveur, aucune idée de ce que cela pourrait être? Semble être un problème de taille, mais il n'est tout simplement pas beaucoup de la transmission des données (ce sont toutes des petites valeurs).
J'ai un htaccess, mais je ne pense pas que c'est lié (j'utilise codeigniter, et c'est le standard CI htaccess, et mes autres formes de soumettre un-ok):
AddDefaultCharset UTF-8
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#When your application folder isn't in the system folder
#This snippet prevents user access to the application folder
#Submitted by: Fabdrol
#Rename 'application' to your applications folder name.
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
Voici ce que print_r($_SERVER) produit (légèrement expurgée pour la sécurité du saké):
Array
(
[CONTENT_LENGTH] => 1077
[CONTENT_TYPE] => multipart/form-data; boundary=----WebKitFormBoundarydBnbAkAUNJntI6dz
[DOCUMENT_ROOT] => [redaced]
[GATEWAY_INTERFACE] => CGI/1.1
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.3
[HTTP_ACCEPT_ENCODING] => gzip,deflate,sdch
[HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8
[HTTP_CACHE_CONTROL] => max-age=0
[HTTP_CONNECTION] => keep-alive
[HTTP_COOKIE] => vrsession=8pO1KwOg4OPzCYqsJHX0Qr6FPfLteTimRjIKQPRC%2F83GlFRTepX%2FnrfE1yDxYxDXiPa2JcX4kQviV6lezxrXmJHjqVbWMe%2FgRne%2Bp9P4%2FfxlZrxta2Zl4DACs2C2nsp1SkqYj6k6xhP6Wc9Zlpxgsma752%2BGxHkvwnT6%2F%2FTey699wnV5je99kZe%2FIhSa04DZvoGXoFc6bx1%2B%2FZRtSvojD86ktpWK91AUFUvltcoj8%2F31jeX0h%2BR7VEOPMZLBeqJrcn7qZGeQ6N2XvCIsh6gqTRZIPdsvyAIW%2FTTibBiY0qUvh50yE5MH060D8utqsiv4S54UrXypBsCP3H2w66pLXHTQKKrK%2FAsn1SEWb2pew%2BEOE4prm%2BJKGxcAq0efCGhkpsHZoP9ZDKDekMzaJTIxUin99RUeXVZTF0yqsMD5A%2FFF0AdZuz343VWsJcV9zru4hPHaAky5NMoZa6R1be9PwA%3D%3D; __utma=74945813.1164249566.1347560100.1347560100.1347560100.1; __utmb=74945813.176.10.1347560100; __utmc=74945813; __utmz=74945813.1347560100.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
[HTTP_HOST] => [redacted]
[HTTP_ORIGIN] => [redacted]
[HTTP_REFERER] => [redacted]/add
[HTTP_USER_AGENT] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1
[PATH] => /bin:/usr/bin
[PHPRC] => [redacted]
[QUERY_STRING] =>
[REDIRECT_QUERY_STRING] => /add
[REDIRECT_STATUS] => 200
[REDIRECT_UNIQUE_ID] => UFJZCUoyAC0AAE5v7ps
[REDIRECT_URL] => /add
[REMOTE_ADDR] => [redacted]
[REMOTE_PORT] => 48098
[REQUEST_METHOD] => POST
[REQUEST_URI] => /add
[SCRIPT_FILENAME] => [redacted]/index.php
[SCRIPT_NAME] => /index.php
[SERVER_ADDR] => [redacted]
[SERVER_ADMIN] => [redacted]
[SERVER_NAME] => [redacted]
[SERVER_PORT] => 80
[SERVER_PROTOCOL] => HTTP/1.1
[SERVER_SIGNATURE] => <ADDRESS>Apache/1.3.42 Server at [redacted] Port 80</ADDRESS>
[SERVER_SOFTWARE] => Apache/1.3.42 (Unix) Sun-ONE-ASP/4.0.2 Resin/2.1.13 mod_fastcgi/2.4.6 mod_log_bytes/1.2 mod_bwlimited/1.4 mod_auth_passthrough/1.8 FrontPage/5.0.2.2635 mod_ssl/2.8.31 OpenSSL/0.9.7a
[UNIQUE_ID] => UFJZCUoyAC0AAE5v7ps
[PHP_SELF] => /index.php
[REQUEST_TIME] => 1347574025
[argv] => Array
(
[0] => /add
)
[argc] => 1
)
source d'informationauteur fredphp
Vous devez vous connecter pour publier un commentaire.
Question similaire déjà répondu ici:
PHP $_POST valeurs manquantes, mais sont présents dans php://input
et ici:
php://input <> $_POST?
php $_POST tableau vide lors de la soumission du formulaire
Je pense que PHP peut avoir un problème avec les fichiers d'entrées et de non-fichier d'entrées en utilisant le même POSTE subarray. I. e. avoir un upload de fichier appelé "la forme[image_name]" et d'autres champs de formulaire "[something_else] " ne fonctionne pas. Essayez avec un autre nom pour le champ d'envoi de fichier et voir si cela fonctionne.
PHP: les Pièges les plus Courants - les Uploads de Fichier
Rappelez-vous: lorsque vous lisez à partir des formes les entrées de nom est sensible à la casse!
Exemple:
Disons qu'il contient la valeur bob. Dans le fichier php que j'ai écrit:
Il ne lira rien, parce que pour l'interprète php bonjour n'est pas Bonjour - ce sont deux valeurs différentes des noms de champ/.
test.php
test2.php
var_dump($_POST)
Changé:
action="/add"
(qui ressemble à un répertoire pour moi, par la voie)
:
action="test2.php"
Qui Produit la sortie suivante:
array(1) { ["form"]=> array(9) { ["name"]=> string(0) "" ["description"]=> string(0) "" ["date"]=> string(0) "" ["hr"]=> string(0) "" ["min"]=> string(0) "" ["ampm"]=> string(2) "am" ["email"]=> string(0) "" ["zipcode"]=> string(0) "" ["radius"]=> string(0) "" } }
Essayer d'envoyer la sortie vers un autre script que j'ai.e
"test2.php"
J'ai lu vous avez dit: "Pas de changement. J'utilise codeigniter, j'ai donc le standard 301 dans un htaccess." quelque part. Si vous utilisez 301, vous êtes redirigé de façon PERMANENTE (et parfois "pour toujours"). Vérifiez vos navigateurs réponse du serveur (essayer de preserver journal) et de voir si votre post est redirigé. Si oui, votre message données seront perdues.
Comment préserver publier des données via une requête ajax après une .htaccess de redirection?
Modifier/ajouter' avec le nom de la page cible: example.php