PHP 8 ile oturum açma (login) işlemi, kullanıcıların sisteme giriş yapmasını sağlamak için kullanılan temel bir özelliktir. Aşağıda, kullanıcı oturum açma sürecini adım adım açıklayan bir rehber bulabilirsiniz.
1. Veritabanı Bağlantısı
Öncelikle, oturum açma işlemi için veritabanına bağlantı kurmalısınız. Aşağıdaki örnekte, kullanıcı bilgilerini sakladığımız users
tablosuna bağlanacağız.
<?php
$host = 'localhost'; // Veritabanı sunucusu
$db = 'veritabani_adi'; // Veritabanı adı
$user = 'kullanici_adi'; // Veritabanı kullanıcı adı
$pass = 'sifre'; // Veritabanı şifresi
try {
$pdo = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Bağlantı hatası: " . $e->getMessage();
}
?>
2. Oturum Açma Formu
Kullanıcının e-posta adresi ve şifresini girmesi için bir HTML formu oluşturun.
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Oturum Aç</title>
</head>
<body>
<h2>Oturum Açma Formu</h2>
<form action="oturum_ac.php" method="post">
<label for="email">E-posta:</label>
<input type="email" id="email" name="email" required>
<br>
<label for="password">Şifre:</label>
<input type="password" id="password" name="password" required>
<br>
<input type="submit" value="Oturum Aç">
</form>
</body>
</html>
3. Oturum Açma İşlemini Gerçekleştirme
Kullanıcı formunu gönderdiğinde, bilgileri almak ve doğrulamak için oturum_ac.php
dosyasını oluşturun.
<?php
session_start(); // Oturum başlat
// Veritabanı bağlantısı
$host = 'localhost';
$db = 'veritabani_adi';
$user = 'kullanici_adi';
$pass = 'sifre';
try {
$pdo = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Form verilerini alma
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$email = trim($_POST['email']);
$password = $_POST['password'];
// Kullanıcıyı veritabanından alma
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->bindParam(':email', $email);
$stmt->execute();
$user = $stmt->fetch();
// Kullanıcı mevcutsa şifre kontrolü
if ($user && password_verify($password, $user['password'])) {
// Oturum bilgilerini saklama
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
echo "Oturum açma başarılı! Hoş geldiniz, " . htmlspecialchars($user['username']) . "!";
// İsteğe bağlı: Kullanıcıyı başka bir sayfaya yönlendirin
// header("Location: anasayfa.php");
// exit;
} else {
echo "Geçersiz e-posta veya şifre.";
}
}
} catch (PDOException $e) {
echo "Hata: " . $e->getMessage();
}
?>
4. Güvenlik Önlemleri
Oturum açma sürecinde güvenliği artırmak için aşağıdaki önlemleri alabilirsiniz:
- Veri Doğrulama: Kullanıcıdan alınan bilgilerin doğru formatta olduğundan emin olun.
-
Şifre Hashleme: Kullanıcı şifrelerini güvenli bir şekilde hashleyerek depolamak için
password_hash()
fonksiyonunu kullanın. -
SQL Injection Önleme: Kullanıcı girdilerini veritabanına eklerken
prepared statements
kullanarak SQL injection saldırılarına karşı koruma sağlayın. -
XSS Koruması: Kullanıcı bilgilerini ekrana yazarken
htmlspecialchars()
fonksiyonunu kullanarak XSS saldırılarına karşı koruma sağlayın.
5. Oturum Yönetimi
Oturum açtıktan sonra kullanıcı bilgilerini saklamak için PHP oturumunu kullanabilirsiniz. Oturum bilgilerini silmek için oturum kapatma işlemi ekleyebilirsiniz.
Oturumu Kapatma
<?php
session_start(); // Oturumu başlat
// Oturumu sonlandırma
session_unset(); // Tüm oturum değişkenlerini temizle
session_destroy(); // Oturumu yok et
echo "Oturum kapatıldı. Ana sayfaya dönmek için <a target="_blank" href='anasayfa.php'>tıklayın</a>.";
?>
Sonuç
Bu adımlarla, PHP 8 kullanarak basit bir oturum açma sistemi oluşturmuş oldunuz. Kullanıcılar e-posta adresi ve şifre ile giriş yaparak sisteminize erişebilirler. Bu sistemi geliştirerek kullanıcı kaydı, şifre sıfırlama ve e-posta doğrulama gibi ek özellikler eklemeyi düşünebilirsiniz. Bu, uygulamanızın kullanıcı yönetimi için daha kapsamlı bir yapı oluşturmanıza yardımcı olacaktır.