2009-06-23 8 views
1

J'ai la fonction suivante en envoyant un email deux fois (et je crois que si ($ result) deux fois).fonction d'envoi de courrier électronique deux fois

il est appelé sur une page séparée:

<?php $User = new User(); 
    $User->ValidReg(); 
    $valid = $User->ValidReg(); 
    if ($valid === false) { 

est ici la fonction de sa catégorie:

public function ValidReg() { 
    if ( !empty($_POST['username']) 
    && !empty($_POST['password']) 
    && !empty($_POST['email']) 
    && !empty($_POST['state'])) { 

    //valid ? 
    $valid = true; 

    $username = mysql_real_escape_string($_POST['username']); 
    $password = md5(mysql_real_escape_string($_POST['password'])); 
    $email = mysql_real_escape_string($_POST['email']); 
    $firstname = mysql_real_escape_string($_POST['firstname']); 
    $lastname = mysql_real_escape_string($_POST['lastname']); 
    $state = mysql_real_escape_string($_POST['state']); 

    $checkusername = mysql_query("SELECT * FROM users WHERE Username = '".$username."'"); 

    if(mysql_num_rows($checkusername) == 1) { 
     echo "<div id='shopperlogin1'><p>Sorry, that username is taken.<br /> Please go back and try again.</p></div>"; 
    } 
    else { 
     //test 
     $confirm_code=mysql_real_escape_string(md5(uniqid(rand()))); 

     $sql="INSERT INTO temp_users (
       confirm_code, Username, Password, 
       EmailAddress, FirstName, LastName, State) 
      VALUES (
       '$confirm_code', '$username', '$password', 
       '$email', '$firstname', '$lastname', '$state')"; 
     $result=mysql_query($sql) 
     or die ("Query failed: " . mysql_error() . " Actual query: " . $query); 

     // if suceesfully inserted data into database, send confirmation link to email 
     if ($result) { 

     // send e-mail to ... 
     $to=$email; 

     // Your subject 
     $subject="Your confirmation link here"; 

     // From 
     $header="[email protected]"; 

     // Your message 
     $message="Your Comfirmation link \r\n"; 
     $message.="Click on this link to activate your account \r\n"; 
     $message.="http://www.employeediscounted.com/secret/login.php?passkey=$confirm_code"; 

     // send email 
     $sentmail = mail($to,$subject,$message,$header); 
     } 

     // if not found 
     else { 
     echo "<div id='emailmsg'>Not found your email in our database.</div>"; 
     } 

     // if your email succesfully sent 
     if($sentmail){ 
     echo "<div id='emailmsg'>Your Confirmation link Has Been Sent To Your Email Address.</div>"; 
     } 
     else { 
     echo "<div id='emailmsg'>Cannot send Confirmation link to your e-mail address.</div>"; 
     } 
    } 
    } 
    else { 
    $valid = false; 
    } 
    return $valid; 
} 
+0

Je vais prendre un pour la équipe et formater l'enfer hors de ce code. – Welbog

+3

Là, j'ai réduit le style incohérent global et normalisé l'indentation. Encore beaucoup de très longues cordes là-dedans, cependant. – Welbog

+0

@Welbog: Grande amélioration - merci de prendre le temps! – RichieHindle

Répondre

6

Soit je manque quelque chose, ou vous êtes tout simplement appeler la fonction deux fois :

$User->ValidReg(); 
$valid = $User->ValidReg(); 

Alors, oui, vous allez envoyer deux emails!

(vous attendiez le deuxième appel à l'échec parce que l'utilisateur existe déjà? Il ne sera pas parce que vous utilisez deux tables différentes, users contre temp_users.)

+0

Hmmm, oui j'étais. Bon alors, je vais me débarrasser de la première fonction. Je suppose que cela devrait tout réparer. – asdfasdfasdfasdf

+0

Yah, il l'a réparé. Je vous remercie. – asdfasdfasdfasdf

Questions connexes