przykładowy kod PayPal dla słuchacza PHP IPN ma ten komentarz/kod na górze:Jakie problemy z serializacją POST opisuje przykład PHP PHP IPN?
// 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]);
}
Może ktoś wyjaśnić jakie kwestie serializacji ten komentarz odnosi się do? Chociaż robię to w ten sposób, czułbym się bardziej komfortowo wiedząc, dlaczego tak powinno być.
Nie jestem pewien, co to oznacza w kontekście, ale '$ _POST' nie zawsze zawiera to samo co' php: // input'. Na przykład: 'key = val1 & key = val2' spowoduje tylko jedną pozycję dla' key' w tablicy '$ _POST'. Ponadto, 'php: // input' jest tylko do odczytu, natomiast' $ _POST' nie jest. –
Patrząc na stronę testową, którą podniosłem, na pewno '$ raw_post_array' zawierałby wpisy" key "w tablicy indeksowanej. Jednak reszta kodu przykładowego kończy przetwarzanie nieprzetworzonych danych do tablicy. Porównując dwie tablice, ich niestandardowa tablica 'myPost' jest identyczna z' $ _POST'. tj .: zachowywanie ostatniego zadeklarowanego '$ key = 'val2''. –
Dlaczego w * świecie * czynią to zamiast używać tylko '' parse_str'? (Http://php.net/parse_str)? Czy mogą odnosić się do czegoś dziwnego? Używa tego samego kodu, który generuje '$ _GET' i' $ _POST' po wszystkim ... – Charles