2012-02-29 29 views
20

Tôi có một biểu mẫu lớn và tôi có thể nhìn thấy từ firebug rằng tất cả các giá trị của các yếu tố được gửi đúng cách, nhưng khi tôi print_r ($ _ POST) chỉ có 1000 biến được hiển thị. My max_post_size được đặt thành 25M nên tôi biết đó không phải là vấn đề và tôi đã tìm kiếm thông qua php.ini của tôi cho các từ khóa như 'post' và 'max' và tôi không tìm thấy gì cả.php Post giới hạn 1000 biến

1000 chỉ khoảng 1/4 phần tử mà tôi chuyển qua vì vậy rõ ràng đây là vấn đề khá lớn đối với tôi, tôi thực sự đánh giá cao bất kỳ trợ giúp nào tôi có thể nhận được.

+13

Chỉ 1000 biến? –

+0

* (miệng) * MỘT THOUSAND? – MacMac

+2

Đó có thể là một hạn chế của giao thức HTTP (mặc dù tôi chưa từng nghe đến nó). Có cách nào bạn có thể giảm thiểu số lượng các biến được gửi trong POST của bạn không? Tôi chưa bao giờ nghe nói về một trang web có hơn 9000 (đã được nói) POST biến. –

Trả lời

34

Tôi thấy những gì bạn đã làm ở đây.

max_input_vars, 1000 

Được giới thiệu vào để ngăn chặn va chạm băm tấn công: http://www.phpclasses.org/blog/post/171-PHP-Vulnerability-May-Halt-Millions-of-Servers.html Nhưng thất bại trong 5.3.9: http://www.phpclasses.org/blog/post/175-Another-Serious-Security-Bug-on-PHP-539.html Vì vậy, bạn nên cập nhật để 5.3.10+ nếu đó là vấn đề.

+2

Có thể là 'suhosin.post.max_vars = 1000' (nếu anh ta sử dụng Suhosin, dĩ nhiên). – Crontab

+0

@Crontab, có thể, bạn nói đúng, nhưng tất cả các công ty lưu trữ nên đã cập nhật lên 5.3.10+ :) –

+0

Tôi thấy rằng về các cài đặt max_input_vars và suhosin.post.max_vars nhưng không có trong php.ini của tôi. Tôi đã cài đặt 5.3.6. – jreed121

6

Tôi đã có một tình huống tương tự; Tôi chỉ có thể POST 1000 phần tử đầu tiên của một mảng.

Giải pháp của tôi là để implode() mảng thành một chuỗi dài và explode() nó ở phía máy chủ.

json_encode() cũng có thể hoạt động tốt.

7

Tôi đã có cùng một vấn đề tương tự với giới hạn 1000 biến bằng cách sử dụng PHP v5.4.20. Mặc dù tệp php.ini không chứa bất kỳ dòng 'max_input_vars' nào như vậy, tôi chỉ tìm thấy một vị trí thuận tiện để đặt nó trong phần [PHP] trên cùng, thêm dòng 'max_input_vars = 10000', khởi động lại Apache và mọi thứ đã được giải quyết .

0

Ok. Tôi đã tìm ra một giải pháp sử dụng jquery

tôi đã làm nó như chức năng này

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

serialize sẽ cung cấp cho các URL chuỗi mã hóa tất cả dữ liệu hình thức và trong file PHP chỉ cần sử dụng chức năng parse_str để phân tích chuỗi thành các biến.

Các vấn đề liên quan