J'ai un problème étrange avec mes données $_POST qui n'aboutissent pas. Tout d'abord, cela fonctionne bien sur mon hôte local, mais pas sur mon 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="hero@voterides.com"/>
</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>
Le problème est qu'après avoir soumis le formulaire, je n'ai pas de données $_POST. Si je fais echo serialize($_POST);
J'obtiens a:0:{}
. Cependant, si je le fais, echo file_get_contents('php://input');
J'obtiens le résultat 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--
De plus, et c'est plus étrange, si je réduis le formulaire à seulement 3 éléments, il fonctionne. N'importe quels 3 éléments conviennent, mais 4 et cela ne fonctionne pas. En outre, d'autres formulaires sur le site (avec plus de 3 éléments) fonctionnent parfaitement. Il n'y a que celui-là.
Voici quelques paramètres PHP de mon hébergeur mutualisé :
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
S'il s'agit d'un paramètre du serveur, avez-vous une idée de ce que cela pourrait être ? Il semble que ce soit un problème de taille, mais il n'y a tout simplement pas beaucoup de données transmises (toutes ces valeurs sont petites).
J'ai un htaccess, mais je ne pense pas que ce soit lié (j'utilise codeigniter, et c'est le htaccess standard de CI, et mes autres formulaires se soumettent sans problème) :
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é pour des raisons de sécurité) :
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
)