2015-08-14 3 views
1

Я строю регистрационную форму с использованием MySQL для хранения данных и работы отлично. при регистрации пользователей будет отправлено электронное письмо с подтверждением для активации учетных записей пользователей. проблема заключается не в проверке электронной почты, отправленной пользователям электронной почты, а в пользовательских данных, а код активации может попасть в mysql.отправьте электронное письмо на регистрацию пользователя, используя php

Вот код insert.php

<?php 
    //panggil file config.php untuk menghubung ke server 
    include('config.php'); 

    //tangkap data dari form 
    $nama = $_POST['nama']; 
    $username = mysql_real_escape_string($_POST['username']); 
    $email = mysql_real_escape_string($_POST['email']); 
    $alamat = $_POST['alamat']; 
    $telp = $_POST['telp']; 
    $password = mysql_real_escape_string($_POST['password']); 

    // regular expression for email check 
    $regex = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/'; 
    if(preg_match($regex, $email)) 
    { 
     $password=md5($password); // encrypted password 
     $activation=md5($email.time()); // encrypted email+timestamp 
     $count=mysql_query("SELECT id_user FROM user WHERE email='$email'"); 
     // email check 
     if(mysql_num_rows($count) < 1) 
     { 
      $query = mysql_query("insert into user (nama,email,telp,password,alamat,username,activation) VALUES('$nama', '$email', '$telp', '$password', '$alamat', '$username', '$activation')") or die(mysql_error()); 
      if ($query) 
      { 
       header('location:index.php'); 
      } 
      // sending email 
      include ('sendEmail.php'); 

      $to=$email; 
      $subject="Email verification"; 
      $body='Hi, <br/> <br/> Silakan verifikasi dengan klik link di bawah ini. <br/> <br/> <a href="http://localhost/LAPAN-Project/verify.php?code=' . $activation . '">Verifikasi</a>'; 

      sendEmail($to,$subject,$body); 
      $msg= "Registration successful, please activate email."; 
     } 
     else 
     { 
      $msg= 'The email is already taken, please try new.'; 
     } 
    } 
    else 
    { 
     $msg = 'The email you have entered is invalid, please try again.'; 
    } 
    // HTML Part 
//} 
?> 

и здесь код sendEmail.php

<?php 
function sendEmail($to,$subject,$body) 
{ 
    require ('class.phpmailer.php'); 
    $from  = "[email protected]"; 
    $mail  = new PHPMailer(); 
    $mail->IsSMTP(true);   // use SMTP 
    $mail->IsHTML(true); 
    $mail->SMTPAuth = true;     // enable SMTP authentication 
    $mail->Host  = "ssl://smtp.gmail.com"; // SMTP host 
    $mail->Port  = 465;     // set the SMTP port 
    $mail->Username = "*********@gmail.com"; // SMTP username 
    $mail->Password = "*********"; // SMTP password 
    $mail->SetFrom($from, 'From Name'); 
    $mail->AddReplyTo($from,'From Name'); 
    $mail->Subject = $subject; 
    $mail->MsgHTML($body); 
    $address = $to; 
    $mail->AddAddress($email, $to); 

    if(!$mail->Send()) 
     echo "Mailer Error: " . $mail->ErrorInfo; 
    else 
     echo "Message has been sent"; 
}  

?> 

Кто-нибудь есть какие-либо идеи, как это сделать?

+0

Есть ли какая-либо ошибка на этой странице? Я думаю, вам нужно сделать несколько изменений в вашем файле 'php.ini' при отправке почты с помощью SMTP. – Nitin

ответ

0

Вместо $mail->Host = "ssl://smtp.gmail.com"; // SMTP host

просто использовать

$mail->Host = "smtp.gmail.com"; // SMTP host

+0

ничего не произошло, письмо не было отправлено – Mbelgedes

+3

вы используете gmail в качестве хоста, а идентификатор электронной почты - 'me @ kumistebal.web.id' Я думаю, вам нужно использовать какой-либо идентификатор gmail для отправки электронной почты –

0

Вы должны изменить хост с $ mail-> Host = "smtp.gmail.com"; // SMTP-хост и $ mail-> Port = 25; // установить SMTP-порт

Смежные вопросы