PHP में प्राधिकरण और प्रमाणीकरण: उदाहरणों के साथ पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

PHP में प्राधिकरण और प्रमाणीकरण: अपनी साइट को कैसे सुरक्षित करें



सुरक्षा किसी भी वेब एप्लिकेशन का एक प्रमुख पहलू है। PHP में, प्रमाणीकरण (उपयोगकर्ता की पहचान सत्यापित करना) और प्राधिकरण (उसकी पहुँच अधिकार निर्धारित करना) अंतर्निहित टूल्स: सत्र, cookies, पासवर्ड हैशिंग और डेटाबेस के साथ काम करके कार्यान्वित किए जाते हैं। इस लेख में, हम PHP पर लॉगिन, पंजीकरण और पहुँच नियंत्रण प्रणाली बनाने के पूरे चक्र को समझेंगे।



1. मूल अवधारणाएँ



  • प्रमाणीकरण — यह जाँचने की प्रक्रिया कि क्या उपयोगकर्ता वही है जो वह होने का दावा करता है (आमतौर पर लॉगिन और पासवर्ड द्वारा)।
  • प्राधिकरण — यह जाँच कि क्या प्रमाणित उपयोगकर्ता को कोई विशिष्ट कार्य करने का अधिकार है (जैसे, एडमिन पैनल तक पहुँच)।
  • सत्र — सर्वर पर डेटा का अस्थायी भंडारण, जो एक अद्वितीय पहचानकर्ता (session ID) के माध्यम से किसी विशिष्ट आगंतुक से जुड़ा होता है।
  • पासवर्ड हैशिंग — डेटाबेस में सुरक्षित भंडारण के लिए पासवर्ड को एक अपरिवर्तनीय स्ट्रिंग में बदलना।


2. उपयोगकर्ता पंजीकरण



पहला कदम एक पंजीकरण फॉर्म और हैंडलर बनाना है। पासवर्ड कभी भी सादे पाठ में संग्रहीत नहीं किया जाता — हम password_hash() फ़ंक्शन का उपयोग करते हैं।



2.1. पंजीकरण फॉर्म (register.php)



<form method="post" action="register_handler.php">    <input type="text" name="username" placeholder="उपयोगकर्ता नाम" required>    <input type="email" name="email" placeholder="ईमेल" required>    <input type="password" name="password" placeholder="पासवर्ड" required>    <button type="submit">पंजीकरण करें</button></form>


2.2. पंजीकरण हैंडलर (register_handler.php)



<?php// डेटाबेस से कनेक्शन (PDO)$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');

$username = $_POST['username'];$email = $_POST['email'];$password = password_hash($_POST['password'], PASSWORD_BCRYPT); // हैश करें

$stmt = $pdo->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");$stmt->execute([$username, $email, $password]);

header('Location: login.php');?>


PASSWORD_BCRYPT का उपयोग करें — यह स्वचालित रूप से सॉल्ट उत्पन्न करता है और इसे पर्याप्त रूप से सुरक्षित माना जाता है।



3. प्रमाणीकरण (सिस्टम में लॉगिन)



लॉगिन करते समय, हम password_verify() का उपयोग करके दर्ज किए गए पासवर्ड की तुलना डेटाबेस के हैश से करते हैं और एक सत्र बनाते हैं।



3.1. लॉगिन फॉर्म (login.php)



<form method="post" action="login_handler.php">    <input type="text" name="username" placeholder="उपयोगकर्ता नाम" required>    <input type="password" name="password" placeholder="पासवर्ड" required>    <button type="submit">लॉगिन करें</button></form>


3.2. लॉगिन हैंडलर (login_handler.php)



<?phpsession_start();$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');

$username = $_POST['username'];$password = $_POST['password'];

$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");$stmt->execute([$username]);$user = $stmt->fetch();

if ($user && password_verify($password, $user['password'])) { // प्रमाणीकरण सफल $_SESSION['user_id'] = $user['id']; $_SESSION['username'] = $user['username']; $_SESSION['role'] = $user['role']; // प्राधिकरण के लिए header('Location: dashboard.php');} else { echo "गलत उपयोगकर्ता नाम या पासवर्ड";}?>


4. प्राधिकरण (पहुँच नियंत्रण)



प्रमाणीकरण के बाद, उपयोगकर्ता को एक भूमिका मिलती है (जैसे, 'user', 'admin', 'moderator')। प्राधिकरण कार्रवाई करने से पहले इस भूमिका की जाँच करता है।



4.1. सरल भूमिका जाँच



<?phpsession_start();

// जाँचें कि उपयोगकर्ता प्रमाणित है या नहीं

अनुशंसाएँ