Achso, bisher habe ich einfach einen Link zum Beispiel so genannt: ...index.php?id='kontakt'..., und dann mit if den Inhalt abgefragt.
Bitte benutze keine Anführungszeichen in der Adresse. In PHP hilft Dir urlencode(), die Daten zu maskieren. Siehe auch den [pref:t=34030&m=185170] etwas weiter oben.
Das Problem tritt nun auf, wenn man beim ersten Aufruf nur index.php aufruft. Früher wurde nun im Script trotzdem $id abgefragt. Da es nicht existierte, wurde durch die IF Abfrage die Variable auf $id='' gesetzt.
Moment, wenn eine if-Abfrage eine Variable ändert und das nicht soll, dann benutzt Du den falschen Operator. Zum Prüfen auf Gleichheit wird == verwendet, das einfache = ist eine Zuweisung!
Das bedeutet PHP meldet einen Fehler, weil eine nicht existente Variable überprüft wurde. Ich muß also mindestens einmal die Variable definieren, und da lag mein Problem.
Diese Warnung kannst Du, wie hier bereits beschrieben, mit isset() umgehen.
Wenn ich versuche, die Seite über $_SERVER[...] anzusteuern, habe ich ein Problem. Das auslesen des PATH klappt, bloß wenn ich versuche einen Link wie index.php/kontakt auszuführen, meckert Apache. Ich denke, das Apache ein reales Verzeichnis KONTAKT sucht.
Nanu? Er sucht zwar "kontakt" und findet es nicht, wühlt sich dann aber weiter nach oben und stolpert über das Skript. Ansich sollte das also automatisch funktionieren, siehe http://kino-fahrplan.de/privat/st/self/index.php/tralala/blablabla. Das Skript enthält nur
<?php
phpinfo(INFO_VARIABLES);
?>
Als einzige Möglichkeit fällt mir da eine Webserver-Einstellung namens AcceptPathInfo ein (http://httpd.apache.org/docs-2.0/mod/core.html#acceptpathinfo). Gibt's aber erst beim (noch selten) vertretenen Apache 2.
Gruß,
soenk.e