$ _POST é dados vazios em PHP

Estou tendo um problema estranho com os meus $ _POST que os dados não estão chegando. Primeiro, isso funciona bem no meu host local, mas não funciona no meu host compartilhado na web. Aqui está o formulário:

Name :
Description :
Logo:
Date : Time : : AMPM
Your Email :
Zip code : Radius : mi

O problema é que, depois de enviar o formulário, não tenho dados $ _POST. Se eu fizer echo serialize($_POST); Recebo a:0:{} . No entanto, se eu fizer, echo file_get_contents('php://input'); Eu recebo o seguinte:

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

Além disso, e mais estranho, se eu tomar o formulário para apenas 3 elementos, ele funciona. Todos os 3 elementos estão bem, mas 4 e não funciona. Além disso, outros formulários no site (com mais de 3 elementos) funcionam bem. É só este.

Aqui estão algumas configurações relevantes do PHP do meu host compartilhado:

 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 

Se é uma configuração do servidor, alguma idéia do que poderia ser? Parece uma questão de tamanho, mas não há tantos dados passados ​​(todos esses são valores pequenos).

Eu tenho um htaccess, mas eu não acho que está relacionado (eu estou usando o codeigniter, e é o htaccess IC padrão, e meus outros formulários enviam um ok):

 AddDefaultCharset UTF-8  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]  

Aqui é o que print_r ($ _ SERVER) produz (um pouco expurgado por causa da segurança):

 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] => 
Apache/1.3.42 Server at [redacted] Port 80
[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 )

Uma pergunta semelhante já foi respondida aqui:

PHP alguns valores $ _POST em falta, mas estão presentes na input php: //

e aqui:

php: // input <> $ _POST?

php $ _POST array vazio após a apresentação do formulário

Eu acho que o PHP pode ter um problema com inputs de arquivos e inputs não-arquivos usando o mesmo subarray POST. Ou seja, ter um upload de arquivo chamado ‘form [image_name]’ e outros campos chamados ‘form [something_else]’ não funcionam. Experimente com um nome diferente para o campo de upload do arquivo e veja se ele funciona.

PHP: armadilhas comuns – arquivos uploads

Lembre-se: quando você lê dos formulários, o nome das inputs é sensível a maiúsculas e minúsculas. Exemplo:

 

Digamos que ele contém o valor bob . No arquivo php eu escrevi:

 < ? $var = $_POST['Hello']; ?> 

Não vai ler nada, porque para o intérprete php, oi não é Hello – esses são dois valores diferentes / nomes de campo.

  1. Eu corri esse formulário no meu servidor e funcionou sem problemas.
  2. test.php o formulário para test.php
  3. Enviado formdata para test2.php
  4. Exibição exibida com var_dump($_POST)
  5. Alterado: action="/add" (que parece um diretório para mim, por sinal)

    Para: action="test2.php"

  6. Qual produziu a seguinte saída:

    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) "" } }

Tente enviar saída para um script diferente, ou seja, "test2.php"

Eu leio você comentou: “Sem mudança. Estou usando o codeigniter, então eu tenho o padrão 301 em um htaccess”. algum lugar. Se você usar o 301, você está sendo redirecionado PERMANENTEMENTE (e às vezes “para sempre”). Verifique a resposta do seu navegador do servidor (tente manter o log) e veja se sua publicação está sendo redirecionada. Se assim for, seus dados POST serão perdidos.

Como preservar os dados POST via ajax após um redirecionamento .htaccess?

 

Altere a parte '/ add' com o nome da página de destino: example.php