Я строю регистрационную форму, используя 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";
}
?>
У кого-нибудь есть идеи как это сделать?
Вместо $mail->Host = "ssl://smtp.gmail.com"; // SMTP host
просто используйте
$mail->Host = "smtp.gmail.com"; // SMTP host
Вам нужно сменить хост с помощью $ mail-> Host = «smtp.gmail.com»; // хост SMTP и $ mail-> Port = 25; // установить порт SMTP