يفتح
يغلق

إنشاء نموذج في HTML. إرسال بيانات النموذج قم بتعيين نموذج الترخيص في HTML

في هذه المقالة سوف تتعلم كيفية إنشاء نموذج التسجيل والترخيصباستخدام HTML وJavaScript وPHP وMySql. تُستخدم هذه النماذج في كل مواقع الويب تقريبًا، بغض النظر عن نوعها. تم إنشاؤها للمنتدى والمتجر عبر الإنترنت والشبكات الاجتماعية (مثل Facebook وTwitter وOdnoklassniki) والعديد من أنواع المواقع الأخرى.

إذا كان لديك موقع ويب على جهاز الكمبيوتر المحلي الخاص بك، فآمل أن يكون لديك بالفعل . بدونها، لن ينجح شيء.

إنشاء جدول في قاعدة البيانات

من أجل تنفيذ تسجيل المستخدم، نحتاج أولاً إلى قاعدة بيانات. إذا كان لديك بالفعل، فهذا رائع، وإلا، فأنت بحاجة إلى إنشائه. في المقال أشرح بالتفصيل كيفية القيام بذلك.

وهكذا، لدينا قاعدة بيانات (مختصرة بـ DB)، والآن نحتاج إلى إنشاء جدول المستخدمينحيث سنضيف المستخدمين المسجلين لدينا.

وشرحت أيضًا كيفية إنشاء جدول في قاعدة البيانات في المقالة. قبل إنشاء جدول، نحتاج إلى تحديد الحقول التي سيحتوي عليها. ستتوافق هذه الحقول مع الحقول الموجودة في نموذج التسجيل.

لذلك، فكرنا في تخيل الحقول التي سيتضمنها النموذج الخاص بنا وقمنا بإنشاء جدول المستخدمينمع هذه الحقول:

  • بطاقة تعريف- المعرف. مجال بطاقة تعريفيجب أن يحتوي عليه كل جدول في قاعدة البيانات.
  • الاسم الأول- لحفظ الاسم.
  • اسم العائلة- للحفاظ على اللقب.
  • بريد إلكتروني- لحفظ العنوان البريدي. سوف نستخدم البريد الإلكتروني لتسجيل الدخول، لذا يجب أن يكون هذا الحقل فريدًا، أي أن يحتوي على فهرس فريد.
  • email_status- حقل للإشارة إلى تأكيد البريد أم لا. إذا تم تأكيد البريد، فستكون قيمته 1، وإلا تكون القيمة 0.
  • كلمة المرور- لحفظ كلمة المرور.


إذا كنت تريد أن يحتوي نموذج التسجيل الخاص بك على بعض الحقول الأخرى، فيمكنك أيضًا إضافتها هنا.

هذا كل شيء، طاولتنا المستخدمينمستعد. دعنا ننتقل إلى المرحلة التالية.

اتصال قاعدة البيانات

لقد أنشأنا قاعدة البيانات، والآن نحتاج إلى الاتصال بها. سوف نقوم بالاتصال باستخدام امتداد PHP MySQLi.

في مجلد موقعنا، قم بإنشاء ملف بالاسم dbconnect.php، واكتب فيه البرنامج النصي التالي:

خطأ في اتصال قاعدة البيانات. وصف الخطأ: ".mysqli_connect_error()."

";exit(); ) // اضبط ترميز الاتصال $mysqli->set_charset("utf8"); // لتسهيل الأمر، أضف متغيرًا هنا يحتوي على اسم موقعنا $address_site = "http://testsite .محلي" ; ?>

هذا الملف dbconnect.phpسوف تحتاج إلى أن تكون متصلاً بمعالجات النموذج.

لاحظ المتغير $address_site، هنا أشرت إلى اسم موقع الاختبار الخاص بي الذي سأعمل عليه. يرجى الإشارة إلى اسم موقعك وفقا لذلك.

هيكل الموقع

الآن دعونا نلقي نظرة على بنية HTML لموقعنا.

سنقوم بنقل رأس وتذييل الموقع إلى ملفات منفصلة، header.phpو footer.php. وسوف نقوم بإدراجها في جميع الصفحات. وهي على الصفحة الرئيسية (ملف Index.php)، إلى الصفحة التي تحتوي على نموذج التسجيل (ملف form_register.php) وإلى الصفحة التي تحتوي على نموذج التفويض (ملف form_auth.php).

