Vorsicht bei der php-Funktion http_build_query()
Published 2006-07-14, 17:59
Die Funktion http_build_query() kann ab PHP5 dazu benutzt werden aus Arrays einen URL-enkodierten String zu machen. Das ist toll. Vorher musste man sich das selber schreiben:
function http_build_query($formdata, $numeric_prefix = "") {
$arr = array();
foreach ($formdata as $key => $val)
$arr[] = urlencode($numeric_prefix.$key)."=".urlencode($val);
return implode($arr, "&");
}
Aufpassen sollte man jedoch, dass der Parameter „arg_separator.output“ in der php.ini wirklich auf „&“ und nicht auf „&“ eingestellt ist – die angefragten Server nehmen einem das sehr übel. Zusätzlich entdeckt man es im Output des Query-Strings im Browser nicht.
Warum ich das erzähle? Ich habe heute fast eine ganze Stunde damit verbracht. Klasse.
( 1 )
Und warum nicht so?
function http_build_query($formdata, $numeric_prefix = „“) {
$arr = array();
foreach ($formdata as $key => $val)
$arr[] = urlencode($numeric_prefix.$key).“=“.urlencode($val);
return implode($arr, ini_get(„arg_separator.output“));
}
Comment von NoBody am 20. Juli 2006
( 2 )
Die Funktion oben ist für PHP < 5 gedacht und ist für Queries die in HTML-Requests genutzt werden sollen absolut geeignet, das & ist ja direkt in der Funktion In PHP5 gibt es diese Funktion von Haus aus schon, aber eben mt dem arg_separator.output als Trenner. Und wenn dieser nicht & lautet bekommt man Probleme wenn man das Query direkt in POST oder GET-Anfragen nutzen möchte.
Comment von Jan am 20. Juli 2006
( 3 )
testest du dein zeug eigentlich bevor du es postest? wäre mal angebracht!
Comment von Besserwisser am 7. September 2007
( 4 )
Lieber anonymer Besserwisser, wo liegt das Problem?
Comment von Jan am 19. September 2007