Links in PHP
Lennart
- php
Hallo,
ich habe ein ziemliches Problem.
Ich habe meine Seite eigentlich nur in Frames aufgebaut bin jetzt aber auf php mit include umgestiegen.
Also habe ich in meiner index Datei die Seiten included wie vorher in den Frames (die übrigens in einer Tballe waren).
Nur jetzt habe ich das Problem das die Links, aus einer Seite die ich in meiner index Seite include (eine .php Seite die aber fast nur html enthält), nicht mehr funktionieren. Wenn ich aber meine index datei wiedermit Frames und daher nur mit html mache gehen die Links wieder.
Hat jemand vielleicht eine Lösung für mich?
Grüße Lennart
Hallo
Also habe ich in meiner index Datei die Seiten included wie vorher in den Frames (die übrigens in einer Tballe waren).
Nur jetzt habe ich das Problem das die Links, aus einer Seite die ich in meiner index Seite include (eine .php Seite die aber fast nur html enthält), nicht mehr funktionieren. Wenn ich aber meine index datei wiedermit Frames und daher nur mit html mache gehen die Links wieder.
Hat jemand vielleicht eine Lösung für mich?
Lasse die Links auf das richtige Ziel weisen.
Mache dir klar, dass PHP keine Links kennt, sondern dass du mit PHP einen HTML-Quelltext zusammenstückelst. Der sollte _ein_ vollständiges HTML-Dokument sein -nicht, dass du einfach die Seiten der Frames vollständig (inklusive <head>
u.s.w.) per PHP einbindest- und die Links zeigen vom generierten HTML-Dokument aus auf die jeweiligen Ziele.
Will sagen, alle Pfade in Dateien, die mit include
eingebunden werden, müssen von der einbindenden Datei (in der include
aufgerufen wird) aus gültig sein.
Tschö, Auge
Hi,
warte ich versuchs mal anders. Also ich habe in meiner index Datei 3 seiten included. In einer davon ist meine Navigationsleiste. Da sind selbstverständlich Links die vorher Seiten in einem anderem Frame öffneten. Jetzt möchte ich aber das sich die neue Seite an die Stelle der bereits im Index includedten Datei schiebt.
Hoffe du kannst mir helfen.
Gruß lennart
Hallo
warte ...
Ich warte. ;-)
... ich versuchs mal anders. Also ich habe in meiner index Datei 3 seiten included. In einer davon ist meine Navigationsleiste.
Ich hoffe, du bindest nur die Navigation ansich ein, nicht das ganze HTML-Dokument.
Also nicht:
<DOCTYPE ...>
<html>
<head>
<title>Navigation</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<ul>
<li><a href="#">Linktext 1</a></li>
<li><a href="#">Linktext 2</a></li>
</ul>
</body>
</html>
sondern:
<ul>
<li><a href="#">Linktext 1</a></li>
<li><a href="#">Linktext 2</a></li>
</ul>
Da sind selbstverständlich Links die vorher Seiten in einem anderem Frame öffneten. Jetzt möchte ich aber das sich die neue Seite an die Stelle der bereits im Index includedten Datei schiebt.
Du willst alle Seiten in _einem_ Dokument öffnen, also nur den Inhaltsbereich austauschen?
Dann musst du den Links eine Information über den zu ladenden Inhalt mitgeben. Die zu ladende Seite ist ja immer die Gleiche (z.B. index.php). Der Link hat also immer dieses Ziel: <a href="index.php">Linktext</a>
. Die Information muss nun als GET-Parameter an das Linkziel angehängt werden, z.B. mit Namen "site". Das sähe dann so aus: <a href="index.php?site=...">Linktext</a>
.
Die Werte des Parameters kann man nach verschiedenen Systemen benennen. Man kann die zu ladenden Bereiche nummerieren (<a href="index.php?site=12">Linktext</a>
), was den Nachteil hat, dass man selbst oder die Besucher eventuell verwirrt werden oder man benutzt sprechende Namen (<a href="index.php?site=impressum">Impressum</a>
).
Wichtig ist, dass man die Werte gewissenhaft prüft. Sie stammen vom Benutzer und können von diesem beliebig geändert werden. Man darf diesen Werten also _nie_ weiter trauen, als man sie werfen kann.
Deshalb prüft man sie gegen eine Liste der erlaubten Werte. Diese kann man in einem Array ablegen.
// Liste der erlaubten Werte fuer $_GET["site"]
$navigationsziele = array(
"startseite",
"neues",
"impressum",
"kontakt");
Die Prüfung sähe dann so aus:
// Abfrage: ist $_GET["site"] gesetzt und ist der
// uebermittelte Wert im Array $navigationsziele vorhanden
if (isset($_GET["site"] and in_array($_GET["site"],$navigationsziele))
{
// Die Pruefung wurde bestanden und der Wert von $_GET["site"]
// wird ausgelesen, um die zu ladende Seite auszuwählen.
}
else
{
// Die Pruefung wurde nicht bestanden.
// Eine Standardseite (Startseite?) wird geladen.
include("/pfad/zur/startseite.php");
}
Tschö, Auge
Hi,
danke für deine Geduld Auge. ;)
Also die Dateien sind alle .php falls das relevant ist.
Dann ist mir dein Script noch ein bisschen unklar. Also die Dateien sollen ja in der Index Seite geladen werden wie soll das daher funktionieren? Wo muss ich dann die "Prüfung" unterbringen damit es funktioniert denn bei mir tut sich nichts xD außer einer Fehlermeldung.
Also meine Index Seite ist in Tabellen geliedert wo sich vorher iframes befanden und statt frames sind da jetzt die php include dateien.
Freue mich auf deinen nächsten Beitrag :)
Gruß Lennart
Also die Dateien sind alle .php falls das relevant ist.
Relevant wäre etwas Quelltext und eine URL um sich das Ganze mal ansehen zu können.
Deine Ausführungen ermöglichen maximal Spekulationen.
Hi,
// Die Pruefung wurde nicht bestanden.
// Eine Standardseite (Startseite?) wird geladen.
auch wenn das von Anfängern häufig so gemacht wird, wäre das sehr unsauber. Korrekt wäre die Auslieferung einer Fehlerseite - und zwar mit dem entsprechenden Fehlercode 404 Not Found. Damit dieser Header gesendet werden kann, muss sich die Programmlogik natürlich an das EVA-Prinzip halten und die Auswertung _vor_ jeglicher Ausgabe erfolgen.
freundliche Grüße
Ingo
Hi,
hab jetzt mal den link gepostet, hoffe das hilft.
Und macht euch bitte nicht lustig über die hp xD.
Hi,
tut mir echt leid leute. Hab nen Fehler gemacht die richtige url wäre diese das is die alteund falsche inde datei.
Griße Lennart
Fehler: Verbindung fehlgeschlagen
Iceweasel kann keine Verbindung zu dem Server unter www.avatar-hp.dyndns.org aufbauen.
Irgendwie komm ich mir etwas verarscht vor ...