PayPal của mã mẫu cho một người biết lắng nghe PHP IPN có nhận xét này/code ở đầu trang:Các vấn đề serialization POST nào ví dụ về PayPal IPN của PHP đề cập đến?
// reading posted data from directly from $_POST causes serialization
// issues with array data in POST
// reading raw POST data from input stream instead.
$raw_post_data = file_get_contents('php://input');
$raw_post_array = explode('&', $raw_post_data);
$myPost = array();
foreach ($raw_post_array as $keyval) {
$keyval = explode ('=', $keyval);
if (count($keyval) == 2)
$myPost[$keyval[0]] = urldecode($keyval[1]);
}
Ai đó có thể giải thích những vấn đề serialization nhận xét này đề cập đến? Trong khi tôi làm điều đó theo cách này, tôi sẽ cảm thấy thoải mái hơn khi biết tại sao nó phải được thực hiện theo cách này.
Không chắc chắn điều này có nghĩa là gì trong ngữ cảnh, nhưng '$ _POST' không phải lúc nào cũng chứa cùng một thứ như' php: // input'. Ví dụ: 'key = val1 & key = val2' sẽ chỉ dẫn đến một mục nhập cho' khóa' trong mảng '$ _POST'. Ngoài ra, 'php: // input' là chỉ đọc trong khi' $ _POST' thì không. –
Nhìn vào một trang thử nghiệm mà tôi đưa lên, chắc chắn rằng '$ raw_post_array' sẽ chứa cả hai mục' khóa', trong một mảng được lập chỉ mục. Tuy nhiên, phần còn lại của mã mẫu kết thúc phân tích cú pháp dữ liệu thô thành một mảng. So sánh hai mảng, các mảng '$ myPost' tùy chỉnh của chúng giống hệt' $ _POST'. tức là: giữ nguyên khai báo lần cuối '$ key = 'val2''. –
Tại sao trong thế giới * họ làm điều đó thay vì chỉ sử dụng ['parse_str'] (http://php.net/parse_str)? Có thể họ đang đề cập đến một cái gì đó kỳ lạ mà nó không? Nó sử dụng cùng một mã tạo ra '$ _GET' và' $ _POST' sau tất cả ... – Charles