Web projelerinde kullanıcı doğrulaması, güvenliğin sağlanması ve spam hesapların önlenmesi açısından oldukça önemlidir. PHP ile e-posta doğrulama ve aktivasyon sistemi oluşturmak, kullanıcıların hesaplarını doğrulamaları için e-posta yoluyla aktivasyon linki gönderilmesini sağlar. Bu makalede, PHP e-posta doğrulama ve aktivasyon sistemi oluşturmanın önemini, sürecini ve örnek kodlarını adım adım inceleyeceğiz.
Kullanıcı kayıt sürecinde e-posta doğrulaması, güvenli ve geçerli kullanıcıların sisteme kaydolmasını sağlar. Bu makalede, PHP kullanarak e-posta doğrulama ve aktivasyon sistemi oluşturmayı, gerekli adımları ve örnek kodları öğreneceksiniz. Anahtar kelimeler:PHP e-posta doğrulama, e-posta aktivasyon, PHP mailer, kullanıcı doğrulama.
E-posta doğrulaması, kullanıcıların gerçek e-posta adreslerini kullanarak kaydolmalarını sağlar ve spam hesapların önüne geçer. Ayrıca, kullanıcıların e-posta adreslerine erişimleri olduğunu doğrulayarak, hesap güvenliğini artırır. E-posta doğrulama ile:
E-posta doğrulama sürecinin ilk adımı, kullanıcının kaydolduğunda doğrulama e-postası göndermektir. Bunun için PHPMailer gibi bir kütüphane kullanabiliriz. PHPMailer, SMTP protokolü üzerinden e-posta gönderimini kolaylaştırır.
PHPMailer'ı Composer ile kolayca kurabilirsiniz:
composer require phpmailer/phpmailer
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
function sendVerificationEmail($userEmail, $token) {
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'smtp.example.com';
$mail->SMTPAuth = true;
$mail->Username = 'your_email@example.com';
$mail->Password = 'your_password';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->setFrom('your_email@example.com', 'Mailer');
$mail->addAddress($userEmail);
$mail->isHTML(true);
$mail->Subject = 'E-posta Doğrulama';
$mail->Body = "Lütfen hesabınızı doğrulamak için aşağıdaki linke tıklayın: <a href='http://yourdomain.com/verify.php?token=$token'>Doğrulama Linki</a>";
$mail->send();
echo 'Doğrulama e-postası gönderildi.';
} catch (Exception $e) {
echo "E-posta gönderilemedi. Mailer Hatası: {$mail->ErrorInfo}";
}
}
?>
Kullanıcı kayıt olduğunda, bir doğrulama token'ı oluşturup bunu veritabanında saklamalı ve kullanıcıya e-posta ile göndermelisiniz. Kullanıcı e-postadaki linke tıkladığında, token'ı kontrol edip hesabını aktif hale getirebilirsiniz.
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Bağlantı hatası: " . $conn->connect_error);
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$userEmail = $_POST['email'];
$token = bin2hex(random_bytes(50));
$sql = "INSERT INTO users (email, token, is_active) VALUES ('$userEmail', '$token', 0)";
if ($conn->query($sql) === TRUE) {
sendVerificationEmail($userEmail, $token);
} else {
echo "Hata: " . $sql . "<br>" . $conn->error;
}
}
$conn->close();
?>
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Bağlantı hatası: " . $conn->connect_error);
}
if (isset($_GET['token'])) {
$token = $_GET['token'];
$sql = "SELECT * FROM users WHERE token='$token' AND is_active=0";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$sql = "UPDATE users SET is_active=1 WHERE token='$token'";
if ($conn->query($sql) === TRUE) {
echo "Hesabınız aktif edildi!";
} else {
echo "Hata: " . $conn->error;
}
} else {
echo "Geçersiz veya süresi dolmuş token.";
}
}
$conn->close();
?>
Tüm süreci bir araya getiren örnek bir uygulama oluşturduk. Aşağıdaki kodlar, kullanıcı kaydı, doğrulama e-postası gönderme ve aktivasyon işlemlerini içermektedir.
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<title>Kayıt Formu</title>
</head>
<body>
<form action="register.php" method="post">
<label for="email">Email:</label>
<input type="email" id="email" name="email" required><br>
<input type="submit" value="Kaydol">
</form>
</body>
</html>
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Bağlantı hatası: " . $conn->connect_error);
}
function sendVerificationEmail($userEmail, $token) {
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'smtp.example.com';
$mail->SMTPAuth = true;
$mail->Username = 'your_email@example.com';
$mail->Password = 'your_password';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->setFrom('your_email@example.com', 'Mailer');
$mail->addAddress($userEmail);
$mail->isHTML(true);
$mail->Subject = 'E-posta Doğrulama';
$mail->Body = "Lütfen hesabınızı doğrulamak için aşağıdaki linke tıklayın: <a href='http://yourdomain.com/verify.php?token=$token'>Doğrulama Linki</a>";
$mail->send();
echo 'Doğrulama e-postası gönderildi.';
} catch (Exception $e) {
echo "E-posta gönderilemedi. Mailer Hatası: {$mail->ErrorInfo}";
}
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$userEmail = $_POST['email'];
$token = bin2hex(random_bytes(50));
$sql = "INSERT INTO users (email, token, is_active) VALUES ('$userEmail', '$token', 0)";
if ($conn->query($sql) === TRUE) {
sendVerificationEmail($userEmail, $token);
} else {
echo "Hata: " . $sql . "<br>" . $conn->error;
}
}
$conn->close();
?>
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Bağlantı hatası: " . $conn->connect_error);
}
if (isset($_GET['token'])) {
$token = $_GET['token'];
$sql = "SELECT * FROM users WHERE token='$token' AND is_active=0";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$sql = "UPDATE
users SET is_active=1 WHERE token='$token'";
if ($conn->query($sql) === TRUE) {
echo "Hesabınız aktif edildi!";
} else {
echo "Hata: " . $conn->error;
}
} else {
echo "Geçersiz veya süresi dolmuş token.";
}
}
$conn->close();
?>
PHP ile e-posta doğrulama ve aktivasyon sistemi, kullanıcıların geçerli e-posta adresleriyle kaydolmalarını sağlayarak hesap güvenliğini artırır. Bu makalede, e-posta doğrulamanın önemini, PHP ile e-posta gönderme yöntemlerini ve doğrulama linki ile kullanıcı aktivasyon sürecini öğrendik. PHP e-posta doğrulama ve aktivasyon sistemini uygulayarak, web projelerinizi daha güvenli hale getirebilirsiniz.
Profesyonel ve her yönü ile kontrol edilebilir gelişmiş çok özellikli ajans yazılımıdır. İşte öne çıkan özellikler.
Bu site reCAPTCHA ile korunmaktadır. GoogleGizlilik Politikası veKullanım Şartları geçerlidir.

