Ankündigung

Einklappen
Keine Ankündigung bisher.

Warum bekomme ich keine Email...

Einklappen

Neue Werbung 2019

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

  • Warum bekomme ich keine Email...

    Hallo zusammen

    Ich habe mir ein Login gebastelt mit Flash und PHP / MYSQL.
    Nun funtioniert eigentlich alles, ausser, dass ich keine Email bekomme wenn ein neuer User sich registriert hat.

    Der User wird in die DB eingetragen und sein Status wird auf 0 gestellt.
    0 = kein Login 1= Login möglich.

    Hier der Code für die Email:
    PHP-Code:
     // all checks ok
       
    $query = @mysql_query("INSERT INTO $table (userName,userPassword,userMail,userQuestion,userAnswer,user_status) VALUES " 
       
    ."('$username','$pass','$email','$question','$answer',false)");
       if(!
    $query)
       {
          return 
    "error=" mysql_error();
       } else { 
          return 
    "user=ok"
     echo 
    'Vor insert - Username = ' $username  .'Tabelle' $table '<=Ende';   
     
    mail("info@matteobaschera.ch","neuer user","neuer user $username registriert");  
     }

    Anbei noch der komplette user.php code.

    PHP-Code:
    <?
    require_once('conf.inc.php');
    require_once('functions.php');
    // ---
    // register new user
    // ---
    function register($username,$pass,$email,$question,$answer)
    {
       GLOBAL $db, $table;
       $username = trim($username);
       $pass = trim($pass);
       $email = trim($email);
       $question = addslashes(trim($question));
       $answer = addslashes(trim($answer));
       $validEmail = valid_email($email);
       $validName = valid_userName($username);
       $validPass = valid_password($pass);
       if(!$validName) return "error=ungueltiger Benutzername";
       if(!$validPass) return "error=ungueltiges Kennwort";
       if(!$validEmail) return "error=ungueltige Email-Adresse";
       $pass = md5(trim($pass));
       // all checks ok
       $query = @mysql_query("INSERT INTO $table (userName,userPassword,userMail,userQuestion,userAnswer,user_status) VALUES " 
       ."('$username','$pass','$email','$question','$answer',false)");
       if(!$query)
       {
          return "error=" . mysql_error();
       } else { 
          return "user=ok"; 
     echo 'Vor insert - Username = ' . $username  .'Tabelle' . $table . '<=Ende';   
     mail("info@matteobaschera.ch","neuer user","neuer user $username registriert");  
     }
    }


    // ---
    // login, check user
    // ---
    function login($username,$pass)
    {
       GLOBAL $db,$table;
       $username = trim($username);
       $pass = md5(trim($pass));
        $query = mysql_query("SELECT * FROM $table WHERE userName = '$username' AND userPassword = '$pass' AND user_status=true");
       return mysql_num_rows($query);
    }

    // ---
    // forget password
    // ---
    function forget($email)
    {
       GLOBAL $db,$table;
       $email = trim($email);
       $query = mysql_query("SELECT userName, userQuestion from $table WHERE userMail = '$email'");
       if(mysql_num_rows($query)<1)
       {
          return "error=Email wurde nicht in der Datenbank gefunden.";
       }
       $row = mysql_fetch_array($query);
       return "userName=$row[userName]&userQuestion=" . stripslashes($row['userQuestion']);
    }

    // ---
    // generate new password
    // ---
    function new_password($username,$email,$answer)
    {
       GLOBAL $db,$table;
       $username = trim($username);
       $email = trim($email);
       $answer = addslashes(trim($answer));
       $query = mysql_query("SELECT * FROM $table WHERE userName = '$username' AND userMail = '$email' AND userAnswer = '$answer'");
       if(mysql_num_rows($query) < 1)
       {
          return "error=falsche Antwort";
       }
       $rand_string = '';
       // ---
       // generating a random 8 chars lenght password
       // ---
       for($a=0;$a<7;$a++)
       {
          do
          {
             $newrand = chr(rand(0,256));
          } while(!eregi("^[a-z0-9]$",$newrand));
          $rand_string .= $newrand;
       }
       $pwd_to_insert = md5($rand_string);
       $new_query = mysql_query("UPDATE $table SET userPassword = '$pwd_to_insert' WHERE userName = '$username' AND userMail = '$email'");
       if(!$new_query)
       {
          return "error=unable to update value";
       }
       return "userName=$username&new_pass=$rand_string";
    }

    // ---
    // decisional switch
    // ---
    if(isset($_REQUEST["action"]))
    {
    switch($_REQUEST["action"])
    {
    case "register":
    $result = register($_REQUEST['username'],$_REQUEST['pass'],$_REQUEST['email'],$_REQUEST['question'],$_REQUEST['answer']);
    print $result;
    break;
    case "login":
    $result = login($_REQUEST['username'],$_REQUEST['pass']);
    print "user=" . $result;
    break;
    case "forget":
    $result = forget($_REQUEST['email']);
    print $result;
    break;
    case "new_password":
    $result = new_password($_REQUEST['username'],$_REQUEST['email'],$_REQUEST['answer']);
    print $result;
    break;
    }

    ?>
    DANKE für Eure Hilfe
    MAC4-EVER

  • #2
    Vlt. durch den Spamfilter ??

    Kommentar


    • #3
      Hallo,

      da es sich um einen Anfängerfehler handelt verschiebe ich das in das entsprechende Forum.

      Wo habe ich den Fehler gemacht ?
      Du springst mit return aus der Funktion ehe die Funktion mail() aufgerufen werden kann.

      Kommentar


      • #4
        Zitat von dr.e. Beitrag anzeigen
        Du springst mit return aus der Funktion ehe die Funktion mail() aufgerufen werden kann.
        Oh übersehen, so genau hab ich gar nicht hingeschaut.

        Kommentar


        • #5
          Haha...LOL... das wars.. habe ich ja voll übersehen.

          DANKE.

          Nun noch ne kleine Frage:

          Wie kann ich mir nun einen Link zu einem weiteren PHP-File zuschicken lassen, mit dem ich dann den User freischalten kann ?
          Damit ich nicht immer in's PHPmyAdmin gehen muss.

          In meiner DB habe ich eine Spalte mit dem Namen «user_status» eingerichtet. Dabei ist der Status des neuen Users am Anfang auf 0.
          Nun möchte ich mit einem weiteren PHP-File diesen einen EIntrag von 0 auf 1 ändern ?

          Welchen PHP Befehl muss ich da ausführen ? Iregendwas mit Alert Table glaube ich ....

          Es sollte aber zB. nur der User « Hans Muster» freigeschaltet werden und alle anderen nicht....

          Vielen Dank für Eure Hilfe
          MAC4-EVER

          Kommentar


          • #6
            Naja du kannst wohl deinen User an einer ID identifizieren ... dann schickst du dir einen Link ".../freischalten.php?user_id=xxx" xxx musst du dann eben mit der ID vom User füllen.

            Und im Skript kannst du dann einfach
            UPDATE user SET user_status = 1 WHERE user_id = xxx
            und da musst du halt den Parameterwert von user_id einsetzen.

            Kommentar


            • #7
              Titel sagt nichts aus, also ändern: Bitte aussagekräftige Threadtitel verwenden

              Kommentar


              • #8
                Zitat von Flor1an Beitrag anzeigen
                Oh übersehen, so genau hab ich gar nicht hingeschaut.
                Ich musste auch zweimal hinsehen...

                Kommentar

                Lädt...
                X