Ankündigung

Einklappen
Keine Ankündigung bisher.

regExp macht faxen

Einklappen

Neue Werbung 2019

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

  • regExp macht faxen

    Hallo,

    ich schreibe gerade ein kleines Registrierungsformular für einen Chat.

    Dabei wollte ich so eine Sicherheitsanzeige reinbasteln, welche zwar funktioniert, aber total fehlerhaft.. xD

    JS function
    PHP-Code:
    function setLevel()
    {
      var 
    zahlen_regexp = /[a-z][0-9]{1,}/i;
      var 
    zahlen_regexp2 = /[a-z][0-9]{2,}/i;
     
      if (
    document.getElementById('password').value.length >= && zahlen_regexp.test(document.getElementById('password').value))
      {
        
    document.getElementById('level').src 'images/level-2.gif';
      }
      else  if (
    document.getElementById('password').value.length >= && zahlen_regexp2.test(document.getElementById('password').value))
      {
        
    document.getElementById('level').src 'images/level-2.gif';
      } 
      else if (
    document.getElementById('password').value.length >= 4)
      {
        
    document.getElementById('level').src 'images/level-1.gif';
      }

    html:

    PHP-Code:
    <tr>
              <
    td><b>Passwort:</b></td>
              <
    td><input type="password" name="password" size="30" maxlength="40" id="password"  onKeyPress="setLevel();" /></td>
            </
    tr>
            <
    tr>
              <
    td>Sicherheitsstufe:</td>
              <
    td><img src="http://www.php.de/forum/images/level-0.gif" id="level" /></td>
            </
    tr
    södele, was ich möchte ist:

    Wenn man ´5 buchstaben eingegeben hat, soll es im img tag level-1.gif angezeigt werden.
    Wen man 5 buchstaben und 2 zahlen eingegeben hat, soll im img tag level-2.gif stehen.
    wenn man 5 buchstaben und 3 zahlen eingegeben hat, soll im img tag level-3.gif stehen...

    Bei mir ist aber so, dass das bild aufeinmal von 3 zu 2 wieder wechselt obwohl ich ein noch sichereres passwort eingetippt habe..

    Vielen Dank


    edit: Kaum hat man geschrieben, so findet man den Fehler...

    PHP-Code:
    function setLevel()
    {
      var 
    zahlen_regexp = /[a-z][0-9]{2,}/i;
      var 
    zahlen_regexp2 = /[a-z][0-9]{1,}/i;
      
      if (
    document.getElementById('password').value.length >= && zahlen_regexp.test(document.getElementById('password').value))
      {
        
    document.getElementById('level').src 'images/level-3.gif';
      }
      else  if (
    document.getElementById('password').value.length >= && zahlen_regexp2.test(document.getElementById('password').value))
      {
        
    document.getElementById('level').src 'images/level-2.gif';
      } 
      else if (
    document.getElementById('password').value.length >= 4)
      {
        
    document.getElementById('level').src 'images/level-1.gif';
      }

    Mein jetziges Problem ist, wenn man das passwort aus dem feld wieder rauslöscht, aber man davor ein ganz sicheres passwort eingetippt hat, so bleibt das bild vom ganz sicheren passwort.. Ich kann mir nicht erklären warum, denn beim OnKeyPress ist ja auch die backspace taste dabei, somit sollte er beim löschen auch prüfen... hmmm

    Wäre sehr dankbar für hilfe.


    Ambience
    Ich gebe gerne ICQ-Support gegen ein kleines Endgelt.

  • #2
    Mach mal ^ an den Anfang der RegExps und $ an den Schluss!


    Und wenn ich das richtig verstanden habe, stimmt dann das >= 4 auch nicht! Denn du willst ja 5 Buchstaben + mindestens 1 Zahl. Das sind dann schon 6 Zeichen! Mit >= 4 werden auch nur 4 Buchstaben zugelassen oder im ersten if 3 Buchstaben und eine Zahl oder 2 Buchstaben und 2 Zahlen!

    Und wenn du im 1. Fall 5 Buchstaben und nur eine einzige Zahl willst, macht {1} viel mehr sinn als {1,}! Ein wunder, dass du überhaupt in den zweiten Fall kommst!

    Desweitern hast du da zweimal das Bild mit der Zahl 2! Sollte wahrscheinlich beim zweiten Fall eine 3 sein oder?!

    Kommentar


    • #3
      also mein script sieht nun so aus.. funktioniert auch fast richtig...
      Wie gesagt, er stellt nur nicht die bilder beim löschen wieder um.... sonst funktioniert es... weiß auch net warum ich das >= 4 nehmen muss aufjedenfall geht es so, wenn ich >= 5 mache, muss ich 6 zeichen eingeben. oO
      Wie gesagt er muss nurnoch die bilder wieder umstellen... das ^und $ brauch ich auhc nicht, da die zahlen an beliebiger stelle stehen können bzw. die buchstaben
      PHP-Code:
      function setLevel()
      {
        var 
      zahlen_regexp = /[a-z]{4,}[0-9]{2,}/i;
        var 
      zahlen_regexp2 = /[a-z]{4,}[0-9]{1,}/i;
        
        if (
      document.getElementById('password').value.length >= && zahlen_regexp.test(document.getElementById('password').value))
        {
          
      document.getElementById('level').src 'images/level-3.gif';
        }
        else  if (
      document.getElementById('password').value.length >= && zahlen_regexp2.test(document.getElementById('password').value))
        {
          
      document.getElementById('level').src 'images/level-2.gif';
        } 
        else if (
      document.getElementById('password').value.length >= 4)
        {
          
      document.getElementById('level').src 'images/level-1.gif';
        }
        else
        {
          
      document.getElementById('level').src 'images/level-0.gif';
        }

      Ambience
      Ich gebe gerne ICQ-Support gegen ein kleines Endgelt.

      Kommentar

      Lädt...
      X