[PHP] Überprüfung auf Frame

Carny

Well-known member
ID: 171941
L
25 April 2006
2.025
78
Hallo,

ich stehe im Moment vor folgendem Problem:

Ich habe 2 Dateien, eine index.php und eine index2.php. Die index.php beinhaltet die index2.php in einem Frame. Jetzt soll die index2.php überprüfen, ob die Datei wirklich in dem Frame aufgerufen wurde, und anhand dessen 2 unterschiedliche Sachen ausgeben.

Bis jetzt bin ich soweit, das ich die Entscheidung anhand des übergebenen Referrers machen lasse. Das heißt wenn an die index2.php der Referrer von der index.php übertragen wird, wird Content A, ansonsten Content B ausgegeben.

Allerdings lässt sich dies umgehen, indem man erst die index.php und dann die index2.php nacheinander im Browser aufruft. So wird auch der richtige Referrer übergeben und Content A wird angezeigt, was eigentlich nicht Sinn der Sache ist.

Jetzt meine Frage: Gibt es eine Möglichkeit zu überprüfen, ob die index2.php wirklich in dem Frame geladen wurde? Oder kann man einen direkten Zugriff auf die index2.php anders erkennen (wobei ich mir da nicht sicher bin, ob es im Frame auch noch geht)?

Hier noch Auszüge aus der index2.php:

PHP:
<html>
<body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0" scroll="no">
<p align="center">
<?
if(($_SERVER['HTTP_REFERER'] == "https://www.domain.de/" || $_SERVER['HTTP_REFERER'] == "https://domain.de/" || $_SERVER['HTTP_REFERER'] == "https://www.domain.de/index.php" || $_SERVER['HTTP_REFERER'] == "https://domain.de/index.php"))
  {
  echo "Content A";
  }
else
  {
  echo "Content B";
  }
?>
</p>
</body>
</html>

Vielen Dank im Voraus...

Gruß Carny
 
Jetzt meine Frage: Gibt es eine Möglichkeit zu überprüfen, ob die index2.php wirklich in dem Frame geladen wurde?
Nicht auf Serverseite, weil da noch kein Frameset existiert.
Du kannst, wie du schon probiert hast, den Referer benutzen. Den kann der Besucher aber via Browsereinstellungen unterdrücken/fälschen.

Eine andere Möglichkeit, die viele benutzen, auf Clientseite mit JavaScript überprüfen, ob das Frameset existiert. Stichwort "Framebreaker", nur ungekehrt. Auch hier kann via Browsereinstellung ganz einfach JavaScript oder Teile davon deaktiviert werden.

Du kommst so also auf keinen grünen Zweig.

Gehen wir mal anders vor:
Was ist in der index.php so wichtiges, dass sie auf alle Fälle ständig geladen sein muss ?
 
Nicht auf Serverseite, weil da noch kein Frameset existiert.
Du kannst, wie du schon probiert hast, den Referer benutzen. Den kann der Besucher aber via Browsereinstellungen unterdrücken/fälschen.

Eine andere Möglichkeit, die viele benutzen, auf Clientseite mit JavaScript überprüfen, ob das Frameset existiert. Stichwort "Framebreaker", nur ungekehrt. Auch hier kann via Browsereinstellung ganz einfach JavaScript oder Teile davon deaktiviert werden.

Du kommst so also auf keinen grünen Zweig.

Gehen wir mal anders vor:
Was ist in der index.php so wichtiges, dass sie auf alle Fälle ständig geladen sein muss ?

Hi,

kann man diese beiden Methoden nicht kombinieren?

Ich meine dabei folgdendes:

index2.php überprüft den Referer. Stimmt dieser, wird ein Javascript eingebunden. Das Javascript überprüft auf Frame, ist dieser vorhanden, gibt es Content A aus.

Problem dabei ist nur, das man Content A in das Javascript schreiben müsste, und es somit sichtbar wäre, aber ich denke mal das man das dann verschlüsseln kann.

Wie würde denn so eine Überprüfung auf ein Frame mittels Javascript aussehen?

Gruß Carny