<?php
// Veritabanı bağlantı ayarları
$host = "host";
$username = "username";
$password = "password";
$dbname = "database";
// Veritabanı bağlantısı
$conn = mysqli_connect($host, $username, $password, $dbname);
// Bağlantı hatası varsa hata mesajını yazdır
if (!$conn) {
die("Veritabanı bağlantısı başarısız: " . mysqli_connect_error());
}
// Kullanıcı bilgilerini al
$email = mysqli_real_escape_string($conn, $_POST['email']);
$password = mysqli_real_escape_string($conn, $_POST['password']);
// Kullanıcı kayıt sorgusu
$query = "INSERT INTO users (email, password, status) VALUES ('$email', '$password', 0)";
// Sorguyu çalıştır
if (mysqli_query($conn, $query)) {
echo "Kayıt başarılı, onay için e-posta adresinize bir bağlantı gönderildi.";
} else {
echo "Bir hata oluştu, lütfen tekrar deneyin: " . mysqli_error($conn);
}
// Veritabanı bağlantısını kapat
mysqli_close($conn);
Maili göndermek için send_confirmation.php dosyası oluşturup aşağıdaki kod satırlarını dosya içerisine yapıştırıyoruz.
<?php
// E-posta ayarları
$to = $_POST['email'];
$subject = "Metin2 Hesap Onayı";
$message = "Lütfen hesabınızı onaylamak için aşağıdaki bağlantıya tıklayın:\n\n";
$message .= "http://www.siteadresiniz.com/confirm.php?email=" . $to;
$headers = "From: [email protected]\r\n";
// E-posta gönder
mail($to, $subject, $message, $headers);
Sırada confirm.php ile SMTP sunucusu üzerinden e-posta gönderme işlemini yapacağız. Kullanıcı kaydı sırasında veritabanına kaydedilen kullanıcının durumunun 0 olduğunu ve e-posta onayı gerektiğini belirtir. Kullanıcının e-posta adresine gönderilen bağlantıya tıkladığında, bu durum veritabanındaki kullanıcı durumunun 1 olarak güncellenebilir ve onaylandığı belirtilebilir. Aşağıdaki gibi bir confirm.php dosyası oluşturabilirsiniz:
<?php
// Veritabanı bağlantı ayarları
$host = "host";
$username = "username";
$password = "password";
$dbname = "database";
// Veritabanı bağlantısı
$conn = mysqli_connect($host, $username, $password, $dbname);
// Bağlantı hatası varsa hata mesajını yazdır
if (!$conn) {
die("Veritabanı bağlantısı başarısız: " . mysqli_connect_error());
}
// E-posta adresini al
$email = mysqli_real_escape_string($conn, $_GET['email']);
// Kullanıcı durumunu güncelleme sorgusu
$query = "UPDATE users SET status = 1 WHERE email = '$email'";
// Sorguyu çalıştır
if (mysqli_query($conn, $query)) {
echo "Hesabınız onaylandı, giriş yapabilirsiniz.";
} else {
echo "Bir hata oluştu, lütfen tekrar deneyin: " . mysqli_error($conn);
}
// Veritabanı bağlantısını kapat
mysqli_close($conn);
// PHPMailer kütüphanesini dahil et
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
// Gerekli sınıfları yükle
require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
// Yeni bir e-posta nesnesi oluştur
$mail = new PHPMailer(true);
// SMTP ayarlarını yap
$mail->isSMTP();
$mail->Host = 'smtp.mailtrap.io';
$mail->SMTPAuth = true;
$mail->Username = 'b18ee6e1dc16f0';
$mail->Password = '1a360049e7fc66';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
// E-posta ayarlarını yap
$mail->setFrom('[email protected]', 'Example');
$mail->addAddress($email);
$mail->isHTML(true);
$mail->Subject = 'Hesap Onayı';
$mail->Body = 'Hesabınızı onaylamak için lütfen <a href="http://localhost/confirm.php?email=' . $email . '">buraya tıklayın</a>.';
// E-postayı gönder
if (!$mail->send()) {
echo "E-posta gönderilirken bir hata oluştu: " . $mail->ErrorInfo;
} else {
echo "E-posta başarıyla gönderildi";
}
Bu kodlar register.php dosyası içinde kullanıcı kaydı yapıldıktan sonra ve confirm.php dosyası içinde kullanıcı hesabı onaylandıktan sonra çalıştırılmalıdır.
Bu şekilde, kullanıcının e-posta adresine gönderilen bağlantıya tıkladığında hesabının onaylandığı ve veritabanındaki durumunun güncellendiğini kullanıcıya belirtilebilirsiniz.
Kayıt sırasında mail onayını php dilinde bu şekilde yapıyoruz. Metin2 içinde aynı sistemi kullanabileceğimizi düşündüm ve belirttiğim şekilde php dilinde sizler için yazdım. Database bağlantısını vs. her şeyi düşünerek oluşturdum. Test etmedim fakat deneyip başarılı işlem yapan arkadaşlar yorumlarda düşüncesini dile getirebilir. Hata alan olursa hatayı belirtirse hataları düzeltip tekrardan hazır şekilde konuyu güncellerim. Şimdiden hayırlı kullanımlar dilerim herkese.