Ich versuche mit PHP übergebene Parameter auszuwerten. Mit $HTTP_SERVER_VARS[“QUERY_STRING”] werden sie mir geliefert – wenn ich nun aber eine Funktion aufrufe, die den Query String zurückgeben soll, bekomme ich gar nichts zurück.
[code]<?php
print($HTTP_SERVER_VARS[“QUERY_STRING”]); #=> artikel=Gurke&anzahl=6
print(get_query_string()); #=> Nichts!
function get_query_string()
{
return $HTTP_SERVER_VARS[“QUERY_STRING”];
}
?>[/code]
Warum funktioniert die Funktion nicht?
zvn
28. Februar 2010 um 19:46
2
Kurzgesagt, weil $HTTP_SERVER_VAR S veraltet (das heißt jetzt $_SERVER ) und nicht autoglobal ist.
Also entweder
<?php
// NICHT EMPFEHLENSWERT
function get_query_string()
{
global $HTTP_SERVER_VARS;
return $HTTP_SERVER_VARS["QUERY_STRING"];
}
?>
oder
<?php
//EDIT: BEDINGT EMPFEHLENSWERT (war vorher nur CopyPasta)
function get_query_string()
{
return $_SERVER["QUERY_STRING"];
}
?>
oder nochbesser
// Als Beispiel hier mit echo
echo $_SERVER['QUERY_STRING'];
Ah okay, danke.
Aber warum ist das zweite auch nicht empfehlenswert?
Da wird doch gar nichts globalized.
Balmung
28. Februar 2010 um 20:10
4
Weil eine extra Funktion, nur um diesen einen Wert zu ermitteln, überflüssig ist.
Flocke
28. Februar 2010 um 22:05
5
Aber, wenn sich das mal wieder ändert, braucht man nur einmal den return-Wert ändern