PHP'de Oturum ile Yetkilendirme
Yetkilendirmemiz şu şekilde çalışmalıdır: web sitesinde
oturum açmak isteyen kullanıcı, login.php sayfasına gider,
doğru kullanıcı adı ve şifreyi girer ve daha sonra sitede
gezinirken artık oturum açmış durumda olur.
Sitenin diğer sayfalarının kullanıcımızın oturum açtığını bilmesi için, oturumda bununla ilgili bir işaret saklamalıyız.
Henüz oturumu başlatmadığımız ve sitenin diğer sayfalarının kullanıcının yetkili olup olmadığını anlayamadığı için şu an yetkilendirmemiz tam olarak çalışmıyor.
Yetkilendirme işaretini $_SESSION['auth'] oturum
değişkeninde saklayacağız - eğer orada true yazıyorsa,
kullanıcı yetkilidir, eğer null ise yetkili değildir.
Kodumuzda ilgili düzeltmeyi yapalım:
<?php
session_start();
if (!empty($_POST['password']) and !empty($_POST['login'])) {
$login = $_POST['login'];
$password = $_POST['password'];
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
$res = mysqli_query($link, $query);
$user = mysqli_fetch_assoc($res);
if (!empty($user)) {
$_SESSION['auth'] = true;
} else {
// kullanıcı adı veya şifre yanlış
}
}
?>
Artık sitedeki herhangi bir sayfada, kullanıcının yetkili olup olmadığını şu şekilde kontrol edebiliriz:
<?php
if (!empty($_SESSION['auth'])) {
}
?>
Yetkisiz kullanıcılar için bir sayfanın tamamını şu şekilde kapatabilirsiniz:
<?php if (!empty($_SESSION['auth'])): ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>sadece yetkili kullanıcılar için metin</p>
</body>
</html>
<?php else: ?>
<p>lütfen oturum açın</p>
<?php endif; ?>
Sadece sayfanın bir kısmını kapatabilirsiniz:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>tüm kullanıcılar için metin</p>
<?php
if (!empty($_SESSION['auth'])) {
echo 'sadece yetkili kullanıcılar için metin';
}
?>
<p>tüm kullanıcılar için metin</p>
</body>
</html>
Sitemizde, login.php sayfasına ek olarak,
1.php, 2.php ve 3.php sayfaları da
olsun. Bu sayfalara sadece yetkili kullanıcıların
erişebilmesini sağlayın.
Sitemizde bir de index.php sayfası olsun.
Bu sayfanın bir kısmının tüm kullanıcılara açık,
bir kısmının ise sadece yetkililere açık olmasını
sağlayın.
Başarılı bir yetkilendirmede, oturuma kullanıcı adının da kaydedilmesi için kodunuzu değiştirin.
Siteye herhangi bir sayfadan giriş yapıldığında, yetkili kullanıcının kendi kullanıcı adını, yetkisiz kullanıcının ise oturum açma sayfasına bir bağlantı görmesini sağlayın.