link mit php in externer datei im iframe öffnen
Andreas
- php
hallo! ich habe folgendes problem. vor ein paar wochen bekam ich diesen tipp (bzw. code). allerdings wende ich ihn wohl falsch an.
ich will einen link von a.html in einem iframe in b.php öffnen.
so sieht der code in b.php aus:
<?php
$allowed_pages=array(1=>"test/1.html", 2=>"test/2.html");
if(in_array($_GET['s'], array_keys($allowed_pages)))
{
//alles ok!
$page=$allowed_pages[$_GET['s']];
}
else{
//ungültige ID, oder keine ID übergeben!
//Ersatzseite anzeigen, beispielsweise a.html
$page='leer.html';
}
?>
<html>
<head>
<title>b.php</title>
</head>
<body>
<iframe width="100%" name="iframe" height="100%" id="iframe1" frameborder="0" scrolling="no" src="?=$page"></iframe>
</body>
</html>
in a.html habe ich folgenden link gesetzt:
<a href="b.php?s=test/1.html" target="_self" class="links">1.html</a>
als resultat erhalte ich die richtige seite, allerdings wird b.php im iframe wiederholt dargestellt und nicht meine gewünschte datei aus dem ordner "test".
kann mir da jemand weiterhelfen?
hi,
vor ein paar wochen bekam ich diesen tipp (bzw. code). allerdings wende ich ihn wohl falsch an.
Du solltest keinen Code benutzen, dessem Funktionsweise du überhaupt nicht verstanden hast.
$allowed_pages=array(1=>"test/1.html", 2=>"test/2.html");
if(in_array($_GET['s'], array_keys($allowed_pages)))
Hier müsste $_GET['s'] den Wert eines Elements aus $allowed_pages enthalten, damit in_array etwas finden könnte.
//alles ok!
$page=$allowed_pages[$_GET['s']];
Die verwendeten Indices im Array $allowed_pages lauten 1 und 2 - also kannst du auch nur diese benutzen, um auf ein Element dieses Arrays zuzugreifen.
Das widerspricht sich allerdings.
gruß,
wahsaga
hallo wahsaga,
die generelle funktionsweise wurde mir erklärt. ich habe sie auch verstanden, die detailarbeit blieb mir selbst überlassen. da ich noch keine großen erfahrungen in php habe, sind mir wohl einige fehler unterlaufen. das bitte ich zu entschuldigen!
Die verwendeten Indices im Array $allowed_pages lauten 1 und 2 - also kannst du auch nur diese benutzen, um auf ein Element dieses Arrays zuzugreifen.
demnach rufe ich in a.html keine direkte html-seite auf, sondern array 1 oder 2?
wo ist der widerspruch?
gruß, andreas
hi,
Die verwendeten Indices im Array $allowed_pages lauten 1 und 2 - also kannst du auch nur diese benutzen, um auf ein Element dieses Arrays zuzugreifen.
demnach rufe ich in a.html keine direkte html-seite auf, sondern array 1 oder 2?
wo ist der widerspruch?
Der Widerspruch ist, dass du den Wert "test/1.html" (und diesen nicht mal URL-gerecht kodiert) übergibst.
Ja, es existiert ein Element mit diesem _Wert_ im Array, das kann in_array also fein überprüfen.
Aber Nein, es existiert kein Element mit diesem Index/Key/Schlüssel im Array - aber mit $page=$allowed_pages[$_GET['s']]; wird versucht, auf ein solches zuzugreifen.
Aber wenn du gerade vorher überprüft hast, ob sich ein dir bekannter Werte im Array befindet - dann brauchst du ihn anschliessend nicht mehr aus dem Array zu holen versuchen, er ist dir ja schliesslich schon bekannt.
gruß,
wahsaga
Der Widerspruch ist, dass du den Wert "test/1.html" (und diesen nicht mal URL-gerecht kodiert) übergibst.
Ja, es existiert ein Element mit diesem _Wert_ im Array, das kann in_array also fein überprüfen.
Aber Nein, es existiert kein Element mit diesem Index/Key/Schlüssel im Array - aber mit $page=$allowed_pages[$_GET['s']]; wird versucht, auf ein solches zuzugreifen.
Aber wenn du gerade vorher überprüft hast, ob sich ein dir bekannter Werte im Array befindet - dann brauchst du ihn anschliessend nicht mehr aus dem Array zu holen versuchen, er ist dir ja schliesslich schon bekannt.
da ich ja noch in den anfängen stecke... habe ich mit dieser variante überhaupt die möglichkeit mein ziel zu erreichen? ursprünglich sollte mit dieser überprüfung gewährleistet werden, dass mein iframe geschützt vor fremden inhalten ist, so dass kein bösewicht andere inhalte in das iframe einladen kann.
also ist diese array-geschichte für das eigentliche ziel nicht erforderlich, aber sehr zu empfehlen.
eine klärende antwort wäre hilfreich.
Was sagt denn dein Quelltext im Browser?
src="?=$page"> sieht jedenfalls nicht nach gültigem PHP-Code aus.
Probiere src="<?php echo $page ?>">
Was sagt denn dein Quelltext im Browser?
src="?=$page"> sieht jedenfalls nicht nach gültigem PHP-Code aus.
Probiere src="<?php echo $page ?>">
oh die nachricht habe ich doch glatt übersehen! es funktioniert hiermit! wunderbar, aber was ist jetzt falsch oder unnötig am script?
vielen dank
oh die nachricht habe ich doch glatt übersehen! es funktioniert hiermit! wunderbar, aber was ist jetzt falsch oder unnötig am script?
Falsch ist, dass die Stelle zuvor nicht als PHP-Code interpretiert wurde. Durch <?php teilst du diesen Umstand dem Interpreter mit, durch ?> wird der Rest wieder als HTML betrachtet.
Grüße.