Enter-Taste / Submit-Button (Newsletter)

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

  • Enter-Taste / Submit-Button (Newsletter)

    Hallo zusammen,

    habe einen seltsamen Fall. Habe hier auch nur die umgekehrte Variante meines Problems finden können. Hoffe hier hat jemand eine zündende Idee.
    Und zwar: Habe einen kleinen Newsletter in eine Seite eingebunden. Der Bereich zum Eintragen, sieht wie folgt aus:

    PHP-Code:
    <form name="eintragen" method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
    <input type="text" name="email" size="25" class="mailcontainer" value="Newsletter" onfocus="this.value=''" onblur="this.value='Newsletter'" /> <input type="submit" value="subscribe" class="submit-button" />
    </form>

    <?php

      
    include ("content/checkmail.php");
      
      if (isset(
    $_POST["email"])) 
      {
          if (!
    check_email($_POST["email"]))
          {
            
    echo 
    "<div id='alert'><pre class='alert'>Sorry. This is an invalid e-mail address.</pre></div>";
          }

          else
          {
             if (!
    file_exists("content/adressen.txt"))  
             {
                
    $handle fopen("content/adressen.txt""a");
                
    fclose($handle);
             }
             
    $adressen file_get_contents("content/adressen.txt");   
             
    $adr_array=explode(";"$adressen);
             
        
          
             
             if (!
    in_array($_POST["email"],$adr_array))  
             {
                
    $handle fopen("content/adressen.txt","a");  
                
    array_push($adr_arraytrim($_POST["email"]));  
                
    $adr_neu implode(";",$adr_array); 
                
                
    fclose($handle);   
                
    unlink("content/adressen.txt");  
                
                
    $handle fopen("content/adressen.txt""a");  
                
    fwrite($handle$adr_neu);  
                
    fclose($handle);  
                
    echo 
    "<div id='alert'><pre class='alert'>Your registration has been successful.</pre></div>";

                }
                
            else {

    echo 
    "<div id='alert'><pre class='alert'>Your e-mail address already exists.</pre></div>";
        
                }
          }
      }

    ?>
    Gibt man nun eine Adresse ein und bestätigt man mit Enter, läuft das auch alles sauber durch. Es wird erkannt ob sie valide, bereits vergeben, oder nicht registriert ist und wird auch ggfs. wie gewünscht in die .txt geschrieben. Gibt man eine Adresse ein uns bestätigt mit dem Submit-Button, erhält man immer den alert: Sorry. This is an invalid e-mail address. (siehe Code).
    Kennt jemand das Phänomen? Was macht der Submit-Button denn da heimlich, dass die Adresse die Verifizierung nicht besteht? Hier noch der Code der checkmail.php

    PHP-Code:
    <?php

    function check_email($email

      
    $nonascii      "\x80-\xff";

      
    $nqtext        "[^\\\\$nonascii\015\012\"]"
      
    $qchar         "\\\\[^$nonascii]"

      
    $protocol      '(?:mailto:)'

      
    $normuser      '[a-zA-Z0-9][a-zA-Z0-9_.-]*'
      
    $quotedstring  "\"(?:$nqtext|$qchar)+\""
      
    $user_part     "(?:$normuser|$quotedstring)"

      
    $dom_mainpart  '[a-zA-Z0-9][a-zA-Z0-9._-]*\\.'
      
    $dom_subpart   '(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*'
      
    $dom_tldpart   '[a-zA-Z]{2,5}'
      
    $domain_part   "$dom_subpart$dom_mainpart$dom_tldpart"

      
    $regex         "$protocol?$user_part\@$domain_part"


      return 
    preg_match("/^$regex$/",$email); 
    }  
      
      
    ?>
    Besten Dank und Ahoi
    Zuletzt geändert von stickiundneffi; 06.12.2010, 00:02.

  • #2
    Hallo,

    die Maximale Zeilenlänge für Code liegt bei 100 Zeichen (empfohlen: 80). Bitte umbrechen.

    Die Ursache ist offensichtlich. Ist der User noch in dem Feld und drückt Enter wird die eingegebene Adresse abgeschickt. Drückt er auf den Button, wird das Feld erstmal verlassen (onblur!) und bekommt den Wert "Newsletter", der keine gültige Adresse ist.

    Zu den Debugging-Grundlagen gehört auch, sich mal die Post-Daten anzusehen, dann hättest du da selbst drauf kommen können

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      oh wie peinlich. hatte die ganze zeit noch den alten code. hatte das onblur rausgenommen, genau deswegen - nur scheinbar den falschen code wieder in die laufende datei kopiert. sorry dafür. aber auch danke dafür. war wohl die übermüdung. was wohl auch den fehlenden umbruch nach 80-zeichen erklärt.
      gruß stefan

      Kommentar

      Lädt...
      X