kostenloser Webspace werbefrei: lima-city


Iframe integration mit Benutzerübergabe in Seite

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    jippyx

    jippyx hat kostenlosen Webspace.

    Hallo Lima Gemeinde,

    Ich habe ein kleines Problem für das ich keine zufriedenstellende Lösung habe. Ich möchte auf eine bestehende Webseite einen Chat einbinden. Dieses System was dort genutzt wird arbeitet allerdings mit Textboxen und kann somit nur HTML. Ich dachte mir nun das ich den Chat via Iframe oder evt Script einbinden könnte...

    Soweit ist das ja auch kein Problem. Der haken an dieser Sache ist das es natürlich den Benutzernamen mit übergeben soll an den Chat. Via Link oder Button auf der entsprechenden Seite klappt das auch mit diesem kleinen Script.

    <form method="post" action="/chat.php" name="user_trans">
       <input type="hidden" name="username" value="%user.Username%" />
       <a href="javascript:document.user_trans.submit()">Chat</a>
    </form>


    jedoch soll quasi wenn man die Seite aufruft direkt der Chat erscheinen ohne erst einen Button oder Link drücken zu müssen. Ob es da möglich wäre ein Iframe mit Benutzerübergabe oder evt ein Script zu basteln was dies macht? Wisst ihr rein zufällig was hier die beste lösung wäre in dem Fall bzw wie man das ganze am besten bewerkstelligt?

    Für Ideen und Lösungsvorschläge wäre ich euch sehr verbunden.

    Viele herzliche Grüße



    Beitrag zuletzt geändert: 28.7.2019 2:13:26 von jippyx
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. horstexplorer

    horstexplorer hat kostenlosen Webspace.

    Iframes sollte man so oder so nicht benutzen.
    Du könntest mit JS ein Formular füllen was deine Daten per Post sendet sobald die Seite geladen ist. Das ganze kann ja für den Benutzer ausgeblendet werden.
    https://stackoverflow.com/questions/133925/javascript-post-request-like-a-form-submit
    https://www.w3schools.com/tags/ev_onload.asp

    Beitrag zuletzt geändert: 28.7.2019 13:00:48 von horstexplorer
  4. Autor dieses Themas

    jippyx

    jippyx hat kostenlosen Webspace.

    Vielen Dank für Deine Antwort. Okay, also Iframe ist dann wohl raus, ich hatte es befürchtet. Das wäre für mich das einfachste gewesen, weil ich mich echt schwer tue mit diesen 100erten von Codes. Und Javajscript hab ich mal so gar keine große Ahnung von. Dieses Code Schnipsel aus meinem Beispiel habe ich gerade noch so hinbekommen und gehofft das ganze wäre so simple mit ein paar zusätzen etc. zu ergänzen. Wenn ich mir dein erstes Beispiel mit Javascript Post request anschaue dann sind dort so viele Beispiele bzw Code Schnipsel das es mir gerade davor graut. Der Chat muss ja in die Seite eingebunden werden, Daten müssen übergeben werden, all das geht mit Javascript? - Sorry für die Frage aber ich habe gerade ein Dickes Fragezeichen über meinem Kopf :(

  5. horstexplorer

    horstexplorer hat kostenlosen Webspace.

    Das kommt ja ganz drauf an wie der Chat funktioniert.
    Der Code war ja nur so als Idee das mit dem Formular so zu machen wie du sagtest nur halt automatisch ausfüllen und absenden.
  6. Autor dieses Themas

    jippyx

    jippyx hat kostenlosen Webspace.

    der chat ist recht einfach gehalten, hat keine auch keine Datenbank. Im Prinzip muss nur wie in meinem Code der Benutzername mit übergeben werden. Die Daten wie z.B Benutzer die sich z.B ohne Benutzerübergabe registrieren können werden in eine txt datein geschrieben. Was leider nicht geht ist den Benutzernamen über die Url mitzuschicken, was der einfachste aber wohl auch der nicht sicherste weg gewesen wäre. Wie gesagt im prinzip muss nichts ausgefüllt werden vom User. Man klickt derzeit auf Chat dann öffnet sich der chat und der Benutzername wird dann ohne Login Maske übergeben und man ist direkt mit seinem Benutzernamen im Chat. Gleiches möchte ich halt auch weiterhin erreichen nur das sich kein neues oder gleiches Fenster öffnet sondern ich den chat in die Seite einbauen kann das es als ein ganzes aussieht.

    Beitrag zuletzt geändert: 28.7.2019 16:36:05 von jippyx
  7. prinz-und-gloeckner

    prinz-und-gloeckner hat kostenlosen Webspace.

    Wenn ich dein Anliegen richtig verstanden habe, mußt du dem iframe-Element lediglich ein Attribut name verpassen (nach Geschmack auch noch ein id mit gleichem Wert).
    Beim form-Element gibst du per Attribut target mit dem Wert von name den iframe als Ziel an und schon sollte da dieser chat (sind chats dort erlaubt, wo du das betreiben willst?) im iframe aufgehen.

    Also in der Anfangsmarkierung des form-Elementes zusätzlich target="chatframe"
    und in der Anfangsmarkierung des iframe-Elementes zusätzlich name="chatframe".
    Kein JavaScript (dann funktioniert es sowieso nicht, wenn die Leute die Interpretation aus Sicherheitsgründen deaktiviert haben).

    Da HTML5 iframe und target wiederbelebt hat, sollte das wohl gehen.
    Sofern der chat anders als in deinem Quelltext-Schnipsel nicht in derselben Domäne ist, müssen beim iframe vermutlich nach HTML5 weitere Attribute gesetzt werden, um Sicherheitslücken zu öffnen - extra zu dem Zwecke wurden da spezielle Attribute eingeführt. ;o)
  8. Autor dieses Themas

    jippyx

    jippyx hat kostenlosen Webspace.

    Danke für die Antworten. Ich habe mal versucht das ganze in einen Code zu Packen, so ganz funktioniert es aber noch nicht. Für den Chat nutze ich einen extra Server der als Subdomain zur Hauptdomain via Arecord fungiert. Ich habe hier die URL mal absichtlich weggelassen da es derzeit ohnehin von außen nicht erreichbar ist.

    Mein Code wäre dieser:

    <form action="https://chat.xyz.de/chat.php" method="post" target="chatframe">
    <input name="usertrans" type="hidden" value="%user.Username%" /></form>
    <iframe height="500px" name="chatframe" src="https://chat.xyz.de/chat.php" width="100%" height="500px" ></iframe>


    Welches Attribut muss man denn in diesem Fall setzen, mal abgesehen davon das ich hoffe das ich das in dem Code jetzt richtig interpretiert habe wie es evtl gemeint war.

    Herzlichen Dank übrigens an alle die hier meine Wissenslücke füllen :)
  9. prinz-und-gloeckner

    prinz-und-gloeckner hat kostenlosen Webspace.

    1. Abschicken sollte der Nutzer das Formular schon können (Abschickeknopf anbringen)
    2. Ein Attribut darf bei einem Element maximal einmal angegeben werden.
    3. Seit HTML5 für width und height nur noch Zahlen als Werte, also etwa 500 für 500 Pixel. Andere Angaben bei Bedarf zusätzlich per CSS.
    4. Bei meinem Test hat bei mir zumindest Mozilla/Gecko (Firefox, SeaMonkey) die Interpretation von target verweigert. Opera (Presto) oder Webkits interpretieren es zum Beispiel.

    Von daher ist es wohl die einfachsten Lösung, das Formular gleich in den iframe zu packen.
    Also iframe-Dokument mit folgendem Inhalt:

    <iframe height="500" width="500" src="formular.xhtml">
    <a href="formular.xhtml">chat</a>
    </iframe>


    Inhalt von formular.xhtml:

    <form action="https://example.org/chat.php" method="post">
    <input name="usertrans" type="hidden" value="%user.Username%" />
    <input type="submit" name="Abschicken" value="zum Chat" />
    </form>

    Per PHP mußt du natürlich für %user.Username% irgendwas Sinnvolles einsetzen.

    Per Attribut srcdoc kannst du prinzipiell den Inhalt von formular.xhtml auch maskiert gleich in das iframe-Element setzen, klappt aber nur bei Brausern, die HTML5 können (also keine alten).
    Maskieren ist notwendig für alles, was nicht einfach so als Attributwert zulässig ist, also in der Spezifikation nachlesen, per PHP maskieren.

    https://www.w3.org/TR/html53/semantics-embedded-content.html#the-iframe-element

  10. Autor dieses Themas

    jippyx

    jippyx hat kostenlosen Webspace.

    Danke erstmal soweit. Jetzt bin ich etwas verwirrt. Zum ersten kann dieses Haupt System leider nur html, auf PHP habe ich dort aufgrund eines Baukastensystems keinen Zugriff. Das kann auch nicht geändert werden. Die Variable %user.Username% gibt dort den Benutzernamen aus und ich kann diese nicht durch etwas sinnvolles anderes ersetzen, das geht ja nicht dann wird ja kein Benutzername mehr übergeben. Das heißt es muss sich alles innerhalb dieser leeren Seite auf dem Baukasten System abspielen. Ziel ist es ja gerade das zweimal klicken (einmal für die Seite im Baukasten System - - Chat Seite und das zweite mal das klicken für in den Chat, also der Login mit Benutzerübergabe zu vereinfachen. Es soll im prinzip nur die leere Seite im Baukastensystem aufgerufen werden und dort würde sich dann ohne weiteres klicken für irgendwas der der Chat eingeloggt mit dem Benutzernamen des Users präsentieren. Wenn man ohnehin noch etwas abschicken müsste könnte ich auch den jetzigen Link lassen das wäre ja in etwa das gleiche oder habe ich das nun alles falsch interpretiert? Ich hoffe doch nicht...
  11. prinz-und-gloeckner

    prinz-und-gloeckner hat kostenlosen Webspace.

    Wenn das Baukastensystem den Ausdruck selbst ersetzt (SSI etwa), reicht das ebenfalls aus.

    Per Verweis kannst du wiederum keine Formulardaten per Methode post übermitteln.
    Da geht nur die Methode get. Wenn der chat nur post akzeptiert, geht es sauber nur per Knopf im Formular, irgendwelche Tricks mit Skripten sind instabile Schmuddeleien in dem Zusammenhang.

    Warum braucht man bei dem chat eigentlich kein Kennwort?
    (gut, im letzten Jahrtausend habe ich als erste PHP-Übung auch mal einen chat ohne Anmeldung geschrieben, wo man einfach nur den Spitznamen frei wählen konnte ;o) also schon möglich.)

    Der Nutzer muß sich ja sowieso irgendwann entscheiden, ob der chat aufgerufen wird, an der Stelle kommst du mit einem Klick hin.

    Wenn du bei dem Formular target="_blank" setzt, kommt das Ergebnis in einem neuen Fenster statt in einem iframe, das mag ja ebenfalls reichen, wenn es sonst keinen Bedarf zu sonstigen Inhalten neben einem iframe gibt.
  12. Autor dieses Themas

    jippyx

    jippyx hat kostenlosen Webspace.

    Japp, ds system wandelt %user.Username% automatisch in den Benutzernamen des jeweilig eingeloggten um. Für den Chat braucht man normal schon ein kennwort, sofern man sich normal registriert. Da ich aber eine doppel Registrierung vermeiden möchte (Einmal Hauptseite und dann nochmal für den Chat) wurde es auch nicht zuletzt damit sich z.B der Holzkopp nicht als Zwernase etc Registriert mit Benutzerübergabe realisiert. Einzig und allein der Admin als auch die Moderatoren müssen sich auch aus Sicherheitsgründen immer einloggen, auch per Benutzerübergabe. Sicher kann man es per target="_blank" machen, ich möchte das ganze aber als einheitliches erscheinungsbild ohne zig neue Tabs/ Fenster aufmachen zu müssen Layoutkonform einbinden. Das war eben der Hintergrund des ganzen. Ehrlich gesagt dachte ich aber auch nicht das das im Jahr 2019 bei der ganzen Modernen Technick so schwierig sei das ganz zu realisieren. Oder es kommt mir nur so vor, ich weiß es grad nicht :)

    Alternativ könnte ich vorher noch so eine Art Chattiquette machen und mit bestätigen (ChatButton mit Übergabe) würde dann der Chat aufgerufen aber geht das in einem Frame auf der gleichen Seite?

    Beitrag zuletzt geändert: 28.7.2019 20:19:29 von jippyx
  13. Naja, ein Baukastensystem schränkt halt doch extrem ein, da muss man halt auch manchmal Bastellösungen zu nutzen.

    Saubere, flexible Lösungen sind natürlich machbar, da wirst du aber nicht mit einer Baukastenlösung auskommen.
  14. prinz-und-gloeckner

    prinz-und-gloeckner hat kostenlosen Webspace.

    Die post-Methode ist ja dafür gedacht, Sicherheitsprobleme zu vermeiden und Aktionen zu bewerkstelligen, die Seiteneffekte haben können, daher sollte ein Nutzer schon immer ganz bewußt entscheiden, ob er die Aktion auslösen will, automatisch ist also nicht Sinn der Methode.

    Bei der get-Methode könntest du den Namen ja auch einfach an einen Verweis als Parameter anhängen, aber wenn der chat get-Parameter nicht auswertet, entfällt das.

    iframe mit Formular-Dokument drin (entweder eigenständiges Dokument oder srcdoc) zum Aufruf des chats dort mit einem Klick sollte also wie beschrieben klappen, noch knapper ist entweder für die Nutzer nicht mehr nachvollziehbar oder es gab zuvor ein in dem Sinne unnötiges Dokument.

    Per CSS etwa kann man auch einen iframe erst bei Bedarf aufklappen oder so vergrößern, daß er für einen chat nutzbar wird.
    Wenn es elegant integriert sein soll, könnte das eine Option sein.

    Sinnvolles Vorgehen ist schrittweise, also erst einmal den chat-Aufruf hinbekommen, danach die Angelegenheit per CSS vor dem Aufruf so kompakt machen, daß es nicht weiter stört, wenn der chat nicht genutzt wird.
  15. Autor dieses Themas

    jippyx

    jippyx hat kostenlosen Webspace.

    @prinz-und-gloeckner: Wenn ein User in der Navigation den Chat bewusst auswählt sehe ich ehrlich gesagt keinen Sinn darin ihn dann nochmals etwas bestätigen zu lassen. Mit aufruf der Chat Seite hat er ja schon seinen willen kund getan in den Chat zu wollen. Deshalb würde eine automatische aktion durchaus einen Sinn ergeben.


    Auch Bastellösungen sind gern gesehen wenn einer eine hat. Solange es funktioniert ist es mir laxx wie schmutzig es ist ^^
    Ich kann eben nur mit dem Arbeiten was da ist, ist halt leider so. Wäre halt nice wenn das irgendwie noch hinzubekommen wäre.

    Beitrag zuletzt geändert: 28.7.2019 20:45:55 von jippyx
  16. prinz-und-gloeckner

    prinz-und-gloeckner hat kostenlosen Webspace.

    Was hält dich denn davon ab, ein kleines Formular in die Navigation zu packen, um damit den chat direkt in gewünschter Weise aufzurufen?
    Nagut, den chat selbst wirst du nicht gerade in der Navigation unterbringen wollen, bleibt eben dann wohl doch beim Attribut target, bei welchem allerdings die Implementierung bei den Mozillas (neuerdings?) eine Macke zu haben scheint (müßte man eigentlich mal gucken, ob es dazu eine offene Fehlermeldung gibt). Die machen das dann eben nicht im iframe auf, dafür in einem neuen Fenster.
    Bei anderen Brausern geht es wohl auch im iframe.


    Wenn dabei allerdings noch der chat erst in einem iframe in angemessener Größe aufpappen soll, ist das CSS dafür schon etwas kniffliger. Das ist aber wohl sogar auch mit verschiedenen Varianten von CSS machbar (Positionierung, Größe ändern).

    Per Skript könntest du natürlich auch noch tolle Sachen basteln, um noch mehr als mit CSS zusätzlich zu dekorieren.
    Ist aber schon eine Weile her, daß ich mal über das DOM etwas gebastelt habe, von daher nicht meine Spezialität.
  17. Autor dieses Themas

    jippyx

    jippyx hat kostenlosen Webspace.

    Ich muss mal gerade um die Ecke denken. Sagen wir mal ich mache ganz nach links eine Textbox mit einer kleinen Navigation wo ich dieses Script einfüge

    <form method="post" action="/chat.php" name="user_trans">
       <input type="hidden" name="username" value="%user.Username%" />
       <a href="javascript:document.user_trans.submit()">Chat</a>
    </form>


    Rechts dann daneben ein iframe mit der gleichen ID oder name? (wobei der name ja schon mit user_trans belegt ist)
    müsste doch so auch gehen das der chat dann im Frame nebenan öffnet wenn es schon nicht direkt geht kann ich ja beim aufrufen im gleichen Frame vorab die Chattiquette anzeigen lassen oder?
  18. Um welchen Baukasten/Chatsystem handelt es sich denn eigentlich?
  19. Autor dieses Themas

    jippyx

    jippyx hat kostenlosen Webspace.

    /Chatsystem handelt es sich denn eigentlich?

    Das ist kein System von der Stange sondern wurde mal vor einiger Zeit speziell programmiert.

    So ich bin aber auch selbst etwas weiter gekommen. Zumindest schon deutlich weiter als vorher :)
    Ich habe nun ein button über das Chat Frame gesetzt: Das wäre dann dieser:

    <form action="https://chat.xyz.de/chat.php" method="post" name="user_trans" target="chatframe">
    	<p style="text-align: right;">
    		<input name="username" type="hidden" value="%user.Username%" /><button>Hier gehts in den Chat</button></p>
    </form>


    In das Frame darunter habe ich den folgenden Code getan:

    <script>
    function setIframeHeight() {
      var iFrameID = document.getElementById('iframe');
      if(iFrameID) {
        iFrameID.height = "";
        iFrameID.height = iFrameID.contentWindow.document.body.scrollHeight + "px";
      }
    }
    </script>
    <iframe frameborder="1" height="680" id="chatframe" marginheight="0px" marginwidth="0px" name="chatframe" onload="setIframeHeight();" scrolling="auto" src="https://chat.xyz.de/community.php" width="100%"></iframe></p>


    EDIT: Hab es über den Weg der Sandox im iframe lösen können, klappt nun alles wunderbar wie ich es mir vorgestellt habe :) Danke an alle die geholfen haben mit ihren Ideen und Vorschlägen !

    Das klappt auch soweit. Klicke ich auf den Button oben "hier gehts in den Chat" dann werde ich im Frame darunter in den Chat eingeloggt. Nach paar sekunden allerdings wechselt der Chat dann in Vollbild also die URL wird dann aus dem Frame heraus Voll aufgerufen. Kann man das unterbinden? - Ansonsten wäre das ja prinzipiell eine für mich akzeptable lösung so.



    Beitrag zuletzt geändert: 28.7.2019 23:14:56 von jippyx
  20. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!