• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Alternative für iFrame

PhoniX

Neues Mitglied
Hallo,

ich habe ein sehr ekelhaftes Problem. Ich fürchte auch, ich habe dafür ein bisschen gepfuscht. Also..

Ich habe ein Forum, in das ich ein externes Ticket-System (osTicket) eingebunden habe. Dafür habe ich zwei separate Installationen gemacht und dann das Formular für Ticket erstellen und für Ticket ansehen ins Forum eingebunden. Da ich wollte, dass die User mit dem Benutzernamen und Email des Forums ein Ticket erstellen, habe ich den Username und die Email per GET-Methode an den iFrame übergeben und die beiden entsprechenden Felder dann in der Ticket-Installation selber per Javascript ausgefüllt und anschließend noch "nicht editierbar" gemacht.

Soweit klappt das auch. In der Theorie. Das Problem, das mich momentan stört, ist, dass man beim ersten Ticket in einer Browser-Session (also wenn man z.B. den Browser neustartet) nach dem Abschicken des Formulars für ein neues Ticket keine Bestätigung, sondern einen komplett grauen iFrame kriegt. Der <body-Tag ist leer und in die DB wird auch nichts eingrtagen. Erst, wenn man die Seite neulädt und dann nochmal ausfüllt, werden die Sachen erst in die DB eingetragen. Da es aber über die GET-Methode auf der externen Seite funktioniert, liegt es wohl am iFrame, den ich eingebunden habe. Daher suche ich eine Alternative um eine externe Seite einzubinden.

Der Iframe:
HTML:
<iframe src="https://domain/open.php?username={$mybb->user['username']}&email={$mybb->user['email']}"/>

Javascript zum ausfüllen der Felder:
Javascript:
$emailfield = $('input[type=email]');

$emailfield.val("<?php echo $_GET['email']; ?>");
$emailfield.attr("readonly", true);

$ticketnumber = $("input[type=text]").get(0).id;
$('#' + $ticketnumber).val("<?php echo $_GET['username']; ?>");
$('#' + $ticketnumber).attr("readonly", true);

Ich weiß, das ist wahrscheinlich unglaublich gepfuscht. Aber es gibt weder ein vernünftiges Plugin für das Forum, noch möchte ich das auf eine externe Seite verlagern.

Ich bin Perfektionist und möchte nicht, dass man beim ersten Ticket erstmal einen grauen Bildschirm kriegt. Zuerst weiß man das nicht, dann schreibt man einen langen Text und dann ist alles weg.

Vielleicht hat hier ja noch jemand eine Idee.

Grüße
 
Werbung:
kannst du das nicht über php include einbinden ?
Kurz mal nachgedacht und dann ein eindeutiges nein!Und wenn du jetzt fragst, warum nein, dann denke erst mal drüber nach,bevor du die nächsten Zeilen liest.

Wenn du eine externe Seite per include einbindest, hast du unterschiedliche CSS-Angaben, die sich gegenseitig stören können. Aber noch gravierender ist, dass du dann 2 HTML-, HEAD- und Body-Tags in einer Seite hast. Schon toll, auf was man alles kommen kann, wenn man drüber nachdenkt, oder?
 
Werbung:
was wäre den mit getcontent und man holt sich nur das da raus was man brauch ?
Sorry mein Unterstrich ist Schrott
 
was wäre den mit getcontent und man holt sich nur das da raus was man brauch ?
Also ich bin ja immer noch kein Profi in HTML und PHP. Aber wenn ich mir mit getcontent() ein Formular "raushole", das alleine dadurch, dass es ein Formular ist, auf eine andere PHP-Datei verweist, kann das doch nicht funktionieren, oder?
Das Konstrukt der Seite selber darf ja nicht auseinander gerissen werden.
 
Also:

