Bei der automatischen Generierung von Daten kann es vorkommen, dass mehrere gleichlautende Variablen unterschiedliche Werte enthalten:
<a href="liste.php?x=1&x=2&x=3">Liste</a>
In diesem Fall extrahiert PHP nur die letzte Variable und den dazugehörigen Wert. Die Ausgabe von echo $x; würde im vorliegenden Beispiel 3 ausgeben. Wenn Sie sich jedoch alle Daten mithilfe von $QUERY_STRING ausgeben lassen,echo $_SERVER[QUERY_STRING];
werden Sie feststellen, dass tatsächlich sämtliche Daten übertragen wurden. Sie müssten in diesem speziellen Fall die Daten selbst mithilfe der Funktion explode() dekodieren. Die Funktion zerlegt eine Zeichenkette anhand eines Trennzeichens in ein eindimensionales Array. Anschließend erfolgt die nochmalige Trennung durch Gleichheitszeichen.
Beispiel – link.php
<html>
<head>
<title>Verweis</title>
</head>
<body>
<a href="liste.php?x=1&x=2&x=3">Liste</a>
</form>
</body>
</html>
Beispiel – liste.php
<?php
$daten = explode("&",$_SERVER[QUERY_STRING]);
foreach ($daten as $element) {
$werte[] = explode("=",$element);
}
foreach ($werte as $element) {
echo "$element[0]: $element[1]<br>";
}
?>
Ausgabe
x: 1
x: 2
x: 3
Hinweis: Sie sollten gleichnamige Variablen möglichst vermeiden und es erst gar nicht zu einer solchen Situation kommen lassen.