Ankündigung

Einklappen
Keine Ankündigung bisher.

Register-Script versendet keine Mail mehr

Einklappen

Neue Werbung 2019

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

  • Register-Script versendet keine Mail mehr

    Guten Abend,

    ich habe ein Problem Mein Register Script versendet urplötzlich keine Aktivierungsmail mehr. Es kommt auch keine Fehlermeldung! Es erscheint die Meldung: Der Account wurde erstellt und E-Mail versandt. In der Datenbank findet sich auch der Account doch eine E-Mail wird nicht mehr versendet.

    Gestern funktionierte alles einwandfrei und ich meine nichts geändert zu haben.
    PHP-Code:
    <?php
        
    include('connect.php');
        
    $verbindung mysql_connect($MYSQL_HOST$MYSQL_USERNAME $MYSQL_PASSWORD)
        or die(
    "Verbindung zur Datenbank konnte nicht hergestellt werden");

        
    mysql_select_db($MYSQL_DATABASE) or die ("Datenbank konnte nicht ausgewählt werden");

        if (
    'POST' == $_SERVER['REQUEST_METHOD']){
            if (isset(
    $_POST['username'], $_POST['passwort1'], $_POST['passwort2'], $_POST['email'], $_POST['vorname'], $_POST['nachname'], $_POST['adresse'], $_POST['postleitzahl'], $_POST['ort'])){
                if(!
    mb_strlen($_POST['username'],'utf-8') > 0
                    
    or !mb_strlen($_POST['passwort1'],'utf-8') > 0
                    
    or !mb_strlen($_POST['passwort2'],'utf-8') > 0
                    
    or !mb_strlen($_POST['email'],'utf-8') > 0
                    
    or !mb_strlen($_POST['vorname'],'utf-8') > 0
                    
    or !mb_strlen($_POST['nachname'],'utf-8') > 0
                    
    or !mb_strlen($_POST['postleitzahl'],'utf-8') > 0
                        
    or !mb_strlen($_POST['adresse'],'utf-8') > 0
                    
    or !mb_strlen($_POST['ort'],'utf-8') > 0){
                    echo 
    "<div class=regerror>Bitte alle Felder korrekt ausfüllen!</div>";
                    return;
                }
                if(
    mb_strlen($_POST['passwort1'],'utf-8') > 6){
                    if(
    $_POST['passwort1'] == $_POST['passwort2']){
                        if ((
    $Username trim($_POST['username'])) == '' OR
                            (
    $Password trim($_POST['passwort1'])) == '' OR
                                (
    $vorname trim($_POST['vorname'])) == '' OR
                                (
    $nachname trim($_POST['nachname'])) == '' OR
                                (
    $postleitzahl trim($_POST['postleitzahl'])) == '' OR
                                (
    $adresse trim($_POST['adresse'])) == '' OR
                                (
    $ort trim($_POST['ort'])) == '' OR
                            (
    $Email trim($_POST['email'])) == '' ){
                            echo 
    "<div class=regerror>Too many spaces!!!</div>";
                        }else{
                            
    $Username mysql_real_escape_string($Username);
                            if (!
    preg_match('~\A\S{3,30}\z~'$Username)){
                                echo 
    "<div class=regerror>Der Benutzername muss zwischen 3 und 30 Zeichen lang sein und darf keine Sonderzeichen enthalten.</div>";
                            }else{
                                
    $regex '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/';
                                if(!
    preg_match($regex$Email)){
                                    echo 
    "<div class=regerror>Ungültige E-Mail, bitte erneut eingeben.</div>";
                                }else{
                                    
    $sql="SELECT username FROM User WHERE username='".$Username."'";
                                    
    $query=mysql_query($sql)or die(mysql_error());
                                    if(
    mysql_num_rows($query) > 0){
                                        echo 
    "<div class=regerror>Benutzername wird bereits verwendet!</div>";
                                        return;
                                    }else{
                                    
    $sql="SELECT username FROM User WHERE email='".$Email."'";
                                    
    $query=mysql_query($sql)or die(mysql_error());
                                    if(
    mysql_num_rows($query) > 0){
                                        echo 
    "<div class=regerror>E-Mail wird bereits verwendet!</div>";
                                        return;
                                    }
                                    if (
    mysqli_connect_errno()){
                                        echo 
    "<div class=regerror>Verbindung zur Datenbank konnte nicht hergestellt werden ".mysqli_connect_error()."</div>";
                                    }else{
                                        
    $hash md5rand(0,1000) );
                                        
    mysql_query("INSERT INTO User (username, password, email, vorname, nachname, adresse, postleitzahl, ort, hash) VALUES(
                                            '"
    mysql_real_escape_string($Username) ."',
                                            '"
    mysql_real_escape_string(md5($Password)) ."',
                                            '"
    mysql_real_escape_string($Email) ."',
                                            '"
    mysql_real_escape_string($vorname) ."',
                                            '"
    mysql_real_escape_string($nachname) ."',
                                            '"
    mysql_real_escape_string($adresse) ."',
                                            '"
    mysql_real_escape_string($postleitzahl) ."',
                                            '"
    mysql_real_escape_string($ort) ."',
                                            '"
    mysql_real_escape_string($hash) ."') ") or die(mysql_error());
                                        
    $to      $Email;
                                        
    $subject 'Testmail | Verifizierung';
                                        
    $message '
    Vielen Dank für Ihre Anmeldung, '
    .$Username.' !
    Sie können sich gleich auf der Webseite einloggen sobald Sie den unten stehenden Link angeklickt haben.


    Hier finden Sie noch einmal Ihre Daten:
    Username: '
    .$Username.'
    Password: '
    .$Password.'
    ------------------------
    Wir hoffen, dass unser Projekt Ihnen gefällt und würden uns über Ihr Feedback freuen, welches Sie jederzeit an info@**Zensiert**.de schicken können.

    Bitte klicken Sie auf diesen Link um Ihren Account zu aktivieren:
    http://''zensiert''.de/work/regintern/verify.php?email='
    .$Email.'&hash='.$hash.'';

                                        
    $headers 'From:info@''zensiert''.de' "\r\n";
                                        
    mail($to$subject$message$headers);
                                        echo 
    "<div class=regerror>Der Account wurde erfolgreich erstellt, bitte aktiveren Sie ihn durch klicken auf<br />den Link in der von uns gesendeten E-Mail. Schauen Sie auch in Ihrem Spam-Ordner nach.</div>";
                                }
                            }
                        }
                    }
                        }
                }else{
                    echo 
    "<div class=regerror>Die Passwörter stimmen nicht überein!</div>";
                }
            }else{
                echo 
    "<div class=regerror>Das Passwort muss mindestens 7 Zeichen lang sein.</div>";
            }
        }else{
            echo 
    "<div class=regerror>Bitte jedes Feld korrekt ausfüllen.</div>";
        }
    }
    Findet sich der Fehler hier in dem Teil des Scripts?
    Die Scripts sind natürlich noch in Bearbeitung und erfüllen nicht alle Funktionen(wie zB AGB im folgenden Quellcode)

    Hier nochmal die passende Form dazu:
    PHP-Code:
    <div class="regist">


        <div class="register-form">
            <font style="font-size:12px;color:white;">*Alle Felder sind Pflichtfelder!</font>
            <div style="background:#ff3300"> <? include('register.php') ?>
            <?    $section['verify'] = 'veriform.php';  ?>
            </div>
            
    <h1>Benutzeranmeldung</h1>
    <form action="index.php" method="POST">
        <p><label>Benutzername :</label><br/>
        <input style="border-radius:5px;height:10px;margin-left:0px;" id="username" type="text" name="username" placeholder="..." /><br/></p>
        
        <p><label>Vorname :</label><br/>
        <input style="border-radius:5px;height:10px;margin-left:0px;" id="vorname" type="text" name="vorname" placeholder="..." /></p> 
        
        <p><label>Nachname :</label><br/>
        <input style="border-radius:5px;height:10px;margin-left:0px;" id="nachname" type="text" name="nachname" placeholder="..." /></p><br/>
        
        
        <p><label>Straße & Haus :</label><br/>
        <input style="border-radius:5px;height:10px;margin-left:0px;" id="adresse" type="text" name="adresse" placeholder="..." /></p>
        
        <p><label> Postleitzahl :</label><br/>
        <input style="border-radius:5px;height:10px;margin-left:0px;" id="postleitzahl" type="text" name="postleitzahl" placeholder="..." /></p>
        
        <p><label>Ort :</label><br/>
        <input style="border-radius:5px;height:10px;margin-left:0px;" id="ort" type="text" name="ort" placeholder="..." /></p><br/>
        
        
        <p><label>E-Mail :</label><br/>
         <input style="border-radius:5px;height:10px;margin-left:0px;" id="password" type="email" name="email" placeholder="..."/></p>
     
         <p><label>Passwort :</label><br/>
            <input style="border-radius:5px;height:10px;margin-left:0px;" id="password" type="password" name="passwort1" placeholder="..." /></p>
         <p><label>Wiederholen :</label><br/>
         <input style="border-radius:5px;height:10px;margin-left:0px;" id="password" type="password" name="passwort2" placeholder="..." /></p>
         <p><input type="checkbox" name="termsofuse" id="termsofuse" /> <label style="font-size:15px;" for="termsofuse">Ich habe die <a style="color:white;" href="terms_of_use.php">AGB</a> gelesen <br/>und akzeptiere diese.</label></p>
         
     
        <input class="regbutt" type="submit" name="submit" value="Jetzt anmelden" />
        </form>
    </div>
    </div>
    Alle Dateien werden in der Index zusammengeführt, deswegen gebe ich euch auch nochmal das Verifizierungsscript, irgendwo in diesen Dateien liegt der Fehler, denn der Mailserver funktioniert perfekt.

    PHP-Code:
    <div class="veri">


        <div class="veri-form">
    <?php
         
    include('connect.php');
        
    $con mysql_connect($GLOBALS['MYSQL_HOST2'], $GLOBALS['MYSQL_USERNAME'] , $GLOBALS['MYSQL_PASSWORD']);
        
    mysql_select_db($GLOBALS['MYSQL_DATABASE']) or die ("Can`t connect to database");


        if(isset(
    $_GET['email']) && !empty($_GET['email']) AND isset($_GET['hash']) && !empty($_GET['hash'])){
            
    $email mysql_real_escape_string($_GET['email']);
            
    $hash mysql_real_escape_string($_GET['hash']);
            
    $search mysql_query("SELECT email, hash, active FROM User WHERE email='".$email."' AND hash='".$hash."' AND active='0'") or die(mysql_error());
            
    $match  mysql_num_rows($search);
            if(
    $match 0){
                
    mysql_query("UPDATE User SET active='1' WHERE email='".$email."' AND hash='".$hash."' AND active='0'") or die(mysql_error());
                echo 
    '<div class="regerror"><font style="font-size:30px;">Herzlich Willkommen!</font><br/>Der Account wurde erfolgreich aktiviert. Sie können sich nun einloggen :)</div>';
            }else{
                echo 
    '<div class="regerror"><font style="font-size:30px;">Fehler:</font><br/>Der link ist ungültig oder Sie haben Ihren Account bereits aktiviert.</div>';
            }
        }else{
            echo 
    "<div class=regerror>404 - Page not found</div>";
        }
    ?>
    </div>
    </div>

  • #2
    Oh Gott, sieht das aus... Naja.

    http://php-de.github.io/jumpto/mail-class/
    Und wenn du nicht willst, dass das Script in naher Zukunft überhaupt nichtmehr funktioniert, solltest du von mysql_ auf mysqli_ oder PDO umsteigen.
    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

    Kommentar


    • #3
      Ich bin anfänger und habe mir diesen Teil schreiben lassen.
      Alles andere kann ich nach und nach umschreiben.
      Mir geht es einfach darum, dass es jetzt funktionieren muss, damit ich weiter machen kann.
      Ich muss den Fehler finden um zu lernen.
      Oder liegt es eventuell doch am Mailserver?( da habe ich definitiv nichts verändert seitdem es lief!)

      Kommentar


      • #4
        Das sieht etwas seltsam aus:

        $headers = 'From:info@''zensiert''.de' . "\r\n";

        ' + "

        Was steht denn im Apache error.log bzw. mail.log?

        Kommentar


        • #5
          Die obige Zeile mit $headers sollte einen Fehler bringen. Error-Reporting aktivieren!
          PHP-Code:
          ini_set('display_errors''On');
          error_reporting(-1);    //max. aufgedreht 
          Dies am Anfang des Scriptes einfügen, wenn alle Fehler beseitigt sind auskommentieren.

          Kommentar


          • #6
            Zitat von xDrago Beitrag anzeigen
            ... Oder liegt es eventuell doch am Mailserver?( da habe ich definitiv nichts verändert seitdem es lief!)
            Wie schon erwähnt nutze eine Mailerklasse.
            The string "()()" is not palindrom but the String "())(" is.

            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              Ergänzend zu meinen Vorrednern: du benutzt einmal mysql_* und einmal mysqli_* -> nicht gut!!

              PHP-Code:
              $verbindung mysql_connect($MYSQL_HOST$MYSQL_USERNAME $MYSQL_PASSWORD
              PHP-Code:
              if (mysqli_connect_errno()){ 
              Validitätsprüfungen kannst du deutlich eleganter mit filter_var (http://php.net/manual/de/function.filter-var.php) erledigen.

              Das hier:

              PHP-Code:
              if ('POST' == $_SERVER['REQUEST_METHOD']){ 
              ist überflüssig.

              Ich sag mal nett "unüblich" ist das hier:

              PHP-Code:
              if(!mb_strlen($_POST['username'],'utf-8') > 
              du prüfst z.B. mit

              PHP-Code:
              if(empty($_POST["meinFeld"])) {
              // ... 
              ob ein Wert mit übergeben wurde.

              Warum

              PHP-Code:
              return; 
              steht hier ein return??

              Ok, der Rest war mir jetzt zuviel zum durchschauen, aber Mailerklasse is ein "must have"!

              mfg wolf29
              while (!asleep()) sheep++;

              Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

              Kommentar


              • #8
                Danke für die ganzen Tipps, ich werde es berücksichtigen!

                Das Problem war allerdings ein ganz anderes. Beim überprüfen der logs stellte ich fest, dass ca. 10 Emails die Sekunde ausgingen, da ein Mitarbeiter irgendwie Malware auf den Server bekommen hat!
                Ich vermute dass der Server ausgelastet war und hoffe nicht, dass die IP auf der Blacklist steht :/

                OT: Weiß jemand wie ich von der Blacklist wieder runter kommen kann, falls dies der Fall ist?

                Kommentar

                Lädt...
                X