iFrames und PHP Code
Mike
- php
0 Der Martin
0 Mike0 ChrisB2 Der Martin
0 Mike0 ChrisB0 Mike0 Der Martin
0 Mike
0 GrandmasterA0 Mike
Tach.
Ich rufe in einen iFrames ein PHP Script auf. Das iFrames habe ich versteckt.
<iframe src="#" name="home_studio_php" width="0" height="0" frameborder="0"><p>Fehler!</p></iframe>
<a href="homeputer.studio.send.php?SetStudio_objekt=<?php echo $send1; ?>&SetStudio_wert=<?php echo $wert1; ?>"
target="home_studio_php" onclick="javascript:location.reload()">test</a>
Wenn ich die Seite im Hauptordner auf dem Server leigen habe, funktioniert das mit Firefox, IE und auf mein Smartphone.
Liegt die Seite aber in einen Unterordner, so geht es nur im Firefox und IE, aber nicht auf meine Samrtphone. Die Seite wird zwar neu geladen, aber das Script wird scheinbar nicht ausgeführt.
Die Pfade habe ich angepaßt. Sonst würde es aber auch nicht im Firefox bzw. IE funktionieren.
Danke für die Hilfe!
mfg mike
Hallo,
<a href="homeputer.studio.send.php?SetStudio_objekt=<?php echo $send1; ?>&SetStudio_wert=<?php echo $wert1; ?>"
target="home_studio_php" onclick="javascript:location.reload()">test</a>
vergiss nicht, dass das '&' im HTML-Kontext maskiert werden muss. Ein unmaskiertes '&' ist ein Fehler und kann in ungünstigen Kombinationen tatsächlich zu einem Fehlverhalten führen.
> Wenn ich die Seite im Hauptordner auf dem Server leigen habe, funktioniert das mit Firefox, IE und auf mein Smartphone.
> Liegt die Seite aber in einen Unterordner, so geht es nur im Firefox und IE, aber nicht auf meine Samrtphone. Die Seite wird zwar neu geladen, aber das Script wird scheinbar nicht ausgeführt.
Du gibst das Linkziel relativ an, gehst also davon aus, dass das aufgerufene PHP-Script im selben Verzeichnis liegt wie das aktuelle Dokument. Ein browser- oder plattformabhängig unterschiedliches Verhalten ist aus dem, was du gezeigt hast, aber nicht zu erkennen. Nicht einmal zu ahnen.
> Die Pfade habe ich angepaßt. Sonst würde es aber auch nicht im Firefox bzw. IE funktionieren.
\_Wie\_ angepasst? Beispiel?
Ciao,
Martin
--
[Gültig](http://community.de.selfhtml.org/zitatesammlung/zitat134) sind Frauen ab 16, wohlgeformt ab 160 Pfund.
(Gunnar Bittersmann)
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
Hallo.
Also es gibt einen Ordner wo die Datei "homeputer.studio.send.php" drin liegt. Die erste Seite die die Seite aufruft liegt im Hauptordner. Den Aufruf mache ich dort so:
<a href="interface.home.studio/homeputer.studio.send.php?SetStudio_objekt=SE_SC_BI_1114'&'SetStudio_wert=1"
target="home_studio_php" onclick="javascript:location.reload()"><img src="image/touch/2.png" height="30" width="30" alt="umschalten" /></a>
Das ganze funktioniert am Laptop und am Smartphone.
Eine zweit Seite habe ich zum Testen direkt in den gleichen Ordner gelegt wie die Datei "homeputer.studio.send.php". Also beide liegen in den Ordner "\interface.home.studio". Hier habe ich jetzt die Pfadangabe geändert:
<a href="homeputer.studio.send.php?SetStudio_objekt=SE_SC_BI_1114'&'SetStudio_wert=1"
target="home_studio_php" onclick="javascript:location.reload()"><img src="../image/touch/2.png" height="30" width="30" alt="umschalten" /></a>
Das ganze geht am Latop, aber nicht am Smartphone.
---
Dann schreibst Du ich soll '&' nehmen, äh wie das?
<a href="homeputer.studio.send.php?SetStudio_objekt=<?php echo $send1; ?>'&'SetStudio_wert=<?php echo $wert1; ?>"
Ich dachte das brauch bei der Übergabe einer URL nicht sein?!
Kann ich dort auch urlencode nehmen oder bin ich da auf dem Holzweg.
Danke für die Mühe, stelle mich bestimmt nicht toll an :(
mfg mike
Hi,
<a href="homeputer.studio.send.php?SetStudio_objekt=SE_SC_BI_1114'&'SetStudio_wert=1"
Was soll denn das & in Hochkommata da drin?
> Dann schreibst Du ich soll '&' nehmen, äh wie das?
Nein, hat Martin nicht geschrieben. Er hat geschrieben, dass du das Zeichen &, das in HTML eine Sonderbedeutung hat, entsprechend maskiert notieren musst, wenn es diese Sonderbedeutung nicht haben soll.
<http://de.selfhtml.org/html/referenz/zeichen.htm#benannte_html>
> Kann ich dort auch urlencode nehmen oder bin ich da auf dem Holzweg.
Holzweg. Der primäre Kontext lautet an dieser Stelle HTML.
Arbeite bitte diesen Artikel mal vollständig durch (auch die zweite Seite):
<http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel>
Das sind wichtige Grundlagen, die du kennen und beherrschen solltest!
MfG ChrisB
--
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
Hi,
Also es gibt einen Ordner wo die Datei "homeputer.studio.send.php" drin liegt. Die erste Seite die die Seite aufruft liegt im Hauptordner. Den Aufruf mache ich dort so:
<a href="interface.home.studio/homeputer.studio.send.php?SetStudio_objekt=SE_SC_BI_1114'&'SetStudio_wert=1"
target="home_studio_php" onclick="javascript:location.reload()"><img src="image/touch/2.png" height="30" width="30" alt="umschalten" /></a>
okay, merken wir uns /interface.home.studio/homeputer.studio.send.php als aktuelle Ressource. Aber warum adressierst du den Kram nicht absolut, also mit führendem '/', um nicht immer aufpassen zu müssen, von welchem Verzeichnis aus di gerade verlinkst?
> ~~~html
<a href="homeputer.studio.send.php?SetStudio_objekt=SE_SC_BI_1114'&'SetStudio_wert=1"
> target="home_studio_php" onclick="javascript:location.reload()"><img src="../image/touch/2.png" height="30" width="30" alt="umschalten" /></a>
Ich versteh's immer noch nicht. Ich kann nur vermuten, dass hier genau das passiert, was ich oben andeutete: Du verzettelst dich mit deinen eigenen Pfadangaben.
Und lass doch bitte das unsinnige Label (Sprungmarke) "javascript:" in den Eventhandlern weg.
Dann schreibst Du ich soll '&' nehmen
Nein, das hast du doch schon. Ich schrieb, du solltest dieses Zeichen dem HTML-Kontext entsprechend maskieren. Und wie notiert man ein '&' in HTML korrekt? Wenn man es nicht maskiert, steht es für den Beginn einer Entity-Referenz wie z.B. < oder ". Um ihm diese Sonderbedeutung zu nehmen, muss man das Zeichen selbst in dieser Schreibweise notieren, also & - aber doch nicht in Anführungszeichen!
Betrachten wir ein Beispiel.
<a href="/do.php?command=view©=yes">Kopie ansehen</a>
Hier ist der Problemfall, dass die Zeichenfolge © eine gültige Entity-Referenz ergibt, die obige Zeile wird vom Browser also interpretiert als
<a href="/do.php?command=view©=yes">Kopie ansehen</a>
Und nun rate mal, was an den Server übermittelt wird. Bestimmt nicht die zwei Parameter command und copy.
Ich dachte das brauch bei der Übergabe einer URL nicht sein?!
Ob URL oder nicht - HTML erfordert es in jedem Fall. Der URL-Kontext (innerhalb HTML!) hat aber eine weitere Stolperfalle.
Kann ich dort auch urlencode nehmen oder bin ich da auf dem Holzweg.
Wie jetzt? Du meinst, das Zeichen als %26 codieren? Ja, syntaktisch wäre das auch korrekt, aber dann ist es nicht mehr Trennzeichen zwischen den URL-Parametern, sondern wird selbst zum Bestandteil des Parameters. Beispiel:
Der Firmenname Wolff&Partner soll als Wert des URL-Parameters übergeben werden. Dann ist die folgende Schreibweise natürlich schon wegen der eben erläuterten Problematik falsch:
<a href="/detail.php?company=Wolff&Partner">Details zum Unternehmen</a>
Das würde nach der browserinternen Fehlerkorrektur, die stillschweigend & annimmt, einen Parameter company mit dem Wert Wolff übermitteln, und einen weiteren Parameter Partner, der keinen Wert erhält. Wenn wir von vornherein & notieren, ist das zwar korrekt im Sinne von HTML, führt aber immer noch zum gleichen falschen Resultat. Hier müssen wir das '&' tatsächlich URL-gerecht codieren, also mit dem sogenannten Percent Encoding:
<a href="/detail.php?company=Wolff%26Partner">Details zum Unternehmen</a>
Danke für die Mühe, stelle mich bestimmt nicht toll an :(
Das ist ja grundsätzlich nicht schlimm, aber bei dir scheint es am grundlegenden Verständnis der Struktur zu klemmen. Und das ist insofern ein Problem, weil wir die auch nicht kennen und höchstens vermuten können.
Ciao,
Martin
Hallo.
Gut, warum ich kein & nehmen darf ist mir jetzt klar. Habe das entsprechend geändert.
---
Jetzt ist alles absolut Adressiert. Bist auf eine Datei im Unterordner "interface_home_studio".
"include("/home_control/interface_home_studio/homeputer_studio_interface.php");" geht nicht aber
"include("../interface_home_studio/homeputer_studio_interface.php");" aber warum verstehe ich nicht.
Unten in der Fusszeile habe ich einen Link, den kann ich absolut Adressieren auf der gleiche Seite!
"<a href="/home_control/php/info.php">"
Warum geht das bei dem Link, aber nicht beim includen??? Habe dazu nicht im Netz gefunden?!
Habe das jetzt so gemacht, ist das richtig?
"include($_SERVER['DOCUMENT_ROOT']."/home_control/interface_home_studio/homeputer_studio_interface.php");"
---
Aber das ändert nichts darn, auf dem Smartphone geht es nicht, am Laptop schon. Ich verstehe es nicht.
mfg mike
Hi,
Warum geht das bei dem Link, aber nicht beim includen???
Weil ein Zugriff über HTTP und einer über das lokale Dateisystem des Servers erst mal zwei vollkommen unterschiedliche Aspekte sind - mach dir das bitte erst mal klar.
MfG ChrisB
Also noch ein Versuch, sorry...
Also ich habe ja ein iFrames, dass den Name "home_studio_php" hat. Gut, über den href und target="home_studio_php" lasse ich den Link in den iFrames umleiten. Soweit denke ich ja richtg.
Jetzt habe ich aus dem Link, das target="home_studio_php" heraus genommen. Dadruch wird der Link dann ja in einem neuen Fenster geöffnet. Dort wird auch das PHP Script richtig aus geführt. Also muss die Übergabe der Parameter ja richtig sein.
Das geht am Laptop und am Smartphone.
Das iFrames ist doch so richtig (unsichtbar):
<iframe src="#" name="home_studio_php" width="0" height="0" frameborder="0"><p>Fehler!</p></iframe>
<a href="<?php $_SERVER['DOCUMENT_ROOT']; ?>/home_control/interface_home_studio/homeputer_studio_send.php?
SetStudio_objekt=SE_SC_BI_1114&SetStudio_wert=1" target="home_studio_php" onclick="location.reload()">
TEST</a>
mfg mike
Hallo,
Also ich habe ja ein iFrames, ...
"ein" ist Singular, "frames" ist Plural. Das passt nicht zusammen. Aber das nur nebenbei.
Jetzt habe ich aus dem Link, das target="home_studio_php" heraus genommen. Dadruch wird der Link dann ja in einem neuen Fenster geöffnet.
Nein. Dadurch sollte die verlinkte Ressource *im gleichen* Fenster geöffnet werden. Für ein neues Fenster (oder Tab, was ja auch nur eine Erscheinungsform eines Fensters ist) wäre target="_blank" erforderlich.
Das geht am Laptop und am Smartphone.
Dann hat dein Smartphone möglicherweise ein Problem mit iframes allgemein, oder mit iframes, die eine Größe von 0px haben. Ist das Gerät vielleicht so "smart", solche unsichtbaren Elemente gleich zu ignorieren?
Hast du mal an einem trivialeren Beispiel getestet, ob das Gerät so einen Unfug überhaupt mitmacht?
<a href="<?php $_SERVER['DOCUMENT_ROOT']; ?>/home_control/interface_home_studio/homeputer_studio_send.php?
SetStudio_objekt=SE_SC_BI_1114&SetStudio_wert=1" target="home_studio_php" onclick="location.reload()">
TEST</a>
Nur gut, dass im PHP-Teil ein Fehler steckt, der dafür sorgt, dass das erzeugte HTML dann doch wieder korrekt ist. Chris hat dich doch schon darauf hingewiesen, dass ein HTTP-Request und ein serverinterner Zugriff auf Dateien/Verzeichnisse zwei völlig verschiedene Dinge sind. Beim HTTP-Request hat das Document Root nichts verloren, das oberste adressierbare Verzeichnis ist "/". Im Gegensatz dazu ist im es Dateisystem nötig, dieses Verzeichnis anzugeben, oder relativ zu adressieren.
Ciao,
Martin
Ja meine Smartphone macht so ein Unfug mit. Habe ja geschrieben das dass ganze funktioniert, solange die html Siete im Hauptverzeichnis liegt. Erst wenn die Datei in den Unterordner liegt, gibt es die Probleme mit dem Smartphone.
Chris hat dich doch schon darauf hingewiesen, dass ein HTTP-Request und ein serve....
Ja, habe ich über sehen. Das ganze war nur mein ein Verusch.
iFrames mit einer Größe, größer 0px gehen auch nicht.
mfg mike
Ich rufe in einen iFrames ein PHP Script auf. Das iFrames habe ich versteckt.
<iframe src="#" name="home_studio_php" width="0" height="0" frameborder="0"><p>Fehler!</p></iframe>
Hierzu noch ein Hinweis:
Es gibt Browser(-plugins), die unsichtbare iFrames blocken. Was man nichts sieht, wird auch nicht aufgerufen. Könnte ja Schadcode enthalten...
Ich hatte auf meiner Seite mal 1x1-Pixel-iFrames. Da hatte AVIRA sogar mal eine [Malwaremeldung](http://www.filmfreunde.net/group_thread.php?group=33773d3d&thread=32315a47&start=20&goto%23post326966746a36453d) ausgegeben, was bei meinen Besuchern natürlich "super" ankam.
Hatte es dann an AVIRA als Falschmeldung gemeldet und sie haben es wieder entfernt. Dennoch etwas, was man evtl. wissen sollte. Ggf. betrachtet ja auch ein anderer Virenscanner das ganze irgendwann mal ähnlich kritisch. Meine iFrames sind jetzt 100x10 Pixel und enthalten die gleiche Hintergrundfarbe wie die Hauptseite. Man könnte sie aber ggf. auch per CSS in den nicht sichtbaren Bereich des Browsers schieben...
Gruß,
Andreas
Hallo und Danke für den Hinweis!
Ist bei mir aber nicht das Problem. Da die Seite nur für mich ist, wäre es dann auch nicht so schlimm.
mfg mike