Variablen aus URL auslesen
Anonym
- php
0 Linuchs
Hallo liebe Community,
ich habe eine Frage zu PHP.
Wie kann ich aus einer URL die Variablen auslesen die vorhanden sind und in eine Variable bzw. Array schreiben.
Also z.B. blablabla.php?VAR=1
Und dann soll VAR in einen Array bzw. eine Variable geschrieben werden
Danke und schon einmal eine besinnliche Vorweihnachtszeit.
Wie kann ich aus einer URL die Variablen auslesen die vorhanden sind und in eine Variable bzw. Array schreiben.
Also z.B. blablabla.php?VAR=1
Wenn du Variablen mit bestimmten Namen erwartest, kannst du sie so ansprechen:
$_GET['VAR']
Und dann soll VAR in einen Array bzw. eine Variable geschrieben werden
$arr_VAR[] = $_GET['VAR'];
$VAR = $_GET['VAR'];
Wenn du aber ermitteln möchtest, welche Variablen-Namen überhaupt gegeben sind, ist $_SERVER['argv'] dein Freund:
Array der an das Skript übergebenen Argumente. Wenn das Skript auf der Kommandozeile ausgeführt wird, erhalten Sie auf diesem Weg einen an die Sprache C angelehnten Zugriff auf die Kommandozeilenparameter. Wird das Skript via GET aufgerufen, enthält die Variable den Querystring.
Linuchs
Lieber Linuchs,
Wenn du aber ermitteln möchtest, welche Variablen-Namen überhaupt gegeben sind, ist $_SERVER['argv'] dein Freund:
wenn man explizit auf $_GET-Parameter aus ist, geht auch array_keys($_GET), im Falle von $_POST analog array_keys($_POST). Wenn egal ist, welche Request-Methode verwendet wurde, geht auch $_REQUEST, wobei hier Parameter "überschrieben" werden könnten, wie folgendes Beispiel vielleicht klarer machen kann:
POST /path/script.php?a=1&b=2
a=Adam
b=Eve
Die geposteten Daten stören sich mit den URL-Parametern ($_POST['a'] und $_GET['a'] stören sich). Welche in $_REQUEST['a'] bzw. $_REQUEST['b'] landen, hängt von einer PHP-Einstellung ab.
Liebe Grüße,
Felix Riesterer.
Tach!
Wie kann ich aus einer URL die Variablen auslesen die vorhanden sind und in eine Variable bzw. Array schreiben.
Also z.B. blablabla.php?VAR=1
Wenn du Variablen mit bestimmten Namen erwartest, kannst du sie so ansprechen:
$_GET['VAR']
Und wenn er sie nicht weiß, so kann zumindest die Frage interpretiert werden, dann sollte er sich mit den Array-Funktionen von PHP vertraut machen, denn $_GET ist in der Hinsicht ein ganz normales Array.
Und dann soll VAR in einen Array bzw. eine Variable geschrieben werden
$arr_VAR[] = $_GET['VAR'];
$VAR = $_GET['VAR'];
Das ist unnötig, die Werte stehen bereits gebrauchsfertig in $_GET.
Wenn du aber ermitteln möchtest, welche Variablen-Namen überhaupt gegeben sind, ist $_SERVER['argv'] dein Freund:
Array der an das Skript übergebenen Argumente. Wenn das Skript auf der Kommandozeile ausgeführt wird, erhalten Sie auf diesem Weg einen an die Sprache C angelehnten Zugriff auf die Kommandozeilenparameter. Wird das Skript via GET aufgerufen, enthält die Variable den Querystring.
Darauf sollte man sich nicht verlassen, denn das Befüllen von $_SERVER['argv'] kann deaktivert werden. Den Querystring sollte man besser in $_SERVER['QUERY_STRING'] erwarten. Und außerdem muss man in beiden Fällen erst noch einen Querystring-Parser ansetzen. Aber wozu den Aufwand betreiben, wenn alles schon fertig in $_GET steht?
Es ist überhaupt bedenklich, wenn man auf Dinge zugreifen will, von denen man zum Zeitpunkt des Programmierens nicht weiß, welche überhaupt vorhanden sind. Das hört sich sehr stark nach Designfehler an.
dedlfix.
Hallo!
Aber wozu den Aufwand betreiben, wenn alles schon fertig in $_GET steht?
Eventuell um Links zu basteln?
Es ist überhaupt bedenklich, wenn man auf Dinge zugreifen will, von denen man zum Zeitpunkt des Programmierens nicht weiß, welche überhaupt vorhanden sind. Das hört sich sehr stark nach Designfehler an.
Wie gehst du denn vor wenn du einen query-string manipulieren willst?
Sicher ist es einfach das $_GET-array zu manipulieren aber irgendwann will man es auch wieder als query an eine URL hängen und da bietet sich die Manipulation des query-strings an. Natürlich auf Basis von $_GET aber ohne eine Funktion die das dann alles auseinander klamüsert und wieder als Parameter an eine URL hängt, doch sehr mühsam.
Query-strings sollte imho nicht über $_GET bearbeitet werden. Da gibt es schönere Herangehensweisen. Z.B. über $_SERVER['QUERY_STRING'].
Grüße, Matze
Tach!
Wie gehst du denn vor wenn du einen query-string manipulieren willst?
Ich manipuliere keine Querystrings, ich erzeuge Links aus den dafür notwendigen Werten, die bei der Datenverarbeitung ermittelt worden sind. Eine Hilfsfunktion dafür ist http_build_query().
dedlfix.