حظر مع الروابط لدينا، تسجيلو تفويض، قم بإضافتها إلى رأس الموقع حتى يتم عرضها في جميع الصفحات. سيتم إدخال رابط واحد في صفحة استمارة التسجيل(ملف form_register.php) والآخر إلى الصفحة مع نمو ذج تفويض(ملف form_auth.php).

محتويات ملف header.php:

اسم موقعنا

ونتيجة لذلك، تبدو صفحتنا الرئيسية كما يلي:


بالطبع، قد يكون لموقعك بنية مختلفة تمامًا، لكن هذا ليس مهمًا بالنسبة لنا الآن. الشيء الرئيسي هو أن هناك روابط (أزرار) للتسجيل والترخيص.

الآن دعنا ننتقل إلى نموذج التسجيل. كما تفهم بالفعل، لدينا ذلك في الملف form_register.php.

انتقل إلى قاعدة البيانات (في phpMyAdmin)، وافتح بنية الجدول المستخدمينوننظر إلى المجالات التي نحتاجها. وهذا يعني أننا بحاجة إلى حقول لإدخال الاسم الأول والأخير، وحقل لإدخال العنوان البريدي (البريد الإلكتروني) وحقل لإدخال كلمة المرور. ولأغراض أمنية، سوف نقوم بإضافة حقل لإدخال كلمة التحقق.

على الخادم، نتيجة لمعالجة نموذج التسجيل، قد تحدث أخطاء مختلفة بسبب عدم تمكن المستخدم من التسجيل. لذلك، لكي يفهم المستخدم سبب فشل التسجيل، من الضروري عرض رسائل حول هذه الأخطاء.

قبل عرض النموذج، أضف كتلة لعرض رسائل الخطأ من الجلسة.

وشيء آخر، إذا كان المستخدم مرخصًا بالفعل، ومن باب الفضول يذهب إلى صفحة التسجيل مباشرة عن طريق الكتابة في شريط عنوان المتصفح site_address/form_register.php، ففي هذه الحالة، بدلاً من نموذج التسجيل، سنعرض رأسًا يفيد بأنه مسجل بالفعل.

بشكل عام، رمز الملف form_register.phpلقد حصلنا على هذا:

انت مسجل مسبقا

في المتصفح، تبدو الصفحة التي تحتوي على نموذج التسجيل كما يلي:


باستخدام السمة المطلوبة، لقد جعلنا جميع الحقول إلزامية.

انتبه إلى رمز نموذج التسجيل حيث يتم عرض كلمة التحقق:


لقد حددنا المسار إلى الملف بقيمة سمة src للصورة captcha.php، الذي يولد كلمة التحقق هذه.

دعونا نلقي نظرة على رمز الملف captcha.php:

تم التعليق على الكود جيدًا، لذا سأركز على نقطة واحدة فقط.

داخل وظيفة صورةTtfText()، تم تحديد المسار إلى الخط verdana.ttf. لذا لكي يعمل رمز التحقق بشكل صحيح، يجب علينا إنشاء مجلد الخطوط، ووضع ملف الخط هناك verdana.ttf. يمكنك العثور عليه وتنزيله من الإنترنت، أو أخذه من الأرشيف مع مواد هذه المقالة.

لقد انتهينا من بنية HTML، وحان الوقت للمضي قدمًا.

التحقق من صلاحية البريد الإلكتروني باستخدام jQuery

يحتاج أي نموذج إلى التحقق من صحة البيانات المدخلة، سواء من جانب العميل (باستخدام JavaScript أو jQuery) أو من جانب الخادم.

يجب أن نولي اهتماما خاصا لمجال البريد الإلكتروني. من المهم جدًا أن يكون العنوان البريدي الذي تم إدخاله صالحًا.

بالنسبة لحقل الإدخال هذا، قمنا بتعيين نوع البريد الإلكتروني (type = "email")، وهذا يحذرنا قليلاً من التنسيقات غير الصحيحة. لكن هذا لا يكفي، لأنه من خلال مفتش الكود الذي يوفره لنا المتصفح، يمكننا بسهولة تغيير قيمة السمة يكتبمع بريد إلكترونيعلى نصوهذا كل شيء، لن يكون الشيك الخاص بنا صالحًا بعد الآن.


