Login/logout mantığı
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
-
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.
-
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'; } -
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