Ich habe eine ganz normale Seite im Forum erstellt. Auf dieser Seite ist ein iFrame eingebunden, der die externe Seite darstellt, auf der man Tickets erstellen kann. Zwei Felder dieses Formulars werden von mir ausgefüllt. An der Eingabe kann es nicht liegen, weil es auch ohne die GET-Variablen nicht funktioniert und ich trotzdem einen leeren iFrame kriege.

Wenn ich die Parameter auf der externen Seite (über den Link direkt im Browser, den ich sonst im iFrame habe, natürlich ohne Variablen) in den Link mit eingebe, lädt das Formular direkt beim ersten Mal korrekt. Es liegt also am iFrame oder an der Art, wie ich das ganze eingebunden habe.
 
Werbung:
HTML:
<iframe src="https://domain.com/open.php?username=BENUTZERNAME&amp;[email protected]">

So, habe ich unverändert, bis auf Domain, Benutzername und E-Mail aus dem Entwicklerwerkzeug übernommen. Ich wundere mich ehrlich gesagt gerade wo das "&amp" herkommt, das sehe ich nur, wenn ich auf "HTML bearbeiten" klicke. Ansonsten werden die Parameter aber korrekt übergeben und sind auch in den Feldern eingetragen. Allerdings ist der Inhalt nicht als HTML-Attribut sichtbar. Scheint also wohl wirklich eingegeben worden sein.
 
Jetzt ist nur die Frage, wie ich das ändern kann. Ursprünglich sitzt der iFrame in einem Editor von MyBB, keine Ahnung was für einer das genau ist. Jetzt habe ich mal probiert den iFrame in eine php-Datei auszulagern, die ich dann einfach eingebunden habe, sodass ich das "&"-Zeichen nicht im MyBB-Editor eingeben musste. Hat aber trotzdem nicht geholfen. :/
 
Nein, abgesehen davon dass die Variablen nicht abgefragt wurden, was ja selbstverständlich ist, war da immer noch statt dem "&" ein "&amp;".
 
Werbung:
HTML:
<div class="embed-container">
</div>
    
<script>
var params = { username:"{$mybb->user['username']}",email:"{$mybb->user['email']}" };
var str = jQuery.param( params );
var url = decodeURIComponent( str );
var test = "<iframe src='domain.com/open.php?" + url + "' />";
$(".embed-container" ).html( test );
</script>

Hab's jetzt tatsächlich auf Javascript-Basis geschafft. Trotzdem gleiches Problem, dass in der URL "&amp;" angezeigt wird.
Musste die URL decodieren, da aus dem "@" sonst ein "#40" gemacht wurde. Das Problem konnteich lösen, kann es vielleicht auch mit dem "&amp" zusammenhängen, dass ich an einer anderen Stelle auch nochmal decodieren muss?
 
Werbung:
Gibt das aus, was es soll:

Code:
username=USERNAME&email=EMAIL
<iframe src='https://DOMAIN/open.php?username=USERNAME&email=EMAIL' />

Das meintest du doch, oder?
 
Werbung:
Ich denke der Grund dafür könnte sein, dass Du das HTML des ganzen iFrame-Tags schreibst; das könnte dazu führen, dass wieder ein Parser aktiv wird und das & ersetzt. Versuche, das Tag statisch anzulegen und nur das src-Attribut zu setzen. Keine Garantie, dass es damit besser geht, aber man kann es versuchen ...
Sorry, ich frage mal ganz doof, weil ich dazu im Internet gerade nichts finde. Wie soll ich denn eine Javascript-Variable innerhalb eines HTML-Tags ausgeben? Ich muss doch so oder so einen Script-Tag anfangen, aber das geht doch nicht innerhalb von Anführungszeichen, oder?
 
Ich stehe gerade voll auf'm Schlauch..


HTML:
<div class="embed-container">
    <iframe />
</div>

<script>   
$('iframe').attr("src", "https://www.google.de" );
</script>

Habs zum Testen mal mit Google probiert, aber er will einfach nicht. Erst recht in die Console ausgeben. Sorry, wenn ich gerade 'n dummen Fehler irgendwo habe.
 
Werbung:
Zurück
Oben