Beiträge von Nitamud

    Hi,
    @nitamund .. das hier ist unnötig und verursacht nur mehr Traffic und weniger Übersicht.:


    Jap, ich habs nur der Vollständigkeit halber so geschrieben, da es sonst nicht XHTML konform ist:
    "In XHTML, attribute minimization is forbidden."

    und wenn ich mir das so anschaue kann man dann das php nach dem "öffnenden" <?php weglassen?


    und aus deinem PHP script werde ich ebenfalls nicht ganz schlau.
    Die prinzipielle Vorgehensweise ist verstanden nur die Umsetzung nicht wirklich.


    Vllt ein konkretes bsp :/ ?


    Kann man , wenn die php.ini entsprechend definiert ist, sollte man aber vermeiden.
    http://php.net/manual/en/ini.core.php#ini.short-open-tag


    Benutz lieber nur <?php und <?= (ab 5.4 immer verfügbar).



    Um nocheinmal auf mein Script zu kommen(das ich übrigens genau für dein Formular geschrieben habe).


    Ich lege anfangs zwei assoziative Arrays fest, eines mit den name-Attributen aller Formularfelder(außer dem Submitbutton) und
    ein anderes mit allen Pflichtfeldern. Zudem iniatilisiere ich eine Prüfvariable die anfangs auf false steht(da am Anfang ja noch kein Fehler ist).
    Dann durchlaufe ich das Array mit allen Feldern und prüfe , ob unter dem selben Schlüssel im Pflicht-Array auch ein Wert vorliegt.
    Falls ja, handelt es sich um ein Pflichtfeld und ich prüfe ob der entsprechende Post-Wert gesetzt ist. Ist dem so , wird genauso
    wie wenn kein Pflichfeld vorliegt der übertragene Wert im Input-Array gesetzt um im später im Formular wieder auszugeben und die Benutzerfreudnlichkeit
    zu erhöhen. Liegt allerdings ein Pflichtfeld vor, welches nicht gesetzt ist im übertragenen $_POST-Array setze ich im entsprechenden Pflicht-Array den Wert
    auf die CSS-Klasse um später darauf graphisch aufmerksam zu machen, zudem setzte ich die Prüfvariable noch auf true da nun ein Fehler vorliegt.


    mfg Nita

    Und ehrlich ist die Umsetzung in der Tabelle doch naja schöner :D vllt ist es nicht so "modern" oder semantisch oder ne Katastrophe, ok aber es muss nicht perfekt sein :D und trotzdem finde ich siehts besser in der Tabelle aus. Auch wenns von Google-Bots oder anderen nicht gut ausgelesen werden kann


    Naja die Gestaltung muss dann eben von dir via CSS vorgenommen werden, das so ein 0815 HTML-only Formularnicht so toll aussieht ist doch völlig selbstverständlich :D
    Im Grunde nimmst du dir durch den Einsatz von Tabellen viel gestalterischen Spielraum. Ich bleibe bei meiner Meinung das man Tabellen nur für tabellarische Inhalte einsetzen soll , aber jedem das seine, da muss jeder selbst draufkommen :)

    Und dann noch zum PHP:




    Dort nutze ich immer eine recht einfache Struktur um die Pflichfelder zu prüffen. $error gibt an ob ein Fehler gefunden wurde true/false und $style gibt den Namen der CSS-Klasse an , die bei einem nicht ausgefüllten Feld in Erscheinung treten soll(bei mir meist ein Rahmen oder Ähnliches). Dann setze ich anfangs alle Felder in einem Assoziativen Array($input) mit den Name-Attributen der zu verarbeitenden Felder und setze den Wert auf einen Leerstring. Zudem erstelle ich ein Array mit den Pflicht-Feldern($pflicht) , bei dem ich mit selbem Prinzip vorgehe. Nachher prüfe ich die Post Variablen und setzte bei einem leeren Feld die Fehlerklasse und sonst den jeweiligen Input, um ihn unten wieder in die Felder zu schreiben.
    (Hoffe ich konnte das einigermaßen erklären, sonst bitte nachfragen)



    Nachher überprüft man noch ob das Formular abgesendet wurde und alles ausgefüllt wurde und bindet dann eben das zweite Formular auch noch ein/oder nicht:


    PHP
    if ($_POST['weiter'] === "Weiter" && $error === false)
      {
    
        include('pfad/zu/deiner/datei.php');
      }


    Zu deiner Frage: https://phpsecurity.wordpress.…3/the-danger-of-php_self/


    Hoffe mal ich konnte dir ein wenig helfen, sonst einfach nachfragen :)

    So, ich fange hier mal beim HTML an:


    das ist so einfach semantisch und auch logisch eine Katastrophe(sry) : :S
    zur Darstellung eines Formulars sollte man keine Tabellen benutzen, nutz stattdessen die HTML-Tags fieldset,legend,label.
    Eine textarea hat kein value-Attribut, der Inhalt steht hier direkt ziwschen den zwei Textarea Elementen.


    Zudem noch eine Anmerkung $_SERVER['PHP_SELF'] ist unsicher , nutz staddessen $_SERVER['SCRIPT_NAME'].


    Hier mal eine kleine, schnelle , sauberere Umsetzung des Formulars:




    Soweit zum HTML :)


    isset() liefert einen Wahrheitswert zurück , und dies ist falls die Variable gesetzt wurde 1.



    Eine Else-Struktur gehört immer zu einer if-Verzweigung und diese gehört eben zu jener aus Zeile 34.
    Diese Struktur bewirkt, dass wenn ein Feld nicht ausgefüllt wurde, das ganze HTML-Formular ausgegeben wird.
    Darum wird auch das if erst nach dem HTML-Bereich geschlossen und dort das HTML definiert.


    Zitat


    [size=10][size=12]
    3.Ich verstehe auch nicht warum das Hidden Feld verhindert dass direkt
    am anfang beim öffnen der Seite die Fehlermeldungegen unterdrückt
    werden das nichts ausgefüllt wurde.

    Zitat
    Zitat



    Lass dir mal via

    PHP
    print_r($_GET);


    die übertragenen Werte ausgeben, hier läuft es bei der Überprüfung darauf hinaus das geprüft
    wird ob ein Wert in $_GET['abgesendet'] vorliegt, wenn ja ist das Formular schon aufgerufen
    worden oder die URL entsprechend manipuliert worden.



    Zitat


    [size=10][size=12]Desweiteren würde mich noch interresieren ob ihr meine Beschriftung und den
    Aufbau des PHP Programmes gut und übersichtlich findet ?

    Zitat
    Zitat


    Nein,


    da du mit dem @ Zeichen Fehlermeldungen bewusst unterdrückst, was man vor allem während dem Entwickeln
    nie verwenden sollte. Du solltest lieber am Anfang der Datei


    PHP
    error_reporting(-1);
    ini_set('display_errors', 1);


    schreiben um ein besseres Debugging zu ermöglichen.


    Zudem behandelst du Kontexwechsel überhaupt nicht, Usereingaben darfst du nie ohne entsprechende Behandlung
    http://php.net/manual/en/function.htmlspecialchars.php
    ausgeben. Gib mal probehalber in einem Feld <script>alert('Hackalarm');</script> ein und du versteht was dahintersteckt ->
    eine Riesensicherheitslücke. Zudem fehlt eine gute Überprüfung , da würde ich ein isset/empty und strlen bevorzugen.


    So das wars erstmals, ich hoffe ich konnte dir ein wenig helfen :)

    Was hat das jetzt mit dem Umkopieren von POST Variablen zu tun?


    Hallo,


    Basiii spielt wohl oben darauf an das du die Logik und die Verarbeitung der Daten direkt im Formular vornimmst was eigentlich
    bad practice ist. IM HTMl sollen nur reine Ausgaben und keine Programmstrukturen vorkommen.


    Schau dir hierzu mal das EVA-Prinzip(Standardverfahren) an,
    gegen dies sowas wie oben klar verstößt. :)


    mfg Nita

    Ich grüble hier jetzt schon eine Weile an einem Problem und ich komme einfach nicht auf meinen Denkfehler.
    Mir werden via $_POST folgende Werte übertragen:


    Array
    (
    [name] =>
    [telefon] =>
    [telefax] =>
    [strasse] =>
    [plz] =>
    [ort] =>
    [id] => 0
    )


    nun prüfe ich bei jedem Wert , ob er leer ist, aber außer bei 0 ergibt sich immer false :huh:


    PHP
    foreach ($_POST as $key => $value)
        {
          if (empty($value))
          {
            echo "leer<br>";
          } else {
            echo "nicht leer<br>";
          }
        }


    Dies erzeugt folgende Ausgabe:


    nicht leer
    nicht leer
    nicht leer
    nicht leer
    nicht leer
    nicht leer
    leer


    Eine Prüfung bei einem normalen Leerstring "" ergibt wie erwartet true.


    Habe ich da etwas übersehen? ich dachte nämlich immer ein Leerstring als Post-Wert wäre leer :S




    mfg Nita


    Nachtrag:


    Habe es nochmal überprüft und die Post-Werte sind nicht wie erwartet Leerstrings, sondern Leerstrings mit der Länge 1,
    dadurch hat sich das ganze geklärt :)

    Gibt es hier in diesem Forum zufällig einer, der sich mit Javascript etwas auskennt und diese Steuerung hinzubekommen?


    Würde es am ehesten mit einem canvas-Element umsetzen , dem du als Hintergrund dieses Band gibtst.
    Die Schachteln dann mit Vektoren/reinen Koordinaten auf den entsprechenden Kreisbahnen drehen lassen,
    wenn der MouseClick ausgelöst wird. Schaut so betrachtet nicht besonders schwierig aus, aber ich bin
    auch nicht so ganz auf fit mit den Manipulationsmöglichkeiten dort.


    Dazu mal ein kleines Tut: http://www.html5canvastutorial…5-canvas-animation-stage/


    Und natürlich finden sich dort auch bei Mozilla viele Beispiele: https://developer.mozilla.org/…Tutorial/Basic_animations


    Theoretisch dürfte sowas aber auch schon durch reines CSS lösbar sein, kannst dir ja auch mal
    anschauen ob du einen Weg ohne JS/Flash findest :)

    Nitamud ich glaub nicht. Denn Serverseitig wird ja sicherlich per PHP die Sql-db ausgelesen.
    Wenn die Verbindung offen bleibt (wenn ich long polling richtig verstanden hab), dann müsste ja das PHP script eine Endlosschleife sein.
    Das wäre evtl unnötig. Aber es gibt ja bei jedem Problem mehrere Lösungen.


    Long Polling zielt hier vor allem auf eine Live-Übertragung neuer Daten ab, wenn allerdings nur bei einem bestimmten Ereignis(click etc.)
    die Daten geupdatet werden sollen, ist dies wie du richtig sagst natürlich übertrieben. Einen recht schönen Überblick über die verschiedenen
    Verbindungsarten bietet mMn diese Stackoverflow-Seite:


    http://stackoverflow.com/quest…sent-events-sse-and-comet


    Den Vorteil den Long Polling gegenüber normalem Ajax-Polling hat liegt vor allem darin, das sie Anzahl der Requests kleiner gehalten wird.
    Am Besten schaust du Schmakus dir die Verbindugsarten in Verbindung mit deinem Ziel an und entscheidest dann, was das von dir
    Gewünschte am Besten umsetzen kann :)

    Hi!




    Welche weiteren Möglichkeiten gibt es, die MySQL Tabelle ständig zu aktualisieren?
    Am besten wäre eine Abfrage der SQL Datenbank im Hintergrund und sofern dort eine Änderung stattfindet soll die HTML Tabelle neu aufgebaut werden.


    Das klingt mir sehr danach als ob hier Long Polling gebraucht werden würde.
    Suchbegriffe sind da : Long Polling jQuery Ajax


    Long Polling beendet die Vebindung zum Server nämlich nicht und wartet immer bis an einer Stelle neue Daten vorliegen :)


    mfg Nita

    So wolf,


    ich hab dein obiges Layout mal mit Flexbox umgesetzt :





    Lifedemo: http://codepen.io/Nitamud/pen/EabrOZ


    bzw. hintergrundfarbenfrei:


    http://codepen.io/Nitamud/pen/OPOddd




    Herausgekommen ist eine gar wilde Suppe aus Divs , aber das Layout steht :D


    Wie stellst du dir denn das mit dem Ändern per JS vor? Habe dort noch nicht genau verstanden, wie du das planst :)


    mfg Nita

    Für Windows 8 ähnlichen Layouts gibt es ein Framework names Metro UI Css, das auf LESS basiert. Ich hatte damit noch nie etwas zu tun, abervlt ist es das was du suchst:-)