Ankündigung

Einklappen
Keine Ankündigung bisher.

Die Sache mit den Sonderzeichen nach und vor Formularprüfung

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Die Sache mit den Sonderzeichen nach und vor Formularprüfung

    Moin Moin,

    ihr wisst bestimmt die Lösung.

    Also ich versuchs mal kurz:

    1. ) Formularansicht;
    2. ) Mittels $_GET in einen anderen Modus um erneutes Eintragen in die Datenbank zu verhindern.

    3. ) Mit $_Post werden Daten übertragen in Formular 2 bzw. in den Modus aus Punkt 2. nach dem Übertragen werden die Daten in der Session gespeichert und die PostVariablen unset gemacht.
    Code:
     $_SESSION["feld1"]=$_POST['feld1'];    unset($_POST['feld1']);
    
     if ((htmlentities($_SESSION['feld1'],ENT_QUOTES) != $_SESSION['feld1']) ){
    $falscherFehler['feld1']= "
    <font class='false'>Keine Sonderzeichen.</font>";
    }
    Dann komt bei mit das Formular und wenn kein Fehler werden die Daten eingefügt.

    4.) In Punkt 3 wurden die Daten geprüft auf sonderzeichen. Nun ist aber ä ü ö ß ... und wie sie alle heissen, auch Sonderzeichen. Ich möchte nun das zumindest die 4 genannten nicht als Sonderzeichen behandelt werden.

    Ich wollte die immer umwandeln also wenn jemand Dörte eingibt das dann das ö nicht als Sonderzeichen angesehen wird.

    Und mir ist nich klar wo ich das jetzt zulassen kann. str_replace() hat net gefunzt. Reguläre Ausdrücke ? Oder
    Code:
    strtr($_SESSION['feld1'], "ä", "a")
    geht nicht

    Aber wo soll ich das jetzt irgendwie will das nich gehen und ich hab das Gefühl das ist der falsche Ansatz.

    Kann mir jemand auf die Sprünge helfen?

  • #2
    versuch es doch mal mit preg_match
    PHP-Code:
    if(preg_match("/^[A-Za-Z0-9äöü]"$_SESSION['feld1'])) 

    Kommentar


    • #3
      Danke.

      Da sagt er ne Warniung von -- No ending delimiter '/' --

      Kommentar


      • #4
        Das heißt so viel wie "Nicht beendeter Begrenzer". OK, bei function war wohl nen Tippfehler drin ^^
        PHP-Code:
        if(preg_match("/^[A-Za-Z0-9äöü]/"$_SESSION['feld1'])) 

        Kommentar


        • #5
          Kuck mal hier. http://regexp-evaluator.de/tutorial-backslash.html

          Ich versteh da aber irgendwie nur Bahnhof. Verstehst du das function

          Kommentar


          • #6
            Zitat von KingCrunch
            Das heißt so viel wie "Nicht beendeter Begrenzer". OK, bei function war wohl nen Tippfehler drin ^^
            PHP-Code:
            if(preg_match("/^[A-Za-Z0-9äöü]/"$_SESSION['feld1'])) 
            Ja das dachte ich auch nur dann kam

            --Compilation failed: range out of order in character class at offset 7 i--

            Kommentar


            • #7
              Hat vielleicht jemand ne Idee wie ich

              ü ä ö in einem Formular zulassen kann, von mir aus auch ohne Reguläre Ausdrücke?

              Hauptsache es geht nich.

              Kommentar


              • #8
                range out of order in character class
                a-Z


                PHP-Code:
                <?php

                   
                if(preg_match("/[^a-zA-ZÖöÄäÜüß]/",$_SESSION['feld1']))

                ?>
                ... prüft, ob andere Zeichen, ausser den "akzeptierten" im String enthalten sind.

                Kommentar


                • #9
                  Ok Cool. geht. Danke

                  Ich hab das jetzt so gemacht für die dies nicht wissen.

                  PHP-Code:
                  if ((htmlentities($_SESSION['feld1'],ENT_QUOTES) != $_SESSION['feld1'
                  && 
                  preg_match("/[^a-zA-ZÖöÄäÜüß]/",$_SESSION['feld1']) ) ){
                      
                  $fehler['feld1']= "<font class='false'>Keine Sonderzeichen.</font>";

                  Ich hab aber noch ne Frage.

                  wisst ihr wie ich das - ; * auch noch ausschliessen kann?

                  Welche Zeichen sollte man noch ausschliessen wenn es um die Sicherheit geht? Die Hochkomma und Slashes sind schon ausgeschlossen.
                  Denkt ihr das das Formular habwegs sicher ist mit dem hier gezeigten?

                  Kommentar


                  • #10
                    preg_match("/[^a-zA-ZÖöÄäÜüß\-;\*]/",$_SESSION['feld1'])

                    Kommentar


                    • #11
                      Dann soll das \ die Zeichen also verhindern.

                      Geht aber nicht also Fehlererkennung springt bei : ;dubi-dub* - nicht an und in der DB steht auch ;dubi-dub*

                      also auch wenn ich preg_match("/[^a-zA-ZÖöÄäÜüß\-\;\*]/",$_SESSION['feld1'])
                      schreibe.

                      Kommentar


                      • #12
                        \ verhindert diese Zeichen nicht, es nimmt diese Zeichen als Zeichen und nicht als Sonderfunktion, die eben manche Zeichen bei Regulären Ausdrücken haben.

                        Was willst du denn eigentlich genau?
                        ^ ist übrigens für die Negation zuständig.

                        Kommentar


                        • #13
                          Also ich wollte eigentlich verhindern das jemand mit ner Select anweisung oder Drop Anweisung lustige Sachen mit meinen Formulars machen kann und dachte das ich damit einen Angriffpunkt ausschliessen kann.
                          Ich weiss selber nicht wie das gehen soll wenn er die Tabellen garnicht kennt, aber dachte das es wichtig ist diese Zeichen von vorn herein auszuschließen.

                          Kommentar

                          Lädt...
                          X