Puan
164
Çözümler
2
- Katılım
- 18 Ocak 2025
- Mesajlar
- 215
- Çözümler
- 2
- Tepkime puanı
- 7
- Puan
- 164
- Konum
- Zonguldak
- Web sitesi
- metin2pserverler.com
Metin2 kullanıcı kaydı sırasında e-posta onayı gerektiren bir kayıt sistemi oluşturmak için kullanılabilir ve aynı zamanda PHP SMTP ile e-posta gönderme işlemlerini yapacağız. Kayıt sırasında register.php dosyasını metin2 kayıt sisteminize göre uyarlayıp kayıt alanına register.php içeriklerini girerek kendi metin2 kayıt sayfanızda kullanabilirsiniz.
Aşağıdaki kod, veritabanındaki kullanıcı hesaplarının onaylanması için gereken tüm adımları içermektedir. Kodlar, veritabanındaki kullanıcıların kaydedildiği bir register.php dosyasından başlamak üzere, e-posta adresine onay bağlantısı gönderildiği bir send_confirmation.php dosyasına ve son olarak kullanıcının bağlantıya tıkladığı confirm.php dosyasına eklenmelidir.
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.
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:
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.
Aşağıdaki kod, veritabanındaki kullanıcı hesaplarının onaylanması için gereken tüm adımları içermektedir. Kodlar, veritabanındaki kullanıcıların kaydedildiği bir register.php dosyasından başlamak üzere, e-posta adresine onay bağlantısı gönderildiği bir send_confirmation.php dosyasına ve son olarak kullanıcının bağlantıya tıkladığı confirm.php dosyasına eklenmelidir.
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ı 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.