Üyelik Sistemi: Kayıt Ol, Giriş Yap ve Çıkış Yap Mantığı

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18
Profesyonel bir üyelik sistemi üç ana bölümden oluşur. 2026 yılı standartlarında en önemli kural: Asla şifreleri veritabanında düz metin olarak saklamayın! Her zaman password_hash() fonksiyonunu kullanmalısınız.

1. Kayıt Ol (Register) Mantığı​


Kullanıcıdan bilgileri alır, e-posta kontrolü yapar ve şifreyi kriptolayarak kaydederiz.

PHP:
<?php
require_once 'Database.php'; // Önceki derslerdeki PDO sınıfı

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$db = Database::getInstance()->getConnection();

$kullanici = htmlspecialchars($_POST[&#39;username&#39;]);
$eposta = filter_var($_POST[&#39;email&#39;], FILTER_SANITIZE_EMAIL);
// Şifreyi güvenli bir şekilde hashle (Geri döndürülemez)
$sifre = password_hash($_POST[&#39;password&#39;], PASSWORD_BCRYPT);

$ekle = $db-&gt;prepare(&quot;INSERT INTO uyeler (kullanici_adi, eposta, sifre) VALUES (?, ?, ?)&quot;);

try {
    $ekle-&gt;execute([$kullanici, $eposta, $sifre]);
    echo &quot;Kayıt başarılı! Şimdi giriş yapabilirsiniz.&quot;;
} catch (PDOException $e) {
    echo &quot;Hata: E-posta adresi zaten kayıtlı olabilir.&quot;;
}

}
?>

2. Giriş Yap (Login) Mantığı​


Giriş işleminde veritabanındaki hashlenmiş şifre ile kullanıcının yazdığı şifreyi password_verify() ile karşılaştırırız.

PHP:
<?php
session_start();
require_once 'Database.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$db = Database::getInstance()->getConnection();
$eposta = $_POST['email'];
$sifre = $_POST['password'];

$sorgu = $db-&gt;prepare(&quot;SELECT * FROM uyeler WHERE eposta = ?&quot;);
$sorgu-&gt;execute([$eposta]);
$uye = $sorgu-&gt;fetch();

if ($uye &amp;&amp; password_verify($sifre, $uye[&#39;sifre&#39;])) {
    // Şifre doğru! Session bilgilerini oluşturalım
    $_SESSION[&#39;uye_id&#39;] = $uye[&#39;id&#39;];
    $_SESSION[&#39;uye_ad&#39;] = $uye[&#39;kullanici_adi&#39;];
    session_regenerate_id(); // Güvenlik için ID yenile
    
    header(&quot;Location: profil.php&quot;);
} else {
    echo &quot;Hatalı e-posta veya şifre!&quot;;
}

}
?>

3. Oturum Kontrolü ve Çıkış (Logout)​


Sisteme giriş yapan bir kullanıcıyı korumalı sayfalarda nasıl kontrol ederiz ve güvenli çıkış nasıl sağlanır?

profil.php (Korunmuş Sayfa):
PHP:
<?php
session_start();
if (!isset($_SESSION['uye_id'])) {
header("Location: giris.php");
exit();
}
echo "Hoş geldin, " . $_SESSION['uye_ad'];
?>

cikis.php:
PHP:
<?php
session_start();
session_destroy(); // Tüm oturum verilerini temizle
header("Location: giris.php");
?>

Üyelik Sistemi Güvenlik Kontrol Listesi​


ÖzellikYöntemNeden?
Şifrelemepassword_hash()Veritabanı çalınsa bile şifreler okunamaz.
SQL GüvenliğiPrepared StatementsSQL Injection saldırılarını engeller.
Oturum Güvenliğisession_regenerate_id()Session Hijacking (oturum çalma) riskini azaltır.
XSS Korumasıhtmlspecialchars()Kullanıcı adlarına gizlenen zararlı kodları etkisiz kılar.

Sonuç​


Üyelik sistemi kurarken en kritik nokta veriyi saklama ve doğrulama aşamasıdır. password_hash ve password_verify ikilisi modern PHP geliştiriciliğinin altın kuralıdır. Bu temel yapıyı kurduktan sonra üzerine "Şifremi Unuttum", "E-posta Onaylama" gibi ek özellikler ekleyerek sisteminizi geliştirebilirsiniz.
 
Geri
Üst