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.