CodeBlanks Logo Icon CodeBlanks

Login/logout mantığı

PHP kursu · Orta seviye · Ders 86/115

Oturumla basit bir giriş (login) ve çıkış (logout) akışı kurmayı öğrenirsin.

Oturumla giriş akışı

Basit bir giriş akışı şöyledir: kullanıcı adı ve parola doğrulanır. Doğruysa $_SESSION['user_id'] veya $_SESSION['user'] tanımlayıcısı oturuma yazılır.

Bu tanımlayıcı, sonraki sayfalarda isset($_SESSION['user_id']) ile kontrol edilir. Tanımlıysa kullanıcı giriş yapmış demektir; korumalı sayfalar gösterilir.

Parolayı asla oturumda saklama; yalnızca kullanıcı kimliğini veya rolünü tut. Parola doğrulaması veritabanında yapılır.

Çıkış akışını kurmak

Çıkış, girişin tersidir. Önce unset($_SESSION['user']) ile kullanıcı değişkenini silersin. Böylece sonraki sayfalarda isset() false döner.

Ardından session_destroy() ile tüm oturumu kapatırsın. Oturum dosyası silinir; kullanıcı tamamen çıkış yapmış olur.

İpucu: çıkış bağlantısına tıklayınca bu kodları çalıştıran bir logout.php sayfası yaparsın. Çıkıştan sonra giriş sayfasına yönlendirirsin.

Uygulama Basit giriş kontrolü yaz

session_start() çağır. $username'e 'admin', $password'e 'secret' ata. if ile ikisinin de eşitliğini kontrol et: doğruysa $_SESSION['user_id'] = 1 yaz ve başarılı yazdır; else'de reddedildi yazdır.

Örnek çözümü göster
session_start çağır, $username ve $password ata, if ile ikisini === ile kontrol et, doğruysa $_SESSION['user_id']=1 ve echo başarılı, else echo reddedildi.
Örnek çözüm:
<?php
// Basit giriş: doğru bilgiler ise oturuma user_id yaz
session_start();
$username = 'admin';
$password = 'secret';
if ($username === 'admin' && $password === 'secret') {
    $_SESSION['user_id'] = 1;
    echo "başarılı\n";
} else {
    echo "reddedildi\n";
}

Kendini test et

  1. Başarılı girişte ne yapılır?

    • session_destroy() çağrılır
    • $_SESSION'a kullanıcı tanımlayıcısı yazılır
    • session_id() sıfırlanır
    • Çerez silinir
    Cevabı göster

    $_SESSION'a kullanıcı tanımlayıcısı yazılır — Doğru. Girişte kullanıcı tanımlayıcısı $_SESSION'a yazılır; sonraki sayfalarda okunur.

  2. Giriş başarılıysa oturuma yaz

    <?php
    session_start();
    if ($username === 'admin' && $password === 'secret') {
        ____
        echo 'giriş başarılı';
    } else {
        echo 'reddedildi';
    }
    
    Cevabı göster
    <?php
    session_start();
    if ($username === 'admin' && $password === 'secret') {
        $_SESSION['user'] = ['id' => 1];
        echo 'giriş başarılı';
    } else {
        echo 'reddedildi';
    }
    
  3. Giriş ve çıkış adımlarını eşleştir

    Giriş başarılı
    $_SESSION['user_id'] yazılır
    Çıkış isteği
    unset + session_destroy
    $_SESSION['user_id']
    Giriş yapılmış mı diye bakılır
    session_destroy()
    Oturumu tamamen kapatır

Orta seviye bölümündeki tüm dersler