In diesem Kapitel möchte ich mich mit dem Thema der Variablenübergabe mit $_GET beschäftigen. Im Gegensatz zur Übergabe mit $_POST wird bei $_GET die Variable und deren Wert direkt mit der URL übergeben. Die Übergabe erfolgt hierbei durch anhängen der Variablen an die URL.
Diese Übergabemethode bietet sich vor allem dann an, wenn Variablen durch den Aufruf einer URL übergeben werden sollen. Das Problem an dieser Übergabemethode ist, dass die Variable sehr leicht durch dritte beeinflusst werden kann und somit stet auf Inhalt geprüft werden muss, um Attacken auf Ihr Skript zu vermeiden.
Ein Beispiel für den Aufbau der URL mit Variablenübergabe:
datei.php?variable1=variable1&variable2=variable2&....
Um die Variable in der Zieldatei entgegen zu nehmen nutzen wir $_GET. Dabei lesen wir die Variablen wie folgt aus:
$variable1 = $_GET['variable1'];
$variable2 = $_GET['variable2'];
Sobald mit $_GET Sonderzeichen bzw. alphanumerische Zeichen oder Strings, welche aus mehreren Wörtern bestehen, übergeben werden sollen muss die Variable in das so genannte URL Format kodiert werden. PHP hält für diese Kodierung der Variable bereits die Funktion urlencode($variable) und den Gegenspieler urldecode($variable) bereit.
Zur Veranschaulichung ein Beispiel:
<?php
$variable = '<b>HTML Code</b>';
$url = 'datei.php?variable='.urlencode($variable);
echo '<a href="'.$url.'">'.$url.'</a>';
?>
In diesem Beispiel soll die Variable $variable mit dem Wert '<b>HTML Code</b>' mit $_GET an eine die Datei datei.php übermittelt werden. Da unsere Variable Sonderzeichen (<b> und </b>) enthält, muss die Variable zur Übergabe mit $_GET umkodiert werden. Die Kodierung übernimmt die Funktion urlencode($variable), welche direkt in der $url verwendet wird.
Die Funktion urlencode() kodiert unseren String '<b>HTML Code</b>' zu: '%3cb%3eHTML+Code%3c%2fb%3e', welcher nun ohne Probleme an die URL angehängt übergeben werden kann. Um in der Datei datei.php die Variable aus der URL auszulesen verwendet man $_GET:
$variable = $_GET['variable'];
Sicher fällt Ihnen auf, dass der Variable $variable nun der Wert '%3cb%3eHTML+Code%3c%2fb%3e' zugeordnet wurde. Da dieser String für die Verwendung in PHP meist ungeeignet ist, kann mit der Funktion urldecode() der ursprüngliche String der Variablen wiederhergestellt werden:
$variable = urldecode($_GET['variable']);
Sie haben nun die Variable '<b>HTML Code</b>' erfolgreich mit urlencode() kodiert, mit $_GET übergeben und schließlich mit urldecode() wieder dekodiert.