وفي هذه الحالة، يجب علينا إجراء فحص أكثر موثوقية. للقيام بذلك، سوف نستخدم مكتبة jQuery من JavaScript.

لتوصيل مكتبة jQuery، في الملف header.phpبين العلامات ، قبل علامة الإغلاق ، أضف هذا السطر:

مباشرة بعد هذا السطر، سنضيف رمز التحقق من البريد الإلكتروني. سنقوم هنا بإضافة رمز للتحقق من طول كلمة المرور المدخلة. يجب أن لا يقل طوله عن 6 أحرف.

باستخدام هذا البرنامج النصي، نتحقق من صحة عنوان البريد الإلكتروني الذي تم إدخاله. إذا أدخل المستخدم بريدًا إلكترونيًا غير صحيح، فسنعرض رسالة خطأ حول هذا الأمر ونعطل زر إرسال النموذج. إذا كان كل شيء على ما يرام، فإننا نزيل الخطأ ونقوم بتنشيط زر إرسال النموذج.

وبذلك نكون قد انتهينا من التحقق من صحة النموذج من جانب العميل. يمكننا الآن إرسالها إلى الخادم، حيث سنقوم أيضًا ببعض عمليات التحقق وإضافة البيانات إلى قاعدة البيانات.

تسجيل المستخدم

نرسل النموذج إلى الملف للمعالجة تسجيل.phpعبر طريقة POST. تم تحديد اسم ملف المعالج هذا في قيمة السمة فعل. ويتم تحديد طريقة الإرسال في قيمة السمة طريقة.

افتح هذا الملف تسجيل.phpوأول شيء يتعين علينا القيام به هو كتابة وظيفة إطلاق الجلسة وتوصيل الملف الذي أنشأناه مسبقًا dbconnect.php(في هذا الملف قمنا بالاتصال بقاعدة البيانات). وأيضًا، دعونا نعلن على الفور عن الخلايا رسائل خاطئةو Success_messagesفي مصفوفة الجلسة العالمية. في error_mesagesسنقوم بتسجيل جميع رسائل الخطأ التي تحدث أثناء معالجة النموذج وفي succes_messages، سوف نسجل رسائل مبهجة.

قبل أن نواصل، يجب علينا التحقق هل تم تقديم النموذج على الإطلاق؟. يمكن للمهاجم أن ينظر إلى قيمة السمة فعلمن النموذج، ومعرفة الملف الذي يقوم بمعالجة هذا النموذج. وربما خطرت له فكرة الانتقال مباشرة إلى هذا الملف عن طريق كتابة العنوان التالي في شريط عنوان المتصفح: http://site_address/register.php

لذلك نحن بحاجة إلى التحقق من وجود خلية في مصفوفة POST العامة يتطابق اسمها مع اسم زر "التسجيل" الخاص بنا من النموذج. بهذه الطريقة نتحقق مما إذا تم النقر على زر "التسجيل" أم لا.

إذا حاول أحد المهاجمين الانتقال مباشرةً إلى هذا الملف، فسوف يتلقى رسالة خطأ. دعني أذكرك أن المتغير $address_site يحتوي على اسم الموقع وقد تم الإعلان عنه في الملف dbconnect.php.

خطأ!الصفحة الرئيسية.

"); } ?>

تمت إضافة قيمة captcha في الجلسة عند إنشائها في الملف captcha.php. وللتذكير، سأعرض لك هذا الجزء من التعليمات البرمجية من الملف مرة أخرى captcha.php، حيث تتم إضافة قيمة captcha إلى الجلسة:

الآن دعنا ننتقل إلى التحقق نفسه. في الملف تسجيل.php، داخل كتلة if، حيث نتحقق مما إذا تم النقر على زر "التسجيل"، أو بالأحرى مكان الإشارة إلى التعليق "" // (1) مساحة للجزء التالي من الكود"نحن نكتب:

// التحقق من رمز التحقق المستلم // قم بقص المسافات من بداية السطر ونهايته $captcha = Trim($_POST["captcha"]); if(isset($_POST["captcha"]) && !empty($captcha))( // قارن القيمة المستلمة بالقيمة من الجلسة. if(($_SESSION["rand"] != $captcha) && ($_SESSION ["rand"] != ""))( // إذا كانت كلمة التحقق غير صحيحة، فإننا نعيد المستخدم إلى صفحة التسجيل، وهناك سنعرض له رسالة خطأ مفادها أنه أدخل كلمة التحقق بشكل خاطئ $خطأ_رسالة = " .

