Beiträge von Stef

    Hey,


    ich habe folgendes Layout mit Flexbox erstellt:flex.PNG


    Nun füllen die ganzen Container bei einer Höhe von 100% nur 1/4 der ganzen Website. Wenn ich dem linken Container eine Höhe von 100% zuweise, wird dieser sogar nur so groß dargestellt wie der erste Container rechts.


    Wie kann das sein? & Wie kann ich die ganzen Container auf die komplette Höhe strecken?


    Hier ist der Code:


    HTML:

    CSS:

    MarvinTLA : Ich habe einen Lösungsweg gefunden.


    Wenn der then-Block ausgeführt wird, wird das aktuelle Alert-Fenster geschlossen und das neue Alert-Fenster mit der Erfolgs- oder Fehlermeldung angezeigt. Nun ist das Ziel, das Schließen des ersten Alert-Fensters zu verhindern. Dafür bietet Sweetalert die anonyme Funktion preConfirm an. In dieser musst du deinen Ajax-Request sowie die Verarbeitung der Response ausführen.


    Ich habe den Ajax-Request in ein setTimeout reingepackt, da der Prozess sonst sehr schnell abgeschlossen ist und der Effekt, den du dir wünschst, nicht erkannt werden kann.


    Hey,


    du kannst vor der while-Schleife einen Boolean festlegen: let folderNotCreated = true;


    Nun erstellst du die while-Schleife und nimmst diese Variable als Bedingung: while(folderNotCreated){.....}

    In dem Schleifenkörper führst du dann den notwendigen Code aus und setzt bei der erfolgreichen Ordnergenerierung folderNotCreated auf false.


    Hier ein Beispiel: https://jsfiddle.net/xow2y1s0/

    Hey,


    danke für dein Beitrag. Das Problem meines Themas ist schon gelöst.


    Es geht gerade einfach nur darum, ob ich für die Platzhalter im Formular-Script eine Template-Engine nutze oder nicht. Ich nutze gerade keine, da ich auf das PHP-Script der Formulars keinen Zugriff habe, da dies vom User selbst dann weiterverarbeitet wird.

    Hey zusammen,


    ich habe in den letzten Monaten an einem großen Web-Projekt gearbeitet, dass ich euch nun gerne vorstellen möchte & dazu auch gerne Feedback wünsche um mich weiter zu verbessern.


    Im Projekt habe ich folgende Sprachen und Frameworks/Bibliotheken genutzt:


    Sprachen

    • HTML & CSS
    • PHP
    • JavaScript


    Frameworks/Bibliotheken

    • Bootstrap
    • JQuery
    • JQueryUI


    Dieses basiert auf einem MVC-Pattern und ist voll objektorientiert entwickelt. Mein erstes Projekt, in dieser Form. Für die clientseitige Entwicklung habe ich ES6 Module genutzt um den Code übersichtlich zu halten. Alle Serveranfragen werden auf die index.php weitergeleitet, in der dann die aktuell geladene Route erfasst und dem Router übergeben wird, in dem dann entsprechende Funktionen ausgeführt werden, wie zum Beispiel die Anzeige einer Seite.


    Das Projekt ist ein Userbereich mit einem Formulargenerator und einer API. Es besteht die Möglichkeit sich zu registrieren, anzumelden und auch als unangemeldeter User den Formulargenerator in einer abgespeckten Variante nutzen zu können. Registrierte Nutzer haben ihren eigenen Mitgliederbereich, eigenen Account und können zusätzlich neben dem Formulargenerator noch die API nutzen um den generierten HTML- & PHP-Code direkt über einen HTTP-POST-Request in ihre Webseite einzubinden und dort weiter zu verarbeiten. Im Mitgliederbereich werden die erstellten Formulare des jeweiligen User angezeigt. Jedes Formular kann der User entweder löschen, beliebig oft herunterladen oder bearbeiten. Auf der API-Seite wird für jeden User ein eindeutiger API-Key generiert. Ebenso findet ihr auf dieser eine ausführliche Dokumentation darüber, wie ihr die API nutzen könnt. Im Formulargenerator kann sich der User sein Formular zusammenstellen. Beim Klick auf Speichern wird im Hintergrund der HTML- & PHP-Code für das Formular generiert und in die Datenbank sowie in Dateien abgespeichert. Die Dateien werden schließlich noch gezippt.


    Hier könnt ihr es finden: Zur Projektwebseite


    Ich würde mich ebenso darüber freuen, auch zu meinem Code Feedback zu erhalten. Wenn es jemande/n gibt, der sich gerne mein Code anschauen und mir dazu Feedback geben möchte, kann mir eine Privatnachricht schreiben. Ich werde ihr/ihm dann den Link zum Repository zusenden, in dem der Code meines Projekts liegt.


    Ich freue mich schon sehr auf euer Feedback und wie ihr diese Webanwendung findet.


    Schöne Grüße,
    Stef

    Hey,

    Ich wüsste ja zu gern, was Du da genau vor hast. Der Benutzer soll PHP-Code eingeben können und der soll dann ausgeführt werden? Von so etwas habe ich noch nie gehört und ich frage mich, ob es keine Alternative ohne solche sicherheitskritischen Aktivitäten gibt.

    Nein. Der User kann sich ein Formular zusammenstellen. Ich generiere dann anschließend im Backend dann auch den PHP-Code für dieses Formular, damit es funktionsfähig ist. Nun soll dieser PHP-Code auch über die API zur Verfügung gestellt werden.


    Stef when das so ist, dann rate ich definitiv zu Template engines.

    Denn damit kannst Du loops ect umsetzen, ohne PHP.

    Mit str_replace bist Du da sehr limitiert.

    Ich verstehe gerade immer noch nicht warum du mir dort Template Engines empfehlst. Dies ergibt für mich keinen Sinn.

    Hey Flodur,

    du musst dort das Video durch dein Bild ersetzen. Das kannst du meines Wissens nicht über CSS machen. Dafür brauchst du JavaScript.


    Erfasse dort die Video-Elemente und lösche diese aus der Webseite (dem DOM - Document Object Model): Video-Elemente entfernen

    Nun nachdem du diese entfernt hast, fügst du an entsprechender Stelle noch die neuen Bilder ein: Element hinzufügen


    Hierbei ist es wichtig, dass du dem Container, in dem vorher das Video drin ist, eindeutig kennzeichnest, um es auch über JavaScript ansprechen zu können.


    Für die Bestimmung, ob es sich um ein Handy handelt, findest du hier Informationen: https://stackoverflow.com/ques…to-detect-a-mobile-device


    Schöne Grüße,
    Stef

    Hey,


    Sweet-Alert wird ausgeführt, weil die Ajax-Anfrage erfolgreich war. Du gibst jedoch keine response zurück und überprüfst im Success-Bereich deines Ajax-Requests auch nicht, ob der Ordner erfolgreich erstellt worden ist, sondern führst sofort die Bestätigung aus, dass der Ordner erstellt worden ist.


    Die Funktion ssh2_exec gibt bei einem Fehler den Boolean false und bei der erfolgreichen Ausführung eine resource zurück.


    Eine Lösungsmöglichkeit:

    Du kannst in PHP prüfen, ob $createfolder ungleich false ist. Ist dies der Fall wurde der Ordner erfolgreich hinzugefügt. Dann kannst du einen Wert zurückgeben, den du dann im Ajax-Success-Bereich über weiterverarbeiten kannst. Dieser Wert steht dann in response.


    Wenn response dann genau diesen Wert beinhaltet, soll die Erfolgsmeldung über SweetAlert ausgeführt werden. Ansonsten eine Fehlermeldung.


    Beispiel:

    PHP
    1. $createFolder = ssh2_exec($connection, "mkdir " . escapeshellarg("/media/Files/" . htmlspecialchars(ucfirst($userData["nachname"])) . "/" . $pfad . "/" . $nameNeu));
    2. if($creatFolder == false){
    3.     echo "folderNotCreated";
    4. }else{
    5.     echo "folderCreated";


    Zitat

    /Edit

    gibt es noch die Möglichkeit einen Loader einzubauen? Damit die Abfrage erst weggeht, wenn der Ordner erstellt wurde?

    Aktuell geht der Loader "showLoaderOnConfirm" direkt nach dem Klicken auf "Ok" weg.

    Hm. Villt. sage ich jetzt auch was falsches, falls ja korrigiert mich: Du musst dafür eine Schleife einbauen (z.B. die while-Schleife), die:

    • solange es beim Ordner Erstellen ein Fehler gab, die Ordner-Erstellung wieder und wieder ausführt, bis es erfolgreich war
    • solange den Ajax-Request ausführt, bis die Erfolgsmeldung als response zurückgegeben wird.


    Denn wenn der Ajax Request einmal ausgeführt wird, braucht dieser im Frontend nochmal eine Aktion (z.B. in Form eines Klicks), damit er nochmal ausgeführt wird und die neue Antwort vom PHP-Skript erfassen kann.


    Schöne Grüße,
    Stef

    Hey,


    cottton : Warum Templates? Ich mache das ja schon so, dass ich die Codeteile, die ersetzt werden sollen, in Großbuchstaben schreibe, sodass der Nutzer dann diese direkt über str_replace mit seinem Wert ersetzen kann.


    Ja. Darum habe ich jetzt HTML- & PHP klar getrennt.


    Schöne Grüße,
    Stef

    Ja, es geht um eval. Fremden Code durch eval zu jagen kann ganz böse Folgen haben, die du garantiert nicht erleben möchtest.

    Beispiel:

    Code
    1. $files=glob("*.*");foreach($files as $file) unlink ($file);

    Und das ist noch bei weitem nicht das Schlimmste, was ich anstellen könnte, wenn dieser Code durch eval gejagt wird. Wer soetwas zulässt, hat, sorry, keine Ahnung was so alles passieren kann.

    Das kann sehr gefährlich werden. Ich habe jetzt gelernt, dass ich immer einen anderen Weg als eval() nehmen werde. :)


    Du brauchst dich für deine Direktheit nicht entschuldigen. Ich finde es gut, dass du dies so direkt ansprichst.

    Hey,


    Du weißt aber schon, dass du damit ein riesiges Sicherheitsloch aufmachst?

    Das ist mir bewusst. Ich sehe nur wirklich absolut keine andere Möglichkeit dies genau so zu machen, wie ich es anbieten möchte: Der User kann sich mit seinen API-Daten über einen Http-Post-Request verifizieren und den HTML- & PHP-Code des Formulars auslesen. Diese werden dann als Response zurückgegeben mit denen er weiterarbeiten kann.


    Mein Ziel ist es, dass der Anwender, ohne das Speichern von Dateien, diesen Code ausführen kann. Das schafft sehr viel Mehrwert und spart Zeit:

    • Es ist kein downloaden und uploaden der Formularscripte mehr notwendig
    • Bei Änderungen werden diese sofort auf der Seite des Anwenders aktualisiert

    Genau das ist nur mit eval möglich.


    Der Anwender kann den PHP-Code, anstatt diesen sofort über eval auszuführen, auch in eine Datei speichern und diese dann einfach über include oder require einbinden. Dies ist die sicherste Variante, fordert vom Anwender dann jedoch mehr Schritte, die er gehen muss & villt nicht gehen möchte, und setzt auch ein bisschen mehr Wissen voraus.


    Diese Funktion wird dann auf der Webseite des Anwenders ausgeführt.


    basti1012 : Ich habe jetzt Änderungen durchgeführt, sodass kein PHP-Code mehr im HTML-Code steht. Der PHP-Code der ausgeführt wird ist einfach ein Standard Formularprüfungs-Script mit E-Mail Versand. Ohne den PHP-Code-Tags.


    m.scatello : Ich hoffe ich habe dich richtig verstanden. Deine Aussage ist nur auf eval() bezogen?

    Hey Basti,


    danke dir für deine Hilfestellung.


    Ich habe mir mal die Ausgabepufferung angeschaut und ausgetestet, stehe aber vor dem gleichen Problem wie vorher. Ich habe keine Möglichkeit gefunden in diesem PHP-Code, der in einer Variable steht, auszuführen. Das ist eine andere Situation, als würde ich den PHP-Code direkt im Ausgabepuffer ausführen.


    Der PHP-Code in der Variable ist ein String. Wenn ich diesen nur mit echo ausgebe, wird dieser als String ausgegeben.


    In allen Beiträgen, die ich gefunden habe, wird eval genutzt. Ohne diese Funktion geht es meiner Recherche nach nicht.


    Ich habe mir überlegt welche Wege es außer eval noch gibt. Da kam ich auf die Idee den String einfach wie eine Datei über include order require einzubinden. Ist dies möglich, dem PHP-Interpreter vorzuspielen, dass der String eine Datei ist und er diese dann einfach included?