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:

html<?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:

html<?php
  if (!empty($_SESSION['auth'])) {
    
  }
?>

Yetkisiz kullanıcılar için bir sayfanın tamamını şu şekilde kapatabilirsiniz:

html<?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:

html<!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>
Задание 1

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.

Задание 2

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.

Задание 3

Başarılı bir yetkilendirmede, oturuma kullanıcı adının da kaydedilmesi için kodunuzu değiştirin.

Задание 4

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.