php[world] 2019 — 25 years of PHP

$_GET

$HTTP_GET_VARS [veraltet, nicht empfohlen]

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

$_GET -- $HTTP_GET_VARS [veraltet, nicht empfohlen]HTTP GET-Variablen

Beschreibung

Ein assoziatives Array von Variablen, die dem aktuellen Skript mittels der URL-Parameter (dem Query-String) übergeben werden. Es ist zu beachten, dass das Array nicht nur für GET-Anfragen gefüllt wird, sondern für alle Anfragen mit einem Query-String.

$HTTP_GET_VARS enthält anfangs dieselben Informationen, ist aber kein Superglobal. (Beachten Sie, dass $HTTP_GET_VARS und $_GET unterschiedliche Variablen sind und von PHP daher entsprechend behandelt werden.)

Beispiele

Beispiel #1 $_GET-Beispiel

<?php
echo 'Hallo ' htmlspecialchars($_GET["name"]) . '!';
?>

Angenommen, der Benutzer gab ein http://example.com/?name=Hannes

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

Hallo Hannes!

Anmerkungen

Hinweis:

Dies ist eine 'Superglobale' oder automatisch globale Variable. Dies bedeutet, dass sie innerhalb des Skripts in jedem Geltungsbereich sichtbar ist. Es ist nicht nötig, sie mit global $variable bekannt zu machen, um aus Funktionen oder Methoden darauf zuzugreifen.

Hinweis:

Die GET-Variablen werden automatisch mit urldecode() behandelt.

add a note add a note

User Contributed Notes 4 notes

up
205
John Galt
9 years ago
Just a note, because I didn't know for sure until I tested it.

If you have a query string that contains a parameter but no value (not even an equals sign), like so:
http://path/to/script.php?a

The following script is a good test to determine how a is valued:
<pre>
<?php
print_r
($_GET);
if(
$_GET["a"] === "") echo "a is an empty string\n";
if(
$_GET["a"] === false) echo "a is false\n";
if(
$_GET["a"] === null) echo "a is null\n";
if(isset(
$_GET["a"])) echo "a is set\n";
if(!empty(
$_GET["a"])) echo "a is not empty";
?>
</pre>

I tested this with script.php?a, and it returned:

a is an empty string
a is set

So note that a parameter with no value associated with, even without an equals sign, is considered to be an empty string (""), isset() returns true for it, and it is considered empty, but not false or null. Seems obvious after the first test, but I just had to make sure.

Of course, if I do not include it in my browser query, the script returns
Array
(
)
a is null
up
10
timberspine _AT_ gmail _DOT_ com
11 years ago
Note that named anchors are not part of the query string and are never submitted by the browser to the server.

Eg.
http://www.xyz-abc.kz/index.php?title=apocalypse.php#doom

echo $_GET['title'];

// returns "apocalypse.php" and NOT "apocalypse.php#doom"

you would be better off treating the named anchor as another query string variable like so:
http://www.xyz-abc.kz/index.php?title=apocalypse.php&na=doom

...and then retrieve it using something like this:
$url = $_GET['title']."#".$_GET['na'];

Hope this helps someone...
up
3
chris at bjelleklang dot org
8 years ago
Please note that PHP setups with the suhosin patch installed will have a default limit of 512 characters for get parameters. Although bad practice, most browsers (including IE) supports URLs up to around 2000 characters, while Apache has a default of 8000.

To add support for long parameters with suhosin, add
suhosin.get.max_value_length = <limit> in php.ini
up
-6
whatchildisthis
10 months ago
The variable name $_GET is a bit misleading. It works with any HTTP request method that has a query component in the URI: GET, POST, PUT, PATCH, DELETE. A better name would be $_QUERY, similar to http_build_query and PHP_URL_QUERY in parse_url.
To Top