نقدم لكم اليوم سكريبت عبارة عن نظام تسجيل الدخول وتسجيل العضويات الجديد في لغة #php
من خلال هذا السكريبت يمكن للعضو أن يقوم بالتسجيل (إدخال إسم العضوية + البريد الالكتروني + الكلمة السرية + تأكيد الكلمة السرية)
ثم بعد ذلك يمكن للعضو تسجيل الدخول (إدخال البريد الالكتروني + الكلمة السرية)
سيتم توجيهه لصفحة الأدمن التي سيجد فيها كلمة ترحيب و رابط الخروج في حالة أراد تسجيل الخروج من الحساب.
تم عمل بعض الامور الخاص بحماية تسجيل العضويات وتسجيل الدخول مثل
إستعمال password_hash() من أجل تخزين الكلمات السرية بشكل أكثر حماية
إستعمال Prepared Statements من أجل تجنب ثغرات SQL Injection
إستعمال Validate and Sanitize من أجل جعل إدخال البيانات من طرف المستخديم أكثر حماية
إستعمال CSRF tokens من أجل تعزيز الحماية ضد CSRF
مراقبة محاولات دخول الحساب الفاشلة من أجل غلق الحساب مؤقتا
حاولت أن أقوم بعمل هذه التقنيات من أجل الحماية رغم أنه يصعب حماية السكريبتات
كل من يريد إستعمال هذا السكريبت يمكنه أن يقوم بتعزيز الحماية أكثر وتطويره أيضا بإضافة عدة خصائص وتقنيات
السكريبت نسخة أولية تسهل عليكم دمج نظام تسجيل العضويات وأيضا تطويره بدون البدأ من الصفر والبحث المتواصل عن كيفية عمله
هنا صور من داخل السكريبت لكيفية التسجيل وعملية الدخول والخروج
محتوى السكريبت
style.css
تم وضع فيه كودات تصميم الصفحات
database.php
هو الذي يتم وضع فيه معلومات قاعدة البيانات الخاصة بك + لقد تم إضافة شفرات برمجية ستجعل الجداول التالية (users + failed_logins) يتم إنشاؤها بشكل تلقائي
في حالة وجدا السكريبت أنه لم يتم إنشاء الجداول سابقا
الجدول الذي يتم إنشاؤه في قاعدة البيانات بإسم (users) هو الذي يتم تخزين فيه معلومات العضويات
أما الجدول failed_logins هو يتم تخزين فيه محاولات الدخول الفاشلة والتي لم تنجح لكي يتم التعرف على عمليات الدخول التي قد تكون محاولة إختراق للحساب أو شيء من هذا القبيل
admin_panel.php
هذا الملف هو المسؤول عن الواجهة الخاصة بمدير الحساب بحيث هنا يمكنك التحكم في الحساب(في حالة تم برمجة وظائف في هذا النظام) في حالتنا نحن لم نقوم باي إضافات في واجهة المدير
ستجد فقط جملة ترحيبية ورابط لتسجيل الخروج.
header.php
هذا الملف هو الذي نضع فيه الشفرات الخاصة بي لغة HTML والتي هي عبارة عن هيكل الصفحة بحيث تحدد فيه الشريط العلوي وماذا سيكونف يه بالإضافة الى الخيارات الخاص بالصفحة
مثل رابط ملف التصميم (CSS) وعنوان الصفحات و أيضا قمنا بإضافة أسطر في الأعلى خاصة بالجلسات أو sessions وهي التي ستسمح لنا بحفظ وتخزين بيانات الحساب لكي يتم التعرف عليه
والتحقق منه عند التسجيل والدخول لبعض الصفحات. عن طريق الجلسات يمكننا السماح للعضو بالدخول لصفحة معين وأيضا تنفع في حالة كان لدينا أنواع أكثر من عضويات (مدير - عضو - مشرف)
تم وضع أيضا ملف database من أجل الإتصال بقاعدة البيانات في الصفحات
وضعناها في هذا الملف header.php لاننا سنقوم بربطها بجميع الصفحات المهمة لكي لا نكرر الامر كل مرة ونكثر من الأكواد البرمجية.
index.php
هذه الصفحة الرئيسية للسكريبت وستجد فيها أيقونة تسجيل العضويات وأيقونة اخرى توجهك لتسجيل الدخول
في حالة تم الدخول من العضوية ستجد في الصفحة الرئيسية أيقونة صفحة المدير التي يتم من خلالها التحكم في الحساب.
logout.php
في هذا الملف تم عمل شفرات برمجية خاصة بالجلسات وهي ستمكننا من هدم الجلسة وحذف بيانات الاتصال بالحساب في المتصفح لكي تستطيع تسجيل الخروج.
register.php / login.php
هذه الملفات هي الضرورية والتي تكون فيها عملية تسجيل الدخول وتسجيل العضويات
تم عمل أغلبية تقنيات الحماية والتحقق أكثر من المستخدم الذي يدخل البيانات
مثلا كلمات السرية يتم التحقق منها ويجب أن تكون الكلمة أكثر من 8 حروف وأن تحتوي حروف وأرقام
من أجل تركيب وإستخدام هذا السكريبت
يجب عليك أن تقوم بالدخول لملف database.php
ثم تقوم بتغيير هذه الأسطر إضافة البيانات الخاصة بقاعدة بياناتك في الاستضافة
يجب عليك أولا إنشاء قاعدة بيانات اذا لم تكن لديك مسبقا ثم تنسخ معلومات قاعدة البيانات وتبدأ في إضافتها في ملف database.php
اخي ممكن سكربت عمل اسم قاعدة البيانات بكود php بشكل تلقائي
حاول ادخال الهوست الخاص بك + اليوزر الخاص بقاعدة البيانات و الباسوورد الخاص بها
ثم ارفع الملف في سكريبتك وعند الدخول لهدا الملف سيتم انشاء قاعدة البيانات تلقائيا باسم عشوائي
لكن بعض الاستضافات قد لا تسمح لك بحرية انشائه تلقائيا خاصة المجانية
يمكنك تجربة النوع الاول عن طريق mysqli والثاني عن طريق PDO
النوع الخاص بي mysqli
// MySQL server credentials $host = "localhost"; // Host name (e.g., localhost) $username = "root"; // Your MySQL username $password = ""; // Your MySQL password // Establishing a connection to MySQL $conn = new mysqli($host, $username, $password); // Check if the connection is successful if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } // Function to generate a random database name function generateDatabaseName($prefix = "db_") { return $prefix . uniqid(); } // Generate a database name $dbName = generateDatabaseName(); // SQL query to create a new database $sql = "CREATE DATABASE `$dbName`"; // Execute the query if ($conn->query($sql) === TRUE) { echo "Database created successfully with the name: $dbName"; } else { echo "Error creating database: " . $conn->error; } // Close the connection $conn->close();
اما الثاني فهو خاص بي PDO
// MySQL server credentials $host = "localhost"; // Host name (e.g., localhost) $username = "root"; // Your MySQL username $password = ""; // Your MySQL password try { // Establish a connection using PDO $pdo = new PDO("mysql:host=$host", $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Function to generate a random database name function generateDatabaseName($prefix = "db_") { return $prefix . uniqid(); } // Generate a unique database name $dbName = generateDatabaseName(); // SQL query to create the database $sql = "CREATE DATABASE `$dbName`"; // Execute the query $pdo->exec($sql); echo "Database created successfully with the name: $dbName"; } catch (PDOException $e) { // Handle exceptions and display error messages echo "Error creating database: " . $e->getMessage(); } // Close the connection (optional in PDO, but good practice) $pdo = null;
اذا كانت لديك نسخة حديثة من لغة البرمجة
من أحسن تجربة النوع الثاني PDO
يجب اختيار فقط نوع واحد
هذا الملف يمكنك دمجه في اي سكريبت تريد
اما السكريبت الدي وضعتهم لكم في الموضوع فانا لم اقوم بجعل انشاء قاعدة البيانات تلقائية بل تم فقط انشاء الجداول بشكل تلقائي
شكراً جزيلاً لك على هذا الموضوع الرائع والسكربت المميز! جزاك الله خيراً على مشاركتك القيمة،
وأتمنى لك المزيد من التوفيق والنجاح في تقديم المزيد من المواضيع المفيدة. 🌟
نحن ممتنون لمساهمتك الفعالة في المنتدى.
تحياتي لك!