خطأ!لقد أدخلت كلمة التحقق بشكل خاطئ

"; // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] = $error_message; // أعد المستخدم إلى صفحة التسجيل header("HTTP/1.1 301 Moved Permanently"); header("Location: " .$address_site ."/form_register.php"); //أوقف البرنامج النصي Exit(); // (2) ضع الجزء التالي من الكود )else( // إذا لم يتم تمرير رمز التحقق أو كان فارغًا exit( "

خطأ!لا يوجد رمز تحقق، وهو رمز captcha. يمكنك الذهاب إلى الصفحة الرئيسية.

"); }

بعد ذلك، نحتاج إلى معالجة البيانات المستلمة من مصفوفة POST. بادئ ذي بدء، نحتاج إلى التحقق من محتويات مجموعة POST العالمية، أي ما إذا كانت هناك خلايا تتوافق أسماؤها مع أسماء حقول الإدخال من نموذجنا.

إذا كانت الخلية موجودة، فإننا نقوم بقص المسافات من بداية ونهاية السطر من هذه الخلية، وإلا فإننا نعيد توجيه المستخدم مرة أخرى إلى الصفحة التي تحتوي على نموذج التسجيل.

بعد ذلك، بعد أن قمنا بقص المسافات، نضيف السطر إلى المتغير ونتحقق من خلو هذا المتغير؛ إذا لم يكن فارغًا، فإننا ننتقل، وإلا فإننا نعيد توجيه المستخدم مرة أخرى إلى الصفحة التي تحتوي على نموذج التسجيل.

الصق هذا الكود في المكان المحدد" // (2) مساحة للجزء التالي من الكود".

