отправить электронное письмо в регистр пользователя с помощью php

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

Вот код для 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";
}    

?>

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


person Mbelgedes    schedule 14.08.2015    source источник
comment
Это показывает какую-либо ошибку на этой странице? Я думаю, вам нужно внести несколько изменений в файл php.ini при отправке почты с использованием SMTP.   -  person Talk2Nit    schedule 14.08.2015


Ответы (2)


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

просто используйте

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

person Mohit Shrivastava    schedule 14.08.2015
comment
вы используете Gmail в качестве хоста, а идентификатор электронной почты [email protected]. Я думаю, вам нужно использовать какой-либо идентификатор Gmail для отправки электронной почты - person Mohit Shrivastava; 14.08.2015

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

person soni8010    schedule 14.08.2015