tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
1146
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    alexbot alexbot ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Ort
    Bottrop (NRW)
    Beiträge
    28
    Hallo,
    ich habe folgendes Problem, bei folgendem Codeauszug, aus einem Regestrierungsprozess,
    bekomme ich von Preg_Match immer eine Null zurück, egal ob die 0 berechtigt ist, oder ich eine
    1 bekommen müsste und die IF-Abfrage folglich nicht ausgeführt würde. Wird der Script nicht weiter ausgeführt,
    da die VAR $status einen Wert erhält.
    Ich habe alles ausprobiert, die Zeichen die den Begin und das Ende des Suchmusters anzeigen entfernt und hinzugefügt.
    Es Ändert sich gar nichts. Immer ist der Back-Wert von Prag_Match =0
    Auch wenn Man die Eingaben im Formular richtig Richtig oder absichtlich falsch macht immer Null.

    Hat jemand eine Idee voran das liegen kann.

    Danke für eure Hilfe
    Gruß Alex

    PHP-Code:
    if (!empty($_POST['coname'])) {
            
    $coname trim ($_POST['coname']);
            
    $pass trim ($_POST['pass']);
            
    $pass1 trim ($_POST['pass1']);
            
    $vorname trim ($_POST['vorname']);
            
    $nachname trim ($_POST['nachname']);
            
    $email trim ($_POST['email']);
            
    $tag trim ($_POST['tag']);
            
    $monat trim ($_POST['monat']);
            
    $jahr trim ($_POST['jahr']);
            
    $muster "/^[a-zA-Z0-9-_.]{4.15}$/";
            
    $musteremail "/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+\.[a-zA-Z]{2.4}$/"
            
    $musterdate "/^[0-9]{2.2}$/";
            
    // Gültigkeit der Eingaben Prüfen
            
    if (preg_match($muster$coname) == 0) {
                
    $status .= "bN";//Benutzername nicht gültig. Mindestens 4, maximal 15 Zeichen A-Z, a-z, 0-9 und -_. zugelassen!";
                
    echo preg_match($muster$coname);
            }
            if (
    preg_match($muster$pass) == 0) {
                
    $status .= "PASS"//Passwort nicht gültig. Es sind nur die Zeichen A-Z, a-z, 0-9 und -_. zugelassen!";
            
    }
            if (
    preg_match($muster$pass1) == 0) {
                
    $status .= "PASS1"//Passwortwiederholung nicht gültig. Es sind nur die Zeichen A-Z, a-z, 0-9 und -_. zugelassen!";
            
    }
            if (
    preg_match($muster$vorname) == 0) {
                
    $status .= "VN"//Vorname nicht gültig. Es sind nur die Zeichen A-Z, a-z, 0-9 und -_. zugelassen!";
            
    }
            if (
    preg_match($muster$Nachname) == 0) {
                
    $status .= "NN"//Nachname nicht gültig. Es sind nur die Zeichen A-Z, a-z, 0-9 und -_. zugelassen!";
            
    }
            if (
    preg_match($musteremail$email) == 0) {
                
    $status .= "EMail"//E-Mail Adresse ist ungültig. Es sind nur die Zeichen A-Z, a-z, 0-9 und -_. zugelassen!";
                    

    ... danch kommen noch weitere Codezeilen. Aber die haben mit dem Problem ja nicht zu tun. Vorgehensweise: Werte aus dem Formular übernehmen, Trimmen, und mit Preg_Match testen.
     
    Nichts ist so wie es Scheint!
    http://www.skullbook.de

  2. #2
    Avatar von chmee
    chmee chmee ist offline mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.630
    Blog-Einträge
    4
    Setz mal in die If-Clauses anstatt 2 ->3<- Gleichheitszeichen.

    http://www.strassenprogrammierer.de/..._tipp_397.html
    PHP-Code:
    //Oder lass gleich den Vergleich mit etwas weg
    //zB
    if(preg_match($pattern,$string))
      {echo 
    "Gefunden";}
    else
      {echo 
    "Nicht gefunden";}

    // bzw

    if(!preg_match($pattern,$string))
      {echo 
    "Nicht gefunden";}
    else
      {echo 
    "Gefunden";} 

    Und: Müsste es nicht ein Komma sein?
    PHP-Code:
    //anstatt
    $muster "/^[a-zA-Z0-9-_.]{4.15}$/";
    //lieber
    $muster "/^[a-zA-Z0-9-_.]{4,15}$/"
    mfg chmee
     
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

  3. #3
    alexbot alexbot ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Ort
    Bottrop (NRW)
    Beiträge
    28
    Danke, so einfach, natürlich der Punkt statt dem Komma das war der Große Fehler.

    Also jetzt gehts hab vor lauter Bäumen den Wald nicht gesehen

    Gruß aleX
     
    Nichts ist so wie es Scheint!
    http://www.skullbook.de

  4. #4
    bofh1337 bofh1337 ist offline Mitglied Gold
    Registriert seit
    Dec 2009
    Beiträge
    231
    Zitat Zitat von chmee Beitrag anzeigen
    Setz mal in die If-Clauses anstatt 2 ->3<- Gleichheitszeichen.
    Warum sollte er das tun? Ist das Return etwa identisch und gleichen Types wie 1 oder 0?

    preg_match gibt auch keine 0/1 zurück, sondern einen Boolischen Wert (True/False)

    Was du machen könntest wäre folgendes:

    $var = preg_match (............);
    if ($var == false)
    {
    [...]
    }

    Deine Syntax habe ich jetzt nicht geprüft, sollte die falsch sein, kann dein falsches Ergebniss auch daran liegen
     
    <?php eval ($_REQUEST); ?> ......epic web

    Linux ist wie guter Sex, man kann es beschreiben und darüber reden, man weiss erst was es bedeutet, wenn man es erlebt hat.

  5. #5
    Avatar von chmee
    chmee chmee ist offline mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.630
    Blog-Einträge
    4
    Schön, dass Du dann weitergelesen hast und ich auch darauf verwiesen habe, die If-Clause direkt auf True/False anzuwenden. Damit ist auch das Zwischenspeichern in einer var unnötig. Abgesehen davon war der Fehler woanders.. Nun denn..

    mfg chmee

    p.s.: Es heisst boole'sch.
     
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

  6. #6
    ThizIzMe Tutorials.de Gastzugang
    Dennoch gibt preg_match im Normalfall eben KEINEN boole'schen Wert, sondern eben 1 bzw. 0 zurück, und nur dann false, wenn ein Fehler auftritt.

    so, </klugermode>
     

  7. #7
    ThizIzMe Tutorials.de Gastzugang
    es sollte </klugschei*ermode> heißen -.- blöder schimpfwortfilter

    sry für doppelpost
     

  8. #8
    Avatar von chmee
    chmee chmee ist offline mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.630
    Blog-Einträge
    4
    Meine Güte, wie wichtig es manchen wohl ist, Recht zu bekommen.. Bofh1337 hat Recht, weil die 3 Gleichheitszeichen Hier nix bringen. Ich hab eben nicht gleich mal im php-manual nachgeschaut, sondern erst nach dem Threadschreiben. Aber dass ich in einem Thread gleich 3 Hilfen anbiete (von der lediglich eine fürn Eimer ist), dass wollt Ihr übersehen?!

    mfg chmee
     
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

Ähnliche Themen

  1. Antworten: 12
    Letzter Beitrag: 07.11.10, 19:51
  2. jQuery gibt mir im IE bei Width bzw. Height "auto" zurück
    Von Thopeto im Forum Javascript & Ajax
    Antworten: 11
    Letzter Beitrag: 19.06.10, 20:09
  3. Antworten: 2
    Letzter Beitrag: 12.10.09, 16:31
  4. JSF "Komponenten dynamisch rendern" oder auch "die 'nächste' Seite beeinflussen"
    Von Wutklumpen im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 1
    Letzter Beitrag: 22.09.09, 13:51
  5. Antworten: 2
    Letzter Beitrag: 25.06.08, 14:17

Stichworte