2012-02-29 5 views
20

큰 폼이 있는데 모든 요소의 값이 제대로 전송되고 있음을 알 수 있지만 print_r ($ _ POST)에는 1000 개의 변수 만 표시됩니다. 내 max_post_size는 25M로 설정되어 있으므로 문제가 아니며 php.ini에서 '게시'및 '최대'와 같은 키워드를 검색했습니다. 아무 것도 찾지 못했습니다.php Post 1000 변수로 제한

1000은 제가 지나가고있는 요소의 약 1/4에 불과하므로, 이것은 분명히 저에게 큰 문제입니다. 제가 얻을 수있는 도움에 정말 감사드립니다.

+13

변수가 1000 개입니까? –

+0

* (입) * 수천? – MacMac

+2

아마도 HTTP 프로토콜의 한계 일 겁니다. (들어 본 적이 없지만). POST에서 전송되는 변수의 수를 최소화 할 수있는 방법이 있습니까? 나는 POST 변수가 9000을 넘는 사이트에 대해 들어 본 적이 없다. –

답변

34

나는 당신이 여기서 한 것을 봅니다.

max_input_vars, 1000 

해시 충돌 공격을 방지하기 위해 도입 : http://www.phpclasses.org/blog/post/171-PHP-Vulnerability-May-Halt-Millions-of-Servers.html 을하지만 5.3.9에 실패 즉 문제가있는 경우 http://www.phpclasses.org/blog/post/175-Another-Serious-Security-Bug-on-PHP-539.html 그래서 당신은 5.3.10+를 업데이트해야합니다.

+2

'suhosin.post.max_vars = 1000'이 될 수도 있습니다 (물론 Suhosin을 사용하는 경우). – Crontab

+0

@Crontab, 맞을 수도 있지만 모든 호스팅 업체는 5.3.10+으로 업데이트해야합니다 :) –

+0

max_input_vars 및 suhosin.post.max_vars 설정에 대해 알았지 만 둘 다 php.ini에 없습니다. 나는 5.3.6을 설치했다. – jreed121

6

비슷한 상황이있었습니다. 배열의 처음 1000 개 요소 만 POST 할 수있었습니다.

내 솔루션은 implode()의 배열을 하나의 긴 문자열로, 서버 측은 explode()입니다.

json_encode() 일 수도 있습니다.

7

PHP v5.4.20을 사용하여 1000 가지 변수 한계와 정확히 같은 문제가있었습니다. php.ini 파일에 이러한 'max_input_vars'행이 없더라도 맨 위의 [PHP] 섹션 아래에 슬롯을 삽입하고 'max_input_vars = 10000'라인을 추가하고 Apache를 다시 시작한 후 모든 사항이 해결 된 편리한 장소를 찾았습니다 .

0

확인. 나는 해결책 사용 JQuery와

난 그냥 문자열을 구문 분석하는 기능 parse_str를 사용하는 URL 모든 형태의 데이터 및 PHP 파일의 인코딩 된 문자열을 줄 것이다이

$("#single-form").submit(function(event) { 
    event.preventDefault(); 
    var table_data = $(this).serialize(); 
    console.log(table_data); 
    // ajax call to handle the data 
} 

serialize 기능처럼 한을 알아 냈어요 변수로.