MG Yaşı
2 Ay 1 Gün
Katılım
2 Şub 2026
Konular
224
Mesajlar
363
Tepkime puanı
54
Puan
53
Konum
İstanbul
Bu anlatımda, Metin2 kullanıcı kayıt sürecinde e-posta doğrulaması zorunlu olan bir kayıt sisteminin nasıl oluşturulacağını ele alacağız. Ayrıca PHP SMTP kullanarak e-posta gönderim işlemlerinin nasıl yapılacağını da adım adım göstereceğiz.


Kayıt esnasında kullanılan register.php dosyasını, kendi Metin2 kayıt sisteminize uygun şekilde düzenleyerek mevcut kayıt alanınıza entegre edebilirsiniz. Böylece sistemi doğrudan kendi Metin2 kayıt sayfanızda sorunsuz biçimde kullanmanız mümkün olur.


Aşağıda paylaşılan kodlar, veritabanına kaydedilen kullanıcı hesaplarının onaylanması için gerekli tüm süreci kapsamaktadır. İşleyiş; kullanıcı bilgilerinin alındığı register.php dosyasıyla başlar, e-posta adresine doğrulama bağlantısının gönderildiği send_confirmation.php dosyasıyla devam eder ve kullanıcının bağlantıya tıklamasıyla çalışan confirm.php dosyasıyla tamamlanır.

Kod:
register.php:
<?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.


Kod:
send_confirmation.php:
<?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: noreply@example.com\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:


Kod:
confirm.php:
<?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('from@example.com', '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ında kullanıcı kaydı tamamlandıktan sonra ve confirm.php dosyasında kullanıcı hesabı başarıyla onaylandıktan sonra çalıştırılacak şekilde tasarlanmıştır. Bu sayede kullanıcı, e-posta adresine gönderilen doğrulama bağlantısına tıkladığında hesabının aktif edildiğini ve veritabanındaki durumunun güncellendiğini net bir şekilde öğrenebilir.


Kayıt sürecinde e-posta doğrulamasını PHP dili ile bu mantıkta gerçekleştiriyoruz. Aynı sistemin Metin2 kayıt yapısına da uyarlanabileceğini düşündüğüm için, anlatılan yapıyı PHP ile sizler için hazırladım. Veritabanı bağlantıları dâhil olmak üzere tüm detaylar göz önünde bulundurularak oluşturulmuştur.


Henüz birebir test etme fırsatım olmadı. Deneyip sorunsuz şekilde çalışan arkadaşlar görüşlerini yorumlarda paylaşabilir. Hata alan olursa, karşılaştığı problemi belirtirse gerekli düzenlemeleri yaparak konuyu güncel ve hazır hâle getireceğim.


Herkese şimdiden hayırlı olsun, iyi kullanımlar dilerim.
 
Geri
Üst