PayPal-Beispielcode für einen Zuhörer PHP IPN hat diesen Kommentar/Code oben:Auf welche POST-Serialisierungsprobleme bezieht sich das Beispiel von PayPal 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]);
}
Kann jemand erklären, was Serialisierung Probleme dieser Kommentar bezieht sich auf? Während ich es so mache, würde ich mich wohler fühlen, wenn ich weiß, warum es so gemacht werden sollte.
Nicht sicher, was das im Zusammenhang bedeutet, aber '$ _POST' enthält nicht immer das gleiche wie' php: // input'. Zum Beispiel: 'key = val1 & key = val2' führt nur zu einem Eintrag für' key' im Array '$ _POST'. Und auch "php: // input" ist schreibgeschützt, während "$ _POST" nicht lesbar ist. –
Mit Blick auf eine Testseite, die ich aufgestellt habe, würde das '$ raw_post_array' tatsächlich beide' Schlüssel' Einträge in einem indizierten Array enthalten. Der Rest des Beispielcodes analysiert jedoch die Rohdaten in einem Array. Vergleicht man die beiden Arrays, so ist ihr benutzerdefiniertes Array '$ myPost' identisch mit $ _POST. zB: den zuletzt deklarierten '$ key = 'val2'' zu behalten. –
Warum in der * Welt tun sie das, anstatt nur ['parse_str'] (http://php.net/parse_str) zu verwenden? Könnten sie sich auf etwas Seltsames beziehen, das es tut? Es verwendet den gleichen Code, der '$ _GET' und' $ _POST 'schließlich generiert ... – Charles