PHP/Erweiterte Techniken (URL- und Form-Rewrite)
URL- und Form-Rewrite
URL-Rewrite-Techniken sind seit den erste Tagen des Apache HTTP Servers bekannt. Dabei werden die im URL sichtbaren Variablen vor der Weitergabe an ein aufrufendes Skript verändert. Der Vorteil besteht in einer Verschleierung der Absicht der URL und ist damit Teil eines Sicherheitskonzepts. Teilweise dient es auch einfach nur der Vereinfachung der Programmierung.
Die Beschränkung auf den Apache HTTP-Server ist allerdings eine Einschränkung der Verwendung. Da letztlich keine vollständige Kontrolle des Webservers erfolgen kann (wie es das integrierte Rewriter-Modul ermöglicht), ist PHP5 nur bedingt als Ersatz geeignet.
URL-Rewriting mit PHP5
Das folgende Beispiel zeigt, wie die Rewrite-Technik in einem Skript eingesetzt werden kann.
<?php
## Name get_rewriter.php
output_add_rewrite_var("sid", "A462CB39FE8C51A");
?>
<html>
<head>
<title>Rewriter</title>
</head>
<body>
<h3>Rewriter-Test</h3>
<p><a href="<?=$_SERVER['PHP_SELF']?>">Restart</a></p>
</body>
</html>
<?php
if (count($_GET) > 0)
{
foreach($_GET as $var => $val)
{
echo "<tt>$var => $val</tt><br />";
}
}
?>
|
Rewriter-TestRestart email => Jürg\'s E-Mail? |
Wie auch immer die Links gestaltet sind, man muss sich nun nicht mehr darum kümmern, wie diese um die entsprechenden "GET"-Parameter erweitert werden. Dies erledigt die Funktion "output_add_rewrite_var". Der erzeugte URL sieht dann wie folgt aus.
http://<pfad>/get_rewriter.php?sid=A462CB39FE8C51A
Form-Rewriting
Analog zum Erweitern des URL werden die erfassten Werte auch benutzt, um ein Formular zu erweitern. Der Wer wird dort durch das Einfügen eines versteckten ("hidden") Felds dargestellt.
Registrierte Werte wieder entfernen
Um registrierte Werte wieder zu entfernen, wird die Funktion "output_reset_rewrite_vars" verwendet, welche alle registrierten Werte zugleich entfernt. Dabei ist zu beachten, dass auch andere Funktionen (z. B. die Session-Verwaltung) Werte an den URL anhängen und dass diese ebenso entfernt werden.