
تسجيل الدخول والتسجيل في PHP
يعد نظام تسجيل الدخول والتسجيل أحد أكثر الميزات شيوعًا في تطبيقات الويب. تحتاج العديد من مواقع الويب إلى قيام المستخدمين بإنشاء حسابات وتسجيل الدخول والوصول إلى الصفحات المحمية وتحديث الملفات الشخصية وتسجيل الخروج بشكل آمن.
في PHP، يستخدم نظام المصادقة عادةً النماذج والتحقق من الصحة MySQL والعبارات المحضرة وتجزئة كلمة المرور والتحقق من كلمة المرور والجلسات وفحوصات الترخيص. تعمل هذه المفاهيم معًا لتحديد المستخدمين والتحكم في ما يمكنهم الوصول إليه.
تشرح هذه المقالة كيفية عمل نظام تسجيل الدخول والتسجيل PHP، بما في ذلك التسجيل وتجزئة كلمة المرور وتسجيل الدخول والجلسات وتسجيل الخروج ومفهوم تذكرني وأدوار المستخدم والتحقق من الصحة وأفضل ممارسات الأمان.
ما هو نظام تسجيل الدخول والتسجيل PHP؟
يسمح نظام تسجيل الدخول والتسجيل PHP للمستخدمين بإنشاء حسابات والوصول إلى الأجزاء الخاصة من موقع الويب. التسجيل هو عملية إنشاء حساب مستخدم جديد. تسجيل الدخول هو عملية التحقق من هوية المستخدم وبدء جلسة مصادق عليها.
يتضمن نظام المصادقة الأساسي عادةً ما يلي:
استمارة التسجيل.
التحقق من جانب الخادم.
جدول قاعدة بيانات المستخدمين.
تجزئة كلمة المرور.
نموذج تسجيل الدخول.
التحقق من كلمة المرور.
جلسات لتذكر المستخدمين الذين قاموا بتسجيل الدخول.
الصفحات المحمية.
وظيفة تسجيل الخروج.
أدوار المستخدم والأذونات عند الحاجة.
يجب دائمًا تصميم المصادقة بعناية لأنها تحمي حسابات المستخدمين ومجالات التطبيقات الخاصة.
جدول قاعدة البيانات للمستخدمين
قبل إنشاء منطق التسجيل وتسجيل الدخول، تحتاج إلى جدول قاعدة بيانات للمستخدمين. قد يحتوي جدول المستخدمين البسيط على معرف واسم وبريد إلكتروني وكلمة مرور ودور وتاريخ الإنشاء.
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(150) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
role VARCHAR(50) NOT NULL DEFAULT 'user',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);ال بطاقة تعريف يحدد العمود بشكل فريد كل مستخدم. ال بريد إلكتروني تم وضع علامة على العمود على أنه فريد بحيث لا يمكن لمستخدمين التسجيل بنفس عنوان البريد الإلكتروني.
ال كلمة المرور يجب أن يخزن العمود تجزئة كلمة المرور، وليس كلمة المرور العادية. ال دور يمكن استخدام العمود لاحقًا للتخويل، مثل المستخدم أو المحرر أو المسؤول.
في المشاريع الحقيقية، قد تتضمن قاعدة البيانات أيضًا حقولاً مثل حالة التحقق من البريد الإلكتروني أو رمز التذكر أو رمز إعادة تعيين كلمة المرور أو تاريخ آخر تسجيل دخول أو صورة الملف الشخصي أو حالة الحساب.
اتصال قاعدة البيانات مع PDO
يمكن لـ PHP الاتصال بـ MySQL باستخدام PDO. يعد PDO خيارًا جيدًا لأنه يدعم العبارات المحضرة ويمكن استخدامه بطريقة نظيفة وآمنة.
<?php
$host = "localhost";
$dbname = "php_auth";
$username = "root";
$password = "";
try {
$pdo = new PDO(
"mysql:host=$host;dbname=$dbname;charset=utf8mb4",
$username,
$password
);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $exception) {
die("Database connection failed.");
}
?>في الإنتاج، لا ينبغي أن تكون بيانات اعتماد قاعدة البيانات مشفرة بشكل ثابت في كل ملف. يجب أن يتم تخزينها في ملف التكوين أو متغيرات البيئة.
يجب استخدام الاتصال utf8mb4 لدعم المحتوى متعدد اللغات بشكل صحيح، بما في ذلك العربية والتركية والإنجليزية والرموز التعبيرية.
PHP نظام التسجيل
يتلقى نظام التسجيل اسم المستخدم والبريد الإلكتروني وكلمة المرور، ويتحقق من صحتها، ويتحقق مما إذا كان البريد الإلكتروني موجودًا بالفعل، ويجزئ كلمة المرور، ويدخل المستخدم الجديد في قاعدة البيانات.
يمكن أن يبدو نموذج التسجيل البسيط كما يلي:
<form method="post" action="register.php">
<label>Name</label>
<input type="text" name="name">
<label>Email</label>
<input type="email" name="email">
<label>Password</label>
<input type="password" name="password">
<label>Confirm Password</label>
<input type="password" name="password_confirmation">
<button type="submit">Register</button>
</form>يجب ألا يثق منطق التسجيل PHP مطلقًا في البيانات المقدمة مباشرةً. يجب التحقق من صحة جميع الحقول قبل حفظ المستخدم.
<?php
require "db.php";
$errors = [];
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$name = trim($_POST["name"] ?? "");
$email = trim($_POST["email"] ?? "");
$password = $_POST["password"] ?? "";
$passwordConfirmation = $_POST["password_confirmation"] ?? "";
if ($name === "") {
$errors["name"] = "Name is required.";
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors["email"] = "A valid email address is required.";
}
if (strlen($password) < 8) {
$errors["password"] = "Password must be at least 8 characters.";
}
if ($password !== $passwordConfirmation) {
$errors["password_confirmation"] = "Password confirmation does not match.";
}
if (count($errors) === 0) {
$statement = $pdo->prepare("SELECT id FROM users WHERE email = :email LIMIT 1");
$statement->execute(["email" => $email]);
if ($statement->fetch()) {
$errors["email"] = "This email is already registered.";
}
}
if (count($errors) === 0) {
$passwordHash = password_hash($password, PASSWORD_DEFAULT);
$statement = $pdo->prepare("
INSERT INTO users (name, email, password)
VALUES (:name, :email, :password)
");
$statement->execute([
"name" => $name,
"email" => $email,
"password" => $passwordHash
]);
echo "Registration completed successfully.";
}
}
?>يتحقق هذا المثال من صحة الحقول المطلوبة، ويتحقق من تنسيق البريد الإلكتروني، ويتحقق من طول كلمة المرور، ويؤكد كلمة المرور، ويمنع رسائل البريد الإلكتروني المكررة، ويجزئ كلمة المرور، ويحفظ المستخدم الجديد.
PHP تجزئة كلمة المرور
لا ينبغي أبدًا تخزين كلمات المرور كنص عادي. إذا تم تسريب قاعدة بيانات وكانت كلمات المرور نصًا عاديًا، فستصبح جميع حسابات المستخدمين مكشوفة.
PHP يوفر password_hash() وظيفة لتجزئة كلمة المرور الآمنة.
<?php
$password = "secret-password";
$hash = password_hash($password, PASSWORD_DEFAULT);
echo $hash;
?>والنتيجة هي تجزئة آمنة يمكن تخزينها في قاعدة البيانات. لا يمكن استرداد كلمة المرور الأصلية من التجزئة.
ال PASSWORD_DEFAULT يوصى باستخدام الخوارزمية لأن PHP يمكنه تحديث الخوارزمية الافتراضية في الإصدارات المستقبلية عندما تتوفر خيارات أفضل.
لا تستخدم أساليب التجزئة الضعيفة مثل md5() أو sha1() لكلمات المرور. هذه الطرق ليست مناسبة لتخزين كلمة المرور بشكل آمن.
PHP التحقق من كلمة المرور
عندما يقوم المستخدم بتسجيل الدخول، يجب على التطبيق مقارنة كلمة المرور المقدمة مع التجزئة المخزنة باستخدام password_verify().
<?php
$submittedPassword = $_POST["password"] ?? "";
$storedHash = $user["password"];
if (password_verify($submittedPassword, $storedHash)) {
echo "Password is correct.";
} else {
echo "Invalid password.";
}
?>لا ينبغي عليك تجزئة كلمة المرور المقدمة يدويًا ومقارنة السلاسل. استخدم دائما password_verify() لأنه يعرف كيفية التحقق من التجزئة بشكل صحيح.
التحقق من كلمة المرور هو الخطوة الرئيسية التي تقرر ما إذا كانت كلمة مرور تسجيل الدخول المقدمة تتطابق مع تجزئة كلمة المرور المخزنة.
PHP نظام تسجيل الدخول
يتلقى نظام تسجيل الدخول البريد الإلكتروني وكلمة المرور للمستخدم، ويتحقق من صحة الإدخال، ويجد المستخدم عن طريق البريد الإلكتروني، ويتحقق من كلمة المرور، ويعيد إنشاء معرف الجلسة، ويخزن معرف المستخدم في الجلسة.
يمكن أن يبدو نموذج تسجيل الدخول البسيط كما يلي:
<form method="post" action="login.php">
<label>Email</label>
<input type="email" name="email">
<label>Password</label>
<input type="password" name="password">
<button type="submit">Login</button>
</form>يمكن كتابة منطق تسجيل الدخول PHP على النحو التالي:
<?php
session_start();
require "db.php";
$errors = [];
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$email = trim($_POST["email"] ?? "");
$password = $_POST["password"] ?? "";
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors["email"] = "A valid email address is required.";
}
if ($password === "") {
$errors["password"] = "Password is required.";
}
if (count($errors) === 0) {
$statement = $pdo->prepare("SELECT id, name, email, password, role FROM users WHERE email = :email LIMIT 1");
$statement->execute([
"email" => $email
]);
$user = $statement->fetch(PDO::FETCH_ASSOC);
if (!$user || !password_verify($password, $user["password"])) {
$errors["login"] = "Invalid email or password.";
} else {
session_regenerate_id(true);
$_SESSION["user_id"] = $user["id"];
$_SESSION["user_name"] = $user["name"];
$_SESSION["user_role"] = $user["role"];
header("Location: dashboard.php");
exit;
}
}
}
?>يستخدم هذا المثال بيانًا مُعدًا للعثور على المستخدم، والتحقق من كلمة المرور بشكل آمن، وبدء الجلسة بعد تسجيل الدخول بنجاح.
تقول رسالة الخطأ أن البريد الإلكتروني أو كلمة المرور غير صالحة بدلاً من ذكر الخطأ بالضبط. يعد هذا أكثر أمانًا لأنه لا يكشف ما إذا كان هناك بريد إلكتروني موجود في النظام أم لا.
PHP المصادقة مع الجلسات
تسمح الجلسات لـ PHP بتذكر أن المستخدم قد قام بتسجيل الدخول عبر صفحات متعددة. بعد تسجيل الدخول، يتم تخزين معرف المستخدم في $_SESSION.
يجب أن تتحقق الصفحة المحمية مما إذا كان المستخدم قد قام بتسجيل الدخول قبل عرض المحتوى الخاص.
<?php
session_start();
if (empty($_SESSION["user_id"])) {
header("Location: login.php");
exit;
}
echo "Welcome to your dashboard.";
?>يجب إضافة هذا التحقق إلى كل صفحة تتطلب المصادقة، مثل لوحات المعلومات، وصفحات الملف الشخصي، وصفحات الإدارة، وصفحات الإعدادات.
يمكنك إنشاء ملف قابل لإعادة الاستخدام باسم auth.php:
<?php
session_start();
if (empty($_SESSION["user_id"])) {
header("Location: login.php");
exit;
}
?>ثم قم بإدراجه في أعلى الصفحات المحمية:
<?php
require "auth.php";
?>
<h1>Dashboard</h1>يؤدي هذا إلى الحفاظ على تنظيم عملية التحقق من المصادقة وتجنب تكرار نفس الرمز في العديد من الملفات.
PHP تسجيل الخروج
تسجيل الخروج يعني إنهاء جلسة المستخدم المصادق عليها. يجب أن يقوم التطبيق بإزالة بيانات الجلسة، وتدمير الجلسة، وإعادة توجيه المستخدم إلى صفحة تسجيل الدخول أو الصفحة الرئيسية.
<?php
session_start();
$_SESSION = [];
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(
session_name(),
"",
time() - 42000,
$params["path"],
$params["domain"],
$params["secure"],
$params["httponly"]
);
}
session_destroy();
header("Location: login.php");
exit;
?>يقوم هذا المثال بمسح مصفوفة الجلسة، وإزالة ملف تعريف ارتباط الجلسة، وتدمير الجلسة، وإعادة توجيه المستخدم.
قد تستخدم نسخة بسيطة فقط session_destroy()، لكن مسح ملف تعريف الارتباط للجلسة يعد أسلوبًا أنظف لتسجيل الخروج الكامل.
PHP تذكرني
تعمل ميزة "تذكرني" على إبقاء المستخدم قيد تسجيل الدخول حتى بعد إغلاق المتصفح. يتم ذلك عادةً باستخدام رمز مميز آمن ومستمر مخزّن في ملف تعريف الارتباط ومطابقته مع رمز مخزّن في قاعدة البيانات.
يجب ألا يقوم نظام تذكرني بتخزين كلمة المرور في ملف تعريف الارتباط. ولا ينبغي تخزين معلومات المستخدم الحساسة مباشرة في المتصفح.
سير العمل العام الأكثر أمانًا هو:
يقوم المستخدم بتسجيل الدخول بنجاح ويختار تذكرني.
يقوم الخادم بإنشاء رمز عشوائي.
يتم تجزئة الرمز المميز وتخزينه في قاعدة البيانات.
يتم تخزين الرمز المميز في ملف تعريف ارتباط آمن.
وفي الزيارات المستقبلية، يتم فحص رمز ملف تعريف الارتباط مقابل قاعدة البيانات.
إذا كان صالحًا، فسيتم تسجيل دخول المستخدم وإنشاء جلسة جديدة.
يمكن إنشاء رمز تذكر أساسي باستخدام random_bytes().
<?php
$token = bin2hex(random_bytes(32));
$tokenHash = hash("sha256", $token);
?>يجب أن يستخدم ملف تعريف الارتباط خيارات آمنة عندما يكون ذلك ممكنًا.
<?php
setcookie("remember_token", $token, [
"expires" => time() + 60 * 60 * 24 * 30,
"path" => "/",
"secure" => true,
"httponly" => true,
"samesite" => "Lax"
]);
?>تذكرني هي جلسات متقدمة من الجلسات الأساسية ويجب تنفيذها بعناية. بالنسبة للمشاريع المبتدئة، من الأفضل أولاً إنشاء تسجيل دخول عادي يعتمد على الجلسة قبل إضافة تذكرني.
PHP أدوار المستخدم
تسمح أدوار المستخدم للتطبيق بالتحكم في ما يمكن لكل مستخدم الوصول إليه. تتضمن الأدوار الشائعة المستخدم والمحرر والمشرف والمسؤول.
على سبيل المثال، يمكن للمستخدم العادي الوصول إلى ملفه الشخصي فقط، بينما يمكن للمسؤول الوصول إلى لوحة تحكم المشرف وإدارة المستخدمين الآخرين.
بعد تسجيل الدخول، يمكن تخزين دور المستخدم في الجلسة:
<?php
$_SESSION["user_role"] = $user["role"];
?>ثم يمكن للصفحات المحمية التحقق من الدور.
<?php
session_start();
if (($_SESSION["user_role"] ?? "") !== "admin") {
http_response_code(403);
echo "Access denied.";
exit;
}
echo "Welcome to the admin area.";
?>يجب أن يتم التحقق من الدور دائمًا من جانب الخادم. لا يعد إخفاء أزرار الإدارة في HTML كافيًا لأنه لا يزال بإمكان المستخدمين إرسال الطلبات يدويًا.
بالنسبة للأنظمة الأكثر تعقيدًا، يمكن تخزين الأذونات بشكل منفصل في جداول قاعدة البيانات، ولكن بالنسبة لمشاريع المبتدئين، يكفي عمود دور بسيط لفهم المفهوم.
التحقق من صحة تسجيل الدخول والتسجيل
التحقق من الصحة ضروري في أنظمة المصادقة. فهو يعمل على تحسين الأمان، ويمنع البيانات غير الصالحة، ويمنح المستخدمين تعليقات واضحة.
قد يشمل التحقق من صحة التسجيل ما يلي:
الاسم مطلوب.
البريد الإلكتروني مطلوب ويجب أن يكون صالحا.
يجب أن يكون البريد الإلكتروني فريدًا.
كلمة المرور مطلوبة.
يجب أن يكون لكلمة المرور حد أدنى للطول.
يجب أن يكون تأكيد كلمة المرور match.
قد يشمل التحقق من صحة تسجيل الدخول ما يلي:
البريد الإلكتروني مطلوب ويجب أن يكون صالحا.
كلمة المرور مطلوبة.
يجب أن تكون بيانات اعتماد تسجيل الدخول match لمستخدم حالي.
يجب أن يتم التحقق من الصحة على جانب الخادم حتى إذا تم استخدام التحقق من صحة النموذج HTML أيضًا. يعمل التحقق من صحة المتصفح على تحسين تجربة المستخدم، ولكن يمكن تجاوزه.
CSRF حماية نماذج المصادقة
يجب أيضًا حماية نماذج المصادقة باستخدام الرموز المميزة CSRF، وخاصة نماذج التسجيل وتسجيل الدخول وتسجيل الخروج وتحديث الملف الشخصي وتغيير كلمة المرور.
الرمز المميز CSRF هو قيمة عشوائية مخزنة في الجلسة ويتم تضمينها داخل النموذج. عند إرسال النموذج، يتحقق PHP من تطابق الرمز المميز المقدم مع الرمز المميز للجلسة.
<?php
session_start();
if (empty($_SESSION["csrf_token"])) {
$_SESSION["csrf_token"] = bin2hex(random_bytes(32));
}
?>
<form method="post">
<input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($_SESSION["csrf_token"], ENT_QUOTES, "UTF-8"); ?>">
<input type="email" name="email">
<input type="password" name="password">
<button type="submit">Login</button>
</form>عند معالجة النموذج:
<?php
$token = $_POST["csrf_token"] ?? "";
if (!hash_equals($_SESSION["csrf_token"] ?? "", $token)) {
http_response_code(403);
echo "Invalid request.";
exit;
}
?>تساعد حماية CSRF على منع عمليات إرسال النماذج غير المرغوب فيها من مواقع الويب الأخرى.
حماية صفحات لوحة التحكم
بعد تسجيل الدخول، يصل المستخدمون عادةً إلى الصفحات المحمية مثل لوحة المعلومات أو الملف الشخصي أو الإعدادات أو صفحات الإدارة. يجب أن تتحقق هذه الصفحات من الجلسة قبل عرض المحتوى.
يمكن أن تبدو صفحة لوحة التحكم الأساسية بالشكل التالي:
<?php
require "auth.php";
?>
<h1>Dashboard</h1>
<p>Welcome, <?php echo htmlspecialchars($_SESSION["user_name"], ENT_QUOTES, "UTF-8"); ?></p>
<a href="logout.php">Logout</a>لاحظ أنه تم هروب اسم المستخدم باستخدام htmlspecialchars(). حتى بيانات الجلسة يجب أن يتم عرضها بأمان لأنها قد تأتي في الأصل من إدخال المستخدم.
يجب أيضًا على الصفحات المحمية التحقق من الأذونات إذا كان الإجراء حساسًا. على سبيل المثال، يجب أن تتحقق صفحات المسؤول من الدور، ويجب أن تتحقق صفحات التحرير مما إذا كان المستخدم يمتلك المورد.
الأخطاء الشائعة في نظام تسجيل الدخول
تعمل العديد من أنظمة المصادقة للمبتدئين، لكنها تحتوي على أخطاء أمنية خطيرة. من المهم تجنب هذه الأخطاء.
تشمل الأخطاء الشائعة ما يلي:
تخزين كلمات المرور كنص عادي.
استخدام MD5 أو SHA1 لكلمات المرور.
عدم استخدام العبارات المحضرة.
إظهار ما إذا كان البريد الإلكتروني أو كلمة المرور على وجه التحديد خاطئة.
عدم إعادة إنشاء معرف الجلسة بعد تسجيل الدخول.
عدم حماية الصفحات الخاصة بفحوصات الجلسة.
الثقة بقيم الدور من النماذج أو عناوين URL.
عدم الهروب من أسماء المستخدمين عند عرضها.
تخزين البيانات الحساسة في ملفات تعريف الارتباط.
نسيان تسجيل الخروج أو تنظيف الجلسة.
لا يقتصر نظام تسجيل الدخول الآمن على التحقق من البريد الإلكتروني وكلمة المرور فقط. ويتضمن أيضًا الوصول الآمن إلى قاعدة البيانات، وتخزين كلمات المرور، وإدارة الجلسة، والتحقق من الصحة، والهروب، والترخيص.
أكمل سير عمل تسجيل الدخول والتسجيل
عادةً ما يتبع سير عمل مصادقة PHP الكامل هذه البنية:
قم بإنشاء جدول مستخدمين في MySQL.
قم بإنشاء اتصال بقاعدة البيانات باستخدام PDO.
إنشاء نموذج التسجيل.
التحقق من صحة إدخال التسجيل.
تحقق مما إذا كان البريد الإلكتروني موجودًا بالفعل.
تجزئة كلمة المرور باستخدام password_hash().
أدخل المستخدم الجديد باستخدام عبارة معدة.
إنشاء نموذج تسجيل الدخول.
ابحث عن المستخدم عبر البريد الإلكتروني باستخدام بيان معد.
التحقق من كلمة المرور باستخدام password_verify().
قم بإعادة إنشاء معرف الجلسة بعد تسجيل الدخول بنجاح.
قم بتخزين معرف المستخدم والدور في الجلسة.
حماية صفحات لوحة المعلومات باستخدام عمليات فحص الجلسة.
التحقق من الأدوار لصفحات المسؤول.
تدمير الجلسة أثناء تسجيل الخروج.
يعد سير العمل هذا أساسًا للعديد من تطبيقات PHP. بعد فهمها، يمكنك توسيعها من خلال التحقق من البريد الإلكتروني وإعادة تعيين كلمة المرور وتحديثات الملف الشخصي والمصادقة الثنائية وأنظمة الأذونات.
ملاحظات أمنية لمصادقة PHP
يجب أن تكون أنظمة المصادقة آمنة لأنها تحمي حسابات المستخدمين والمعلومات الخاصة.
تشمل الممارسات الأمنية المهمة ما يلي:
يستخدم password_hash() لتخزين كلمات المرور.
يستخدم password_verify() للتحقق من كلمات المرور.
استخدم العبارات المحضرة لجميع استعلامات قاعدة البيانات.
التحقق من صحة كافة إدخالات النموذج على جانب الخادم.
الهروب من الإخراج عند عرض بيانات المستخدم.
إعادة إنشاء معرف الجلسة بعد تسجيل الدخول.
تدمير الجلسات عند تسجيل الخروج.
استخدم HTTPS في الإنتاج.
قم بحماية النماذج باستخدام الرموز المميزة CSRF.
استخدم رسائل خطأ تسجيل الدخول العامة.
الحد من محاولات تسجيل الدخول الفاشلة المتكررة عندما يكون ذلك ممكنًا.
تحقق من أدوار المستخدم على جانب الخادم.
بالنسبة لتطبيقات الإنتاج، يجب اختبار المصادقة بعناية. يمكن أن تؤدي الأخطاء الصغيرة في أنظمة تسجيل الدخول إلى مشكلات أمنية خطيرة.
المصادقة في أطر PHP الحديثة
توفر أطر عمل PHP الحديثة مثل Laravel وSymfony أدوات أو حزم مصادقة مدمجة. يوفر Laravel، على سبيل المثال، ميزات للتسجيل وتسجيل الدخول وتجزئة كلمة المرور والجلسات وحماية CSRF والتحقق من البريد الإلكتروني وإعادة تعيين كلمة المرور والتفويض.
ومع ذلك، فإن تعلم كيفية عمل تسجيل الدخول والتسجيل في PHP الخالص لا يزال مفيدًا. يساعدك على فهم المفاهيم الكامنة وراء مصادقة إطار العمل ويسهل عليك تصحيح أخطاء التطبيقات الحقيقية وتخصيصها وتأمينها.
بمجرد فهم مصادقة PHP الخالصة، يصبح الانتقال إلى مصادقة Laravel أسهل لأن نفس الأفكار لا تزال موجودة: جدول المستخدمين، وتجزئة كلمة المرور، والجلسات، والحراس، والبرامج الوسيطة، والتحقق من الصحة، والترخيص.
خاتمة
يعد نظام تسجيل الدخول والتسجيل PHP مشروعًا أساسيًا لتعلم تطوير الواجهة الخلفية. فهو يجمع بين النماذج والتحقق من الصحة وMySQL والعبارات المحضرة وتجزئة كلمة المرور والتحقق من كلمة المرور والجلسات وتسجيل الخروج وأدوار المستخدم والممارسات الأمنية.
القواعد الأكثر أهمية هي عدم تخزين كلمات مرور عادية مطلقًا، واستخدام العبارات المحضرة دائمًا، والتحقق من صحة إدخال المستخدم، وإخراج الهروب، وإعادة إنشاء معرفات الجلسة بعد تسجيل الدخول، وحماية الصفحات الخاصة على جانب الخادم.
بعد إنشاء نظام تسجيل دخول وتسجيل أساسي، تتمثل الخطوة التالية في إضافة ميزات مثل التحقق من البريد الإلكتروني وإعادة تعيين كلمة المرور وتذكرني وتحرير الملف الشخصي والتحكم في الوصول المستند إلى الدور وإدارة المستخدم الإداري.

