Du bist nicht angemeldet.

1

Freitag, 9. März 2012, 13:51

if loaded in iframe ??

Hallo zusammen,

mir stellt sich grade die Frage, ob es irgendwie möglich ist, mittels PHP (oder anderer Technik), zu überprüfen, ob meine .php Seite in einem iFrame geladen wurde?

In einem aktuellen Projekt möchte ich die "Contact Form" in einem iFrame Popup laden, funktioniert auch ganz gut, aber man hat natürlich immer noch die Möglichkeit, die Contact-Seite (sprich "contact.php") direkt in den Browser einzugeben, was ich aber aus vielen Gründen (Anti-Spam, Optimierung, etc..) gerne verhinden will...

Wie gesagt, eine Lösung mittels PHP wäre mir glaube ich am liebsten, bin aber offen für andere Vorschläge. Geplant ist, dass bei Eingabe direkt im Browser, eine Umleitung auf die Hauptseite veranlasst wird, gibt es da vielleicht ein paar Tricks?

Schöne Grüße!

2

Freitag, 9. März 2012, 14:17

Re: if loaded in iframe ??

Hey,

Prüfe dazu doch einfach ob die Seite erreichbar ist, weil wenn dein Script nocht noch irgendwas mit der Seite macht, gibt es ja nicht viel was das includieren verhindern könnte ;D

Hoffe es hilft.

Kanu

Basiii

Wachhund

Beiträge: 1 570

Wohnort: Schleswig Holstein

Beruf: Freiberuflich

  • Private Nachricht senden

3

Freitag, 9. März 2012, 14:18

Re: if loaded in iframe ??

Hier mal ein Beispiel, dieser Code gehört in die Datei welche in dem iFrame geladen wird:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

  if(isset($_SERVER['HTTP_REFERER'])):
    if(!strpos($_SERVER['HTTP_REFERER'], 'index.php')):
      header("Location: index.php");
      die();
    endif;
  else:
    header("Location: index.php");
    die();
  endif;

?>

Formular


Wenn die Datei nicht in einem iFrame auf der Seite index.php geladen wurde, so wird der Besucher zur index.php weitergeleitet.

Achtung: Du darfst nun auf deiner index.php auf keinen Fall auf die andere Datei verlinken, denn auch dann wird der Referer gesetzt, des Weiteren musst du den strpos Befehl erweitern, sonst kann ich auf meinem Desktop eine index.php erstellen und von dieser auf dein Formular verlinken, also erweiterst du das Ganze um den Servernamen:

PHP-Quelltext

1
2
strpos($_SERVER['SERVER_NAME'] ."/"$_SERVER['HTTP_REFERER'],  
         'www.meine-seite.de/index.php');


Da musst du ein bisschen herumprobieren ob du noch ein / einfügen musst und vor allem wie viel du prüfen darfst, vielleicht enthält dein Referer in dem Fall gar kein www. vor dem meine-seite.de

Hoffe ich konnte helfen, ansonsten frag ruhig nach.

Achtung²: Dieser Weg hält niemanden auf der ein bisschen Ahnung von der Materie hat, wenn ich wirklich auf deine Datei mit dem Kontaktformular zugreifen möchte schaffe ich das auch, Scriptkiddies und verirrte Benutzer hältst du so aber fern.

Achtung³: Da ich etwas unter Zeitdruck stehe kann es sein das ich kleine Fehler gemacht habe, aber das Prinzip sollte klar sein und du kannst einfach mal rumprobieren.

4

Freitag, 9. März 2012, 15:11

Re: if loaded in iframe ??

Danke für die Antworten...

Also zusammengefasst, es macht wenig Sinn da sowas in der Art einzubauen, da man trotzdem irgendwie noch darauf zugreifen kann?

Wie wäre es da mit einer .htaccess Umleitung, sobald <!-- w --><a class="postlink" href="http://www.webseite.de/contact.php">www.webseite.de/contact.php</a><!-- w --> eingegeben wird? Oder funktioniert dann auch nicht mehr der iFrame? Habs noch nicht getestet...

Intressant ist auch der HTTP_REFERER "index.php" im Beispiel, hab natürlich - wie sollte es anders sein? - den "Contact" Link im Footer eingebaut :D ... theoretisch ist das mit dem Referer dann nix, oder?

Aber wie schon geschrieben, die Frage ist eher ob es überhaupt Sinn macht, bzw eine sinnvolle Variante gibt, den direkten Zugriff einfach nur zu unterbinden, vor allem aus dem Grund da es optisch nicht sehr schön aussieht und ich natürlich auch nicht will dass Suchmaschinen die Seite irgendwie auflisten, bzw User diese in anderen Foren oder Communities direkt verlinken...

War nur so eine Idee, daher bitte kein Kopfzerbrechen, hab auch kompliziertere Fragen wenn gewünscht ;-)

Basiii

Wachhund

Beiträge: 1 570

Wohnort: Schleswig Holstein

Beruf: Freiberuflich

  • Private Nachricht senden

5

Freitag, 9. März 2012, 15:34

Re: if loaded in iframe ??

Suchmaschinen kannst du verbieten bestimmte Seiten aufzunehmen:

HTML

1
  <meta name="robots" content="noindex">


Und schon wird keine Suchmaschine diese Seite aufnehmen.

Das deine Datei optisch nicht so schön ist wenn man sie direkt aufruft ist doch erst dein Problem wenn du direkt auf die Seite verlinkst? Wenn jemand einfach darauf geht indem er die URL (o.Ä.) hat er doch selber Schuld.

6

Mittwoch, 11. April 2012, 14:33

Hab grade das hier noch gefunden zu dem Thema, kann jemand beurteilen ob es Sinn macht?

Javascript-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script language="javascript" type="text/javascript">
if (window.addEventListener) {
    // DOM2 standard
    window.addEventListener("load", handler, false);
}
else if (window.attachEvent) {
    // Microsoft's precursor to it, IE8 and earlier
    window.attachEvent("onload", handler);
}
else {
    // Some pre-1999 browser
    window.onload = handler;
}

function handler() {
if (top === self) {
    window.location.href = 'http://yoursite/startpage';
}

}
</script>


Sollte in die Datei eingefügt werden, welche im Popup geladen wird, um zu verhinden, dass auch jemand den direkten Link zur Datei benutzt... macht es Sinn?

Basiii

Wachhund

Beiträge: 1 570

Wohnort: Schleswig Holstein

Beruf: Freiberuflich

  • Private Nachricht senden

7

Mittwoch, 11. April 2012, 16:52

Funktionieren tut es, sicher ist es natürlich nicht, denn wie wir alle wissen kann man JavaScript (auch für bestimmte Seiten/Dateien ausschalten.
Du hast Fragen zum Board, Kritik, Lob, Anregungen oder dich stört etwas? Einfach eine private Nachricht senden.
<(o.o)> I always know what I du!

webmaster3000

hat Ahnung

Beiträge: 279

Wohnort: Irgendwo in Thüringen

Beruf: ehrenamtlicher Ubuntuuser

  • Private Nachricht senden

8

Mittwoch, 11. April 2012, 21:03

Mal ein anderer Denkansatz: Brauchst du unbedingt IFrames?
JavaScript würd ich für sowas übrigens nicht nehmen, bei vielen Surfern ist es deaktiviert.
Wer nähmlich mit 'h' schreibt, ist dähmlich!