Vorsicht bei der php-Funktion http_build_query()

Veröffentlicht am 14.7.2006, 17:59 Uhr

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.

Thema: PHP 4 Kommentare - :)

Diskussion zum Artikel

» Selbst kommentieren

  1. ( 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”));
    }

    Kommentar by NoBody am 20. Juli 2006

  2. ( 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.

    Kommentar by Jan am 20. Juli 2006

  3. ( 3 )

    testest du dein zeug eigentlich bevor du es postest? wäre mal angebracht!

    Kommentar by Besserwisser am 7. September 2007

  4. ( 4 )

    Lieber anonymer Besserwisser, wo liegt das Problem?

    Kommentar by Jan am 19. September 2007

Entschuldige, das Kommentarformular ist zurzeit geschlossen.

Googlebot visited this page Montag, 21. Mai 2012, 02:13:30
9 queries. 0,469 seconds.