eregi() und das Scharfe S

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    richtig.

    Kommentar


    • #17
      Aber ich gebe keine Zeichen ein, die nicht in der Klammer stehen -.- Also müsste es doch funktionieren :?
      -Am Anfang war das Wort-

      Ich habe fertig mit Abi ^^

      Kommentar


      • #18
        Oder meinst du, die Sonerzeichen werden durch eine flasche Kodierung in irgendwelche & s z l i g; zeug umgewandelt - da wären dann natürlich auch Zeichen drin, die nicht erlaubt sind.
        -Am Anfang war das Wort-

        Ich habe fertig mit Abi ^^

        Kommentar


        • #19
          versuchs noch mal mit einer vernünftigen problembeschreibung.
          samt code.

          Kommentar


          • #20
            PHP-Code:
            <?php
            //SQL Queries für Unique Vergleich--------------------------------------------------------------
            $datas_equal="SELECT
                    name,
                    vorname,
                    strasse,
                    plz,
                    ort 
                     FROM 
                    microsite_pkv_kunde
                     WHERE 
                    name     = '"
            .mysql_real_escape_string($_POST['name'])."' AND
                    vorname = '"
            .mysql_real_escape_string($_POST['vorname'])."' AND
                    strasse = '"
            .mysql_real_escape_string($_POST['strasse'])."' AND
                    plz     = '"
            .mysql_real_escape_string($_POST['plz'])."' AND
                    ort     = '"
            .mysql_real_escape_string($_POST['ort'])."' ";
                    
            //Funktionen zur formellen Überprüfung----------------------------------------------------------
            function check_easy_string($in) {
                if(
            preg_match('/[^a-z- äöüß]/i',$in)){
                    return 
            false;
                    }
                return 
            $in;
                }

            function 
            check_numeric($in) {
                if(
            preg_match('/[^0-9 ]/i',$in)){
                    return 
            false;
                    }
                return 
            $in;
                }

            function 
            check_numeric_string($in) {
                if(
            preg_match('/[^a-z0-9 ]/i',$in)){
                    return 
            false;
                    }
                return 
            $in;
                }
            function 
            check_strasse($in) {
                if(
            preg_match('/[^a-z- .äöüß]/i',$in)){
                    return 
            false;
                    }
                return 
            $in;
                }
            //Magic Quotes entfernen--------------------------------------------------------------------------
            if(get_magic_quotes_gpc()) 
                {        
                foreach(
            $_POST AS $key => $value)
                    {
                    
            $_POST[$key] = stripslashes($value);
                    }   
                }

            //Überprüfung auf Vollständigkeit------------------------------------------------------------------
            if(trim($_POST['name']) == "")
                {
                die(
            "Bitte geben Sie ihren Namen an.");
                }

            if(
            trim($_POST['vorname']) == "")
                {
                die(
            "Bitte geben Sie ihren Vornamen an.");
                }
            if(
            trim($_POST['vorwahl']) == "")
                {
                die(
            "Bitte geben Sie ihre Vorwahl an.");
                }

            if(
            trim($_POST['rufnummer']) == "")
                {
                die(
            "Bitte geben Sie ihre Rufnummer an.");
                }
            if(
            trim($_POST['strasse']) == "")
                {
                die(
            "Bitte geben Sie ihre Straße an.");
                }

            if(
            trim($_POST['hausnummer']) == "")
                {
                die(
            "Bitte geben Sie ihre Hausnummer an.");
                }
            if(
            trim($_POST['plz']) == "")
                {
                die(
            "Bitte geben Sie ihre Postleitzahl an.");
                }

            if(
            trim($_POST['ort']) == "")
                {
                die(
            "Bitte geben Sie ihren Ort an.");
                }
            if(
            trim($_POST['geb_jahr']) == "")
                {
                die(
            "Bitte geben Sie ihr Geburtsjahr an.");
                }

            //Formelle Überprüfung------------------------------------------------------------------------------
            //Überprüfung auf SQL Injection von Name,Vorname und Ort--------------------------

            if(check_easy_string($_POST['name']) == false){
                die(
            "Es sind lediglich Buchstaben<br />
                     und Bindestriche bei der Eingabe des<br />
                     Namens zul&auml;ssig."
            );
                }
            if(
            check_easy_string($_POST['vorname']) == false){
                die(
            "Es sind lediglich Buchstaben<br />
                     und Bindestriche bei der Eingabe des<br />
                     Vornamens zul&auml;ssig."
            );
                }
            if(
            check_easy_string($_POST['ort']) == false){
                die(
            "Es sind lediglich Buchstaben<br />
                     und Bindestriche bei der Eingabe des<br />
                     Ortes zul&auml;ssig."
            );
                }

            //Überprüfung auf SQL Injection von Vorwahl, Rufnummer und Geburtsjahr------------

            if(check_numeric($_POST['vorwahl']) == false){
                die(
            "Es sind lediglich Zahlen bei<br />
                     der Eingabe der Vorwahl zul&auml;ssig."
            );
                }
            if(
            check_numeric($_POST['rufnummer']) == false){
                die(
            "Es sind lediglich Zahlen bei<br />
                     der Eingabe der Rufnummer zul&auml;ssig."
            );
                }
            if(
            check_numeric($_POST['geb_jahr']) == false){
                if( 
            strlen($_POST['geb_jahr']) < '4' OR strlen($_POST['geb_jahr']) > '4'){
                    die(
            "Bitte geben Sie ihr Geburtsjahr<br />
                         als vierstellige Zahl an."
            );
                    }
                }
            if(
            check_numeric($_POST['plz']) == false){
                die(
            "Die Postleitzahl darf nur Zahlen entahlten");
                }
            if( 
            strlen($_POST['plz']) < '5' OR strlen($_POST['plz']) > '5'){
                die(
            "Bitte geben Sie ihre Postleitzahl<br />
                     als fünfstellige Zahl an."
            );
                }

            //Überprüfung auf SQL Injection von Hausnummer------------------------------------

            if(check_numeric_string($_POST['hausnummer']) == false){
                die(
            "Es sind lediglich Zahlen und Buchstaben<br />
                     bei der Eingabe der Vorwahl zul&auml;ssig."
            );
                }

            //Überprüfung auf SQL Injection Strasse------------------------------------------

            if(check_strasse($_POST['strasse']) == false){
                die(
            "Es sind lediglich Buchstaben und Punkte<br />
                     bei der Eingabe der Strasse zul&auml;ssig."
            );
                }

            //Überprüfung auf SQL Injection von E-Mai-Adresse---------------------------------
            $checkemail eregi("^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,4}$",$_POST['email']); 

            if(!
            $checkemail){ 
                die(
            "Bitte geben Sie eine korrekte EMail Adresse an.\n"); 
                }

            //Inhaltliche Überprüfung---------------------------------------------------------------------------
            //Geburtsjahr über 60 ?------------------------------------------------------------

            if((int)$_POST['geb_jahr'] <= 1947){
                die(
            "Bitte geben Sie ein gültiges Geburtsjahr ein.<br />
                     Bei einem Geburtsjahr vor 1947 bitten wir<br />
                     um Verständnis, dass wir keine<br />
                     Krankenverischerungsvergleiche mehr durchführen"
            );
                }

            //Hat User DSB zugestimmt?
            if(!isset($_POST['datenschutz'])){
                die(
            "Bitte stimmen Sie unseren Datenschutzbestimmungen zu.");
                }

            //Überprüfung auf Unique der Daten (hat der Benutzer sich schonmal eingetragen?)-------------------
            $result_datas_equal mysql_query($datas_equal) OR die(mysql_error());

            if(
            mysql_num_rows($result_datas_equal)){
                die(
            "Diese Kundendaten sind schon in unserer Datenbank vorhanden.");
                }

            //Zusammenfügen der Geburtsdaten-------------------------------------------------------------------
            $geburtsdatum $_POST['geb_jahr']."-".$_POST['geb_mon']."-".$_POST['geb_tag'];

            $eintragen "INSERT INTO microsite_pkv_kunde
                            (anrede, 
                             name, 
                             vorname, 
                             strasse, 
                             hausnummer, 
                             plz, 
                             ort, 
                             vorwahl, 
                             rufnummer, 
                             erreichbarkeit, 
                             geburtsdaten, 
                             taetigkeit, 
                             versicherung, 
                             email)
                          VALUES
                            ('"
            .mysql_real_escape_string(htmlspecialchars($_POST['anrede']))."',
                             '"
            .mysql_real_escape_string(htmlspecialchars($_POST['name']))."',
                             '"
            .mysql_real_escape_string(htmlspecialchars($_POST['vorname']))."',
                             '"
            .mysql_real_escape_string(htmlspecialchars($_POST['strasse']))."',
                             '"
            .mysql_real_escape_string(htmlspecialchars($_POST['hausnummer']))."',
                             '"
            .mysql_real_escape_string(htmlspecialchars($_POST['plz']))."',
                             '"
            .mysql_real_escape_string(htmlspecialchars($_POST['ort']))."',
                             '"
            .mysql_real_escape_string(htmlspecialchars($_POST['vorwahl']))."',
                             '"
            .mysql_real_escape_string(htmlspecialchars($_POST['rufnummer']))."',
                             '"
            .mysql_real_escape_string(htmlspecialchars($_POST['erreichbarkeit']))."',
                             '"
            .mysql_real_escape_string(htmlspecialchars($geburtsdatum))."',
                             '"
            .mysql_real_escape_string(htmlspecialchars($_POST['taetigkeit']))."',
                             '"
            .mysql_real_escape_string(htmlspecialchars($_POST['versicherung']))."',
                             '"
            .mysql_real_escape_string(htmlspecialchars($_POST['email']))."' )";
                             
            mysql_query($eintragen) OR die(mysql_error()); 

            var_dump($_POST);
            Die DB Verbindung hab ich jetzt mal ganz gezielt raus gelassen XD

            Bei Eingabe von Umlauten, egal in welchem Feld, gibt mit der Browser die Sätze aus, die ich bei der preg_match Überprüfung für den Fall False angegeben habe.
            -Am Anfang war das Wort-

            Ich habe fertig mit Abi ^^

            Kommentar


            • #21
              bleib bei relevantem code.
              lies tontechnikers nachricht sowie die verlinkte seite noch mal.

              Kommentar


              • #22
                Ich versteh das nicht Ich matche nur auf die ersten Zeichen? Auf die ersten Zeichen in der eckigen Klammer oder wie? Dann müsste es doch funktionieren, wenn ich dieses komische ^ da weg mache. Aber das macht es nicht.
                -Am Anfang war das Wort-

                Ich habe fertig mit Abi ^^

                Kommentar


                • #23
                  Auf die ersten Zeichen in der eckigen Klammer oder wie?
                  nein, auf das erste zeichen des referenzstrings.
                  ... wenn ich dieses komische ^ da weg mache.
                  zeugt nicht davon, dass du es verstanden hast. beantworte die frage nochmal, was ein zirkumflex dort macht.

                  Kommentar


                  • #24
                    es negiert (ist doch der richtige ausdruck oder?) die angabe in der eckigen klammer
                    -Am Anfang war das Wort-

                    Ich habe fertig mit Abi ^^

                    Kommentar


                    • #25
                      Aber es kann sich ja nicht nur auf das erste Zeichen des Referenzstrings beziehen, denn da steht nicht der Umlaut - der steht mittendrin.
                      -Am Anfang war das Wort-

                      Ich habe fertig mit Abi ^^

                      Kommentar


                      • #26
                        genau, d.h. es akzeptiert alle zeichen außer den angegebenen. nur wo?

                        Aber es kann sich ja nicht nur auf das erste Zeichen des Referenzstrings beziehen, ...
                        aber genau das besagt dein regulärer ausdruck.

                        Kommentar


                        • #27
                          Du verwirrst mich. Es akzeptiert doch nicht alle AUßER den angegebenen, sondern umgekehrt !? In dem String, den ich übergebe.
                          -Am Anfang war das Wort-

                          Ich habe fertig mit Abi ^^

                          Kommentar


                          • #28
                            Das kann da nicht stehen. Er muckt nämlich rum obwohl es mitten im Wort ist.
                            -Am Anfang war das Wort-

                            Ich habe fertig mit Abi ^^

                            Kommentar


                            • #29
                              Es akzeptiert doch nicht alle AUßER den angegebenen, sondern umgekehrt !?
                              dann hast du das wort "negiert" nicht verstanden. lies noch mal die erklärung auf der verlinkten seite.
                              Das kann da nicht stehen.
                              der muss auch anders.

                              Kommentar


                              • #30
                                Wenn er eben diese Zeichen nicht akzeptieren würde, dann würde ich gar nichts reinschrieben können, auch nicht ohne Umlaute: Aber ohne Umlaute gehts. Zeig mir doch eifnach was der Fehler ist.
                                -Am Anfang war das Wort-

                                Ich habe fertig mit Abi ^^

                                Kommentar

                                Lädt...
                                X