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.

Topic(s): PHP 4 comments - :)

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“));
    }

    Comment 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.

    Comment by Jan am 20. Juli 2006

  3. ( 3 )

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

    Comment by Besserwisser am 7. September 2007

  4. ( 4 )

    Lieber anonymer Besserwisser, wo liegt das Problem?

    Comment by Jan am 19. September 2007

Sorry, the comment form is closed at this time.

21 queries. 0,188 seconds.