PHP/Erweiterte Techniken (URL- und Form-Rewrite)

Aus Mikiwiki
< PHP
Zur Navigation springen Zur Suche springen

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-Test

Restart

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.