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

ऐसा करें कि साइट के किसी भी पृष्ठ पर जाने पर, प्राधिकृत उपयोगकर्ता अपना लॉगिन देखे, और गैर-प्राधिकृत - प्राधिकरण पृष्ठ का लिंक देखे।