/* تحقق مما إذا كانت هناك بيانات مرسلة من النموذج في المصفوفة العامة $_POST وقم بتغليف البيانات المرسلة في متغيرات عادية.*/ if(isset($_POST["first_name"]))( // قص المسافات من البداية ونهاية السلسلة $first_name = Trim($_POST["first_name"]); // التحقق من وجود فراغ في المتغير if(!empty($first_name))( // للأمان، قم بتحويل الأحرف الخاصة إلى كيانات HTML $first_name = htmlspecialchars($first_name, ENT_QUOTES) ;else( // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] .= "

أدخل أسمك

حقل الاسم مفقود

"; // أعد المستخدم إلى صفحة التسجيل header("HTTP/1.1 301 تم نقله نهائيًا"); header("Location: ".$address_site."/form_register.php"); //أوقف البرنامج النصي Exit(); ) if( isset($_POST["last_name"]))( // قص المسافات من بداية السطر ونهايته $last_name = Trim($_POST["last_name"]); if(!empty($last_name)) ( // للأمان، قم بتحويل الأحرف الخاصة إلى كيانات HTML $last_name = htmlspecialchars($last_name, ENT_QUOTES); )else( // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] .= "

الرجاء إدخال اسمك الأخير

"; // أعد المستخدم إلى صفحة التسجيل header("HTTP/1.1 301 تم نقله نهائيًا"); header("Location: ".$address_site."/form_register.php"); //أوقف البرنامج النصي Exit(); ) )else ( // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] .= "

حقل الاسم الأخير مفقود

"; // أعد المستخدم إلى صفحة التسجيل header("HTTP/1.1 301 تم نقله نهائيًا"); header("Location: ".$address_site."/form_register.php"); //أوقف البرنامج النصي Exit(); ) if( isset($_POST["email"]))( // قص المسافات من بداية السطر ونهايته $email = Trim($_POST["email"]); if(!empty($email)) ( $email = htmlspecialchars ($email, ENT_QUOTES); // (3) موقع الرمز للتحقق من تنسيق عنوان البريد الإلكتروني وتفرده )else( // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] .= "

أدخل بريدك الإلكتروني

"; // أعد المستخدم إلى صفحة التسجيل header("HTTP/1.1 301 تم نقله نهائيًا"); header("Location: ".$address_site."/form_register.php"); //أوقف البرنامج النصي Exit(); ) )else ( // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] .= "

"; // أعد المستخدم إلى صفحة التسجيل header("HTTP/1.1 301 تم نقله نهائيًا"); header("Location: ".$address_site."/form_register.php"); //أوقف البرنامج النصي Exit(); ) if( isset($_POST["password"]))( // قص المسافات من بداية السلسلة ونهايتها $password = Trim($_POST["password"]); if(!empty($password)) ( $password = htmlspecialchars ($password, ENT_QUOTES); // تشفير كلمة المرور $password = md5($password."top_secret");else( // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] . = "

ادخل رقمك السري

"; // أعد المستخدم إلى صفحة التسجيل header("HTTP/1.1 301 تم نقله نهائيًا"); header("Location: ".$address_site."/form_register.php"); //أوقف البرنامج النصي Exit(); ) )else ( // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] .= "

"; // أعد المستخدم إلى صفحة التسجيل header("HTTP/1.1 301 تم نقله نهائيًا"); header("Location: ".$address_site."/form_register.php"); //أوقف البرنامج النصي Exit(); ) // (4) مكان لرمز إضافة مستخدم إلى قاعدة البيانات

أهمية خاصة هو المجال بريد إلكتروني. يجب علينا التحقق من تنسيق العنوان البريدي المستلم وتفرده في قاعدة البيانات. بمعنى، هل هناك أي مستخدم لديه نفس عنوان البريد الإلكتروني مسجل بالفعل؟

في المكان المحدد" // (3) موقع الرمز للتحقق من تنسيق العنوان البريدي وتفرده"أضف الكود التالي:

//تحقق من تنسيق عنوان البريد الإلكتروني المستلم باستخدام التعبير العادي $reg_email = "/^**@(+(*+)*\.)++/i"; // إذا كان تنسيق عنوان البريد الإلكتروني المستلم لا يتطابق مع التعبير العادي if(!preg_match($reg_email, $email))( // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] .= "

لقد قمت بإدخال بريد إلكتروني غير صحيح

"; // أعد المستخدم إلى صفحة التسجيل header("HTTP/1.1 301 تم نقله نهائيًا"); header("Location: ".$address_site."/form_register.php"); //أوقف البرنامج النصي Exit(); ) // نتحقق مما إذا كان هذا العنوان موجودًا بالفعل في قاعدة البيانات $result_query = $mysqli->query("SELECT `email` FROM `users` WHERE `email`="".$email.""); صف واحد بالضبط، مما يعني أن المستخدم الذي لديه عنوان البريد الإلكتروني هذا مسجل بالفعل if($result_query->num_rows == 1)( // إذا كانت النتيجة التي تم الحصول عليها ليست خاطئة if(($row = $result_query->fetch_assoc() ) != false) ( // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] .= "

تم بالفعل تسجيل مستخدم لديه عنوان البريد الإلكتروني هذا

"; // إعادة المستخدم إلى صفحة التسجيل header("HTTP/1.1 301 تم نقله نهائيًا"); header("Location: ".$address_site."/form_register.php"); )else( // احفظ رسالة الخطأ إلى الجلسة $_SESSION["error_messages"] .= "

خطأ في استعلام قاعدة البيانات

"; // إعادة المستخدم إلى صفحة التسجيل header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); ) /* إغلاق التحديد */ $ result_query-> إغلاق ()؛ // إيقاف البرنامج النصي () ) /* إغلاق التحديد */ $result_query->إغلاق();

وهكذا، انتهينا من جميع عمليات التحقق، وحان الوقت لإضافة المستخدم إلى قاعدة البيانات. في المكان المحدد" // (4) مكان لرمز إضافة مستخدم إلى قاعدة البيانات"أضف الكود التالي:

// استعلام لإضافة مستخدم إلى قاعدة البيانات $result_query_insert = $mysqli->query("INSERT INTO `users` (الاسم الأول، اسم العائلة، البريد الإلكتروني، كلمة المرور) VALUES ("".$first_name.""، "".$last_name ." ", "".$email.", "".$password."")"); if(!$result_query_insert)( // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] .= "

خطأ في طلب إضافة مستخدم إلى قاعدة البيانات

"; // أعد المستخدم إلى صفحة التسجيل header("HTTP/1.1 301 تم نقله نهائيًا"); header("Location: ".$address_site."/form_register.php"); //أوقف البرنامج النصي Exit(); )else( $_SESSION["success_messages"] = "

تم التسجيل بنجاح!!!
الآن يمكنك تسجيل الدخول باستخدام اسم المستخدم وكلمة المرور الخاصة بك.

"; // أرسل المستخدم إلى صفحة التفويض header("HTTP/1.1 301 تم نقله نهائيًا"); header("Location: ".$address_site."/form_auth.php"); ) /* إكمال الطلب */ $ result_query_insert-> Close(); // أغلق الاتصال بقاعدة البيانات $mysqli->إغلاق();

إذا حدث خطأ في طلب إضافة مستخدم إلى قاعدة البيانات، فإننا نضيف رسالة حول هذا الخطأ إلى الجلسة ونعيد المستخدم إلى صفحة التسجيل.

بخلاف ذلك، إذا سار كل شيء على ما يرام، فإننا نضيف أيضًا رسالة إلى الجلسة، ولكن هذه المرة يكون الأمر أكثر متعة، أي أننا نخبر المستخدم أن التسجيل كان ناجحًا. ونقوم بإعادة توجيهه إلى الصفحة التي تحتوي على نموذج التفويض.

يوجد البرنامج النصي للتحقق من تنسيق عنوان البريد الإلكتروني وطول كلمة المرور في الملف header.php، لذلك سيتم تطبيقه أيضًا على الحقول من هذا النموذج.

تبدأ الجلسة أيضًا في الملف header.php، هكذا في الملف form_auth.phpليست هناك حاجة لبدء الجلسة، لأننا سنحصل على خطأ.


كما قلت سابقًا، يعمل هنا أيضًا البرنامج النصي للتحقق من تنسيق عنوان البريد الإلكتروني وطول كلمة المرور. لذلك، إذا أدخل المستخدم عنوان بريد إلكتروني غير صحيح أو كلمة مرور قصيرة، فسوف يتلقى على الفور رسالة خطأ. الزر ليأتيسوف تصبح غير نشطة.

بعد إصلاح الأخطاء، الزر ليأتييصبح نشطًا، وسيتمكن المستخدم من إرسال النموذج إلى الخادم، حيث ستتم معالجته.

إذن المستخدم

لتنسب القيمة فعليحتوي عائق التفويض على ملف محدد auth.phpفهذا يعني أنه ستتم معالجة النموذج في هذا الملف.

وهكذا، افتح الملف auth.phpواكتب الكود لمعالجة نموذج التفويض. أول ما عليك فعله هو بدء الجلسة وتوصيل الملف dbconnect.phpللاتصال بقاعدة البيانات.

// قم بتعريف خلية لإضافة الأخطاء التي قد تحدث عند معالجة النموذج. $_SESSION["error_messages"] = ""; // قم بتعريف خلية لإضافة الرسائل الناجحة $_SESSION["success_messages"] = "";

/* تحقق مما إذا كان النموذج قد تم إرساله، أي ما إذا تم النقر على زر تسجيل الدخول. إذا كانت الإجابة بنعم، فإننا ننتقل، إذا لم يكن الأمر كذلك، فسوف نعرض رسالة خطأ للمستخدم تشير إلى أنه قام بالدخول إلى هذه الصفحة مباشرة. */ if(isset($_POST["btn_submit_auth"]) && !empty($_POST["btn_submit_auth"]))( //(1) مساحة للجزء التالي من الكود )else(exit("

خطأ!لقد قمت بالوصول إلى هذه الصفحة مباشرة، لذا لا توجد بيانات لمعالجتها. يمكنك الذهاب إلى الصفحة الرئيسية.

"); }

// تحقق من رمز التحقق المستلم if(isset($_POST["captcha"]))( // قم بقص المسافات من بداية السطر ونهايته $captcha = Trim($_POST["captcha"]); if(! فارغ($captcha ))( // قارن القيمة المستلمة بالقيمة من الجلسة if(($_SESSION["rand"] != $captcha) && ($_SESSION["rand"] != "")) ( // إذا كانت كلمة التحقق غير صحيحة، فإننا نعيد المستخدم إلى صفحة التفويض، وهناك سنعرض له رسالة خطأ مفادها أنه أدخل كلمة التحقق بشكل خاطئ $error_message = ".

خطأ!لقد أدخلت كلمة التحقق بشكل خاطئ

"; // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] = $error_message; // أعد المستخدم إلى صفحة التفويض header("HTTP/1.1 301 Moved Permanently"); header("Location: " .$address_site ."/form_auth.php"); //أوقف البرنامج النصي () ؛

خطأ!يجب ألا يكون حقل إدخال كلمة التحقق فارغًا.

"; // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] = $error_message; // أعد المستخدم إلى صفحة التفويض header("HTTP/1.1 301 Moved Permanently"); header("Location: " .$address_site ."/form_auth.php"); //أوقف البرنامج النصي (); //(2) مكان لمعالجة عنوان البريد الإلكتروني //(3) مكان لمعالجة كلمة المرور //(4) مكان للإنشاء طلب إلى قاعدة البيانات )else ( // إذا لم يتم تمرير رمز التحقق، Exit("

خطأ!لا يوجد رمز تحقق، وهو رمز captcha. يمكنك الذهاب إلى الصفحة الرئيسية.

"); }

إذا قام المستخدم بإدخال رمز التحقق بشكل صحيح، فإننا ننتقل، وإلا فإننا نعيده إلى صفحة التفويض.

التحقق من العنوان البريدي

// قص المسافات من بداية السطر ونهايته $email = Trim($_POST["email"]); if(isset($_POST["email"]))( if(!empty($email))( $email = htmlspecialchars($email, ENT_QUOTES); //تحقق من تنسيق عنوان البريد الإلكتروني المستلم باستخدام تعبير عادي $ reg_email = " /^**@(+(*+)*\.)++/i"; // إذا كان تنسيق عنوان البريد الإلكتروني المستلم لا يتطابق مع التعبير العادي if(!preg_match($reg_email, $email ))( // حفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] .= "

لقد قمت بإدخال بريد إلكتروني غير صحيح

"; // أعد المستخدم إلى صفحة التفويض header("HTTP/1.1 301 تم نقله نهائيًا"); header("Location: ".$address_site."/form_auth.php"); //أوقف البرنامج النصي Exit(); ) )else ( // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] .= "

يجب ألا يكون حقل إدخال العنوان البريدي (البريد الإلكتروني) فارغًا.

"; // أعد المستخدم إلى صفحة التسجيل header("HTTP/1.1 301 تم نقله نهائيًا"); header("Location: ".$address_site."/form_register.php"); //أوقف البرنامج النصي Exit(); ) )else ( // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] .= "

حقل إدخال البريد الإلكتروني مفقود

"; // أعد المستخدم إلى صفحة التفويض header("HTTP/1.1 301 تم نقله نهائيًا"); header("Location: ".$address_site."/form_auth.php"); //أوقف البرنامج النصي Exit(); ) // (3) منطقة معالجة كلمة المرور

إذا قام المستخدم بإدخال عنوان بريد إلكتروني بتنسيق خاطئ أو كانت قيمة حقل عنوان البريد الإلكتروني فارغة، فإننا نعيده إلى صفحة التفويض حيث نعرض رسالة حول ذلك.

التحقق من كلمة المرور

الحقل التالي المطلوب معالجته هو حقل كلمة المرور. إلى المكان المحدد" //(3) مكان لمعالجة كلمة المرور"، نحن نكتب:

if(isset($_POST["password"]))( // قص المسافات من بداية السلسلة ونهايتها $password = Trim($_POST["password"]); if(!empty($password))( $password = htmlspecialchars($password, ENT_QUOTES); // تشفير كلمة المرور $password = md5($password."top_secret");else( // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] .= "

ادخل رقمك السري

"; // أعد المستخدم إلى صفحة التسجيل header("HTTP/1.1 301 تم نقله نهائيًا"); header("Location: ".$address_site."/form_auth.php"); //أوقف البرنامج النصي Exit(); ) )else ( // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] .= "

حقل كلمة المرور مفقود

"; // أعد المستخدم إلى صفحة التسجيل header("HTTP/1.1 301 تم نقله نهائيًا"); header("Location: ".$address_site."/form_auth.php"); //أوقف البرنامج النصي Exit(); )

نستخدم هنا الدالة md5() لتشفير كلمة المرور المستلمة، نظرًا لأن كلمات المرور الخاصة بنا موجودة في نموذج مشفر في قاعدة البيانات. كلمة سرية إضافية في التشفير في حالتنا " top_secret" يجب أن يكون هو الذي تم استخدامه عند تسجيل المستخدم.

أنت الآن بحاجة إلى إجراء استعلام في قاعدة البيانات لتحديد مستخدم يساوي عنوان بريده الإلكتروني عنوان البريد الإلكتروني المستلم وكلمة المرور الخاصة به تساوي كلمة المرور المستلمة.

// الاستعلام في قاعدة البيانات بناءً على اختيار المستخدم. $result_query_select = $mysqli->query("SELECT * FROM `users` حيث البريد الإلكتروني = "".$email."" AND كلمة المرور = "".$password."""); if(!$result_query_select)( // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] .= "

خطأ في الاستعلام عند اختيار مستخدم من قاعدة البيانات

"; // أعد المستخدم إلى صفحة التسجيل header("HTTP/1.1 301 تم نقله نهائيًا"); header("Location: ".$address_site."/form_auth.php"); //أوقف البرنامج النصي Exit(); )else( //تحقق من عدم وجود مستخدم لديه مثل هذه البيانات في قاعدة البيانات، ثم اعرض رسالة خطأ if($result_query_select->num_rows == 1)(// إذا كانت البيانات المدخلة تطابق البيانات من قاعدة البيانات، ثم احفظ تسجيل الدخول وكلمة المرور لمصفوفة الجلسات $_SESSION["email"] = $email $_SESSION["password"] = $password; // إعادة المستخدم إلى رأس الصفحة الرئيسية("HTTP/1.1 301 تم نقله بشكل دائم" ); ."/index.php"); )else( // احفظ رسالة الخطأ في الجلسة. $_SESSION["error_messages"] .= "

معلومات تسجيل الدخول و/أو كلمة المرور غير صحيحة

"; // أعد المستخدم إلى صفحة التفويض header("HTTP/1.1 301 تم نقله نهائيًا"); header("Location: ".$address_site."/form_auth.php"); //أوقف البرنامج النصي Exit(); ))

الخروج من الموقع

وآخر شيء ننفذه هو إجراءات مغادرة الموقع. في الوقت الحالي، نعرض في الرأس روابط لصفحة الترخيص وصفحة التسجيل.

في رأس الموقع (ملف header.php)، باستخدام الجلسة نتحقق مما إذا كان المستخدم مصرحًا له بالفعل. إذا لم يكن الأمر كذلك، فإننا نعرض روابط التسجيل والتفويض، وإلا (إذا كان مفوضًا)، فبدلاً من روابط التسجيل والتفويض نعرض الرابط مخرج.

تعديل جزء من التعليمات البرمجية من الملف header.php:

تسجيل

مخرج

عند الضغط على رابط الخروج من الموقع يتم نقلنا إلى ملف تسجيل الخروج.php، حيث نقوم ببساطة بتدمير الخلايا باستخدام عنوان البريد الإلكتروني وكلمة المرور من الجلسة. بعد ذلك، نعيد المستخدم مرة أخرى إلى الصفحة التي تم النقر فوق الرابط فيها مخرج.

رمز الملف تسجيل الخروج.php:

هذا كل شئ. الآن أنت تعرف كيف تنفيذ ومعالجة نماذج التسجيل والترخيصالمستخدم على موقع الويب الخاص بك. توجد هذه النماذج في كل موقع تقريبًا، لذا يجب على كل مبرمج أن يعرف كيفية إنشائها.

لقد تعلمنا أيضًا كيفية التحقق من صحة البيانات المدخلة، سواء على جانب العميل (في المتصفح باستخدام JavaScript أو jQuery) أو على جانب الخادم (باستخدام PHP). لقد تعلمنا أيضا تنفيذ إجراء لمغادرة الموقع.

تم اختبار جميع البرامج النصية وهي تعمل. يمكنك تنزيل الأرشيف بملفات هذا الموقع الصغير من هذا الرابط.

في المستقبل سأكتب مقالا سأصف فيه. وأخطط أيضًا لكتابة مقال سأشرح فيه (دون إعادة تحميل الصفحة). لذا، لكي تظل على اطلاع بإصدار المقالات الجديدة، يمكنك الاشتراك في موقع الويب الخاص بي.

إذا كان لديك أي أسئلة، يرجى الاتصال بي، وإذا لاحظت أي خطأ في المقال، يرجى إبلاغي بذلك.

خطة الدرس (الجزء 5):

  1. إنشاء هيكل HTML لنموذج التفويض
  2. نقوم بمعالجة البيانات المستلمة
  3. نعرض تحية المستخدم في رأس الموقع

هل أعجبك المقال؟

نماذج HTML هي عناصر واجهة معقدة. وهي تشمل عناصر وظيفية مختلفة: حقول الإدخال و