PHP-তে সেশনের মাধ্যমে অথোরাইজেশন

আমাদের অথোরাইজেশন এইভাবে কাজ করা উচিত: ব্যবহারকারী, যে ওয়েবসাইটে অথোরাইজড হতে চায়, সে login.php পেজে যায়, সঠিক লগিন এবং পাসওয়ার্ড দেয় এবং এরপর ইতিমধ্যে অথোরাইজড হয়ে ওয়েবসাইটের বিভিন্ন পেজ ব্রাউজ করে।

ওয়েবসাইটের অন্যান্য পেজগুলি যাতে জানতে পারে যে আমাদের ব্যবহারকারী অথোরাইজড হয়েছে, আমাদের সেশনে এর একটি নিশানা সংরক্ষণ করতে হবে।

আমাদের অথোরাইজেশন এখনও পুরোপুরি কাজ করছে না, কারণ আমরা এখনও সেশন সংযুক্ত করিনি এবং ওয়েবসাইটের অন্যান্য পেজগুলি বুঝতে পারছে না যে ব্যবহারকারী অথোরাইজড কিনা।

আমরা সেশনের $_SESSION['auth'] ভেরিয়েবলে অথোরাইজেশনের নিশানা সংরক্ষণ করব - যদি সেখানে true লেখা থাকে, তাহলে ব্যবহারকারী অথোরাইজড, আর যদি null থাকে - তাহলে অথোরাইজড নয়।

আসুন আমাদের কোডে সংশ্লিষ্ট সংশোধনী আনি:

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 {
      // ভুল লগিন বা পাসওয়ার্ড দিয়েছে
    }
  }
?>

এখন ওয়েবসাইটের যেকোনো পেজে আমরা যাচাই করতে পারি, ব্যবহারকারী অথোরাইজড কিনা, এইভাবে:

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

অনঅথোরাইজড ব্যবহারকারীর জন্য কোনো পেজের কন্টেন্ট সম্পূর্ণভাবে বন্ধ করা যেতে পারে:

html<?php if (!empty($_SESSION['auth'])): ?>
  <!DOCTYPE html>
  <html>
    <head>
      
    </head>
    <body>
      <p>শুধুমাত্র অথোরাইজড ব্যবহারকারীর জন্য টেক্সট</p>
    </body>
  </html>
<?php else: ?>
  <p>অনুগ্রহ করে, অথোরাইজড হন</p>
<?php endif; ?>

শুধুমাত্র পেজের একটি অংশ বন্ধ করা যেতে পারে:

html<!DOCTYPE html>
<html>
  <head>
    
  </head>
  <body>
    <p>যেকোনো ব্যবহারকারীর জন্য টেক্সট</p>
    <?php
      if (!empty($_SESSION['auth'])) {
        echo 'শুধুমাত্র অথোরাইজড ব্যবহারকারীর জন্য টেক্সট';
      }
    ?>
    <p>যেকোনো ব্যবহারকারীর জন্য টেক্সট</p>
  </body>
</html>
Задание 1

ধরুন আমাদের ওয়েবসাইটে, login.php পেজ ছাড়াও, আরও আছে 1.php, 2.php এবং 3.php পেজ। এমন করুন যাতে এই পেজগুলিতে শুধুমাত্র অথোরাইজড ব্যবহারকারীই অ্যাক্সেস পেতে পারে।

Задание 2

ধরুন আমাদের ওয়েবসাইটে আরও আছে index.php পেজ। এমন করুন যাতে এই পেজের একটি অংশ সকল ব্যবহারকারীর জন্য খোলা থাকে, এবং একটি অংশ - শুধুমাত্র অথোরাইজড ব্যবহারকারীদের জন্য।

Задание 3

আপনার কোডটি এমনভাবে পরিবর্তন করুন যাতে সফল অথোরাইজেশনের পর সেশনে ব্যবহারকারীর লগিনও সেভ হয়ে যায়।

Задание 4

এমন করুন যাতে ওয়েবসাইটের যেকোনো পেজে যাওয়ার সময়, অথোরাইজড ব্যবহারকারী তার লগিন দেখতে পায়, আর অনঅথোরাইজড ব্যবহারকারী - অথোরাইজেশন পেজের একটি লিঙ্ক দেখতে পায়।