إنشاء نظام تسجيل مستخدم بسيط في PHP وMySQL. إنشاء نظام تسجيل بسيط بشكل لا يصدق في PHP وصفحة التسجيل MySQL في PHP

Reg.ru: المجالات والاستضافة

أكبر مزود مسجل واستضافة في روسيا.

أكثر من 2 مليون اسم نطاق في الخدمة.

الترويج، بريد المجال، حلول الأعمال.

لقد قام أكثر من 700 ألف عميل حول العالم باختيارهم بالفعل.

* مرر الماوس فوق لإيقاف التمرير مؤقتًا.

العودة إلى الأمام

إنشاء نظام تسجيل مستخدم بسيط في PHP وMySQL

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

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

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



إليك كيفية عمل نظامنا البسيط للغاية:

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

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

مزايا هذا النهج:

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

عيوب:

أمان حساب المستخدم. إذا كان لدى شخص ما حق الوصول إلى بريد المستخدم، فيمكنه تسجيل الدخول.
- البريد الإلكتروني غير آمن ويمكن اعتراضه. ضع في اعتبارك أن هذا السؤال مناسب أيضًا في حالة نسيان كلمة المرور وتحتاج إلى استعادتها، أو في أي نظام ترخيص لا يستخدم HTTPS لنقل البيانات (تسجيل الدخول/كلمة المرور)؛
- أثناء قيامك بتكوين خادم البريد الخاص بك بشكل صحيح، هناك احتمال أن تنتهي الرسائل التي تحتوي على روابط التفويض في البريد العشوائي؛

بمقارنة مزايا وعيوب نظامنا، يمكننا القول أن النظام يتمتع بسهولة استخدام عالية (أقصى قدر من الراحة للمستخدم النهائي)، وفي الوقت نفسه، لديه مؤشر أمان منخفض.

لذا يقترح استخدامه للتسجيل في المنتديات والخدمات التي لا تعمل مع المعلومات الهامة.

كيفية استخدام هذا النظام

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

عليك بتحميل المصادر المرفقة مع الدرس
- ابحث عن ملف table.sql في الأرشيف. قم باستيراده إلى قاعدة البيانات الخاصة بك باستخدام خيار الاستيراد في phpMyAdmin. الطريقة البديلة: افتح هذا الملف من خلال محرر نصوص، وانسخ استعلام SQL وقم بتنفيذه؛
- افتح include/main.php واملأ إعدادات الاتصال بقاعدة البيانات الخاصة بك (حدد المستخدم وكلمة المرور للاتصال بقاعدة البيانات، بالإضافة إلى المضيف واسم قاعدة البيانات). وفي نفس الملف، يجب عليك أيضًا تحديد البريد الإلكتروني الذي سيتم استخدامه كعنوان أصلي للرسائل المرسلة من قبل النظام. يقوم بعض المضيفين بحظر رسائل البريد الإلكتروني الصادرة ما لم يحتوي النموذج على عنوان بريد إلكتروني حقيقي، والذي تم إنشاؤه من لوحة تحكم المضيف، لذا قم بتوفير عنوان حقيقي؛
- تحميل جميع ملفات وأصول ملف Index.php و protected.php ويتضمن مجلدات عبر FTP إلى مضيفك؛
- أضف الكود أدناه إلى كل صفحة PHP حيث تريد عرض نموذج تسجيل الدخول؛

Require_once "يتضمن/main.php"; $user = مستخدم جديد(); إذا(!$user->loggedIn())( إعادة التوجيه("index.php"); )
- مستعد!

بالنسبة لأولئك المهتمين بكيفية عمل كل ذلك، تابع القراءة أدناه!

الخطوة الأولى هي كتابة رمز HTM لنموذج التفويض. هذا الكود موجود في ملف Index.php. يحتوي هذا الملف أيضًا على كود PHP الذي يتعامل مع بيانات النموذج ووظائف نظام تسجيل الدخول المفيدة الأخرى. يمكنك معرفة المزيد حول هذا الأمر في القسم أدناه المخصص لمراجعة كود PHP.

فهرس.php

البرنامج التعليمي: نظام تسجيل بسيط للغاية مع تسجيل الدخول أو التسجيل باستخدام PHP وMySQL

أدخل عنوان بريدك الإلكتروني أعلاه وسوف نرسل
لك رابط تسجيل الدخول.

دخولتسجيل

في قسم الرأس (بين العلامات والعلامات) قمت بتضمين الأنماط الرئيسية (لم يتم تناولها في هذا البرنامج التعليمي، لذا يمكنك الاطلاع عليها بنفسك. Folder الأصول/css/style.css). قبل علامة الإغلاق، قمت بتضمين مكتبة jQuery وملف script.js، والذي سنكتبه ونحلله أدناه.


جافا سكريبت

يتتبع jQuery حالة زر "التسجيل/تسجيل الدخول" باستخدام الوظيفة e.preventDefault()ويرسل طلبات AJAX. اعتمادًا على استجابة الخادم، فإنه يعرض رسالة أو أخرى ويحدد الإجراءات الإضافية/

الأصول/js/script.js

$(function())( var form = $("#loggedIn");form.on("submit", function(e)( if(form.is(".loading, .loggedIn"))( return false ) var email =form.find("input").val(), messageHolder = form.find("span"); (m.error)(form.addClass("error"); messageHolder.text(m.message); ) else(form.removeClass("error").addClass("loggedIn"); messageHolder.text(m.message ); ;

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

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

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

يستخدم نظام التسجيل البسيط لدينا جدولين MySQL (رمز SQL موجود في ملف table.sql). الأول يخزن بيانات حول حسابات المستخدمين. والثاني يخزن معلومات حول عدد محاولات تسجيل الدخول.


مخطط جدول المستخدم.

لا يستخدم النظام كلمات المرور، كما هو موضح في الرسم البياني. يمكنك من خلاله رؤية عمود الرمز المميز الذي يحتوي على الرموز المميزة المجاورة لعمود token_validity. يتم تثبيت الرمز المميز بمجرد اتصال المستخدم بالنظام ويقوم بتعيين بريده الإلكتروني لإرسال رسالة (المزيد حول هذا في الكتلة التالية). يقوم عمود token_validity بتعيين الوقت بعد 10 دقائق، وبعد ذلك يصبح الرمز المميز غير صالح.


مخطط جدول يحسب عدد محاولات التفويض.

في كلا الجدولين، يتم تخزين عنوان IP في النموذج المعالج، باستخدام الدالة ip2long في حقل من النوع عدد صحيح.

الآن يمكننا كتابة بعض كود PHP. يتم تعيين الوظيفة الرئيسية للنظام إلى فئة User.class.php، والتي يمكنك رؤيتها أدناه.

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

User.class.php

Class User( // حالة ORM خاصة Private $orm; /** * ابحث عن مستخدم عن طريق الرمز المميز. يتم قبول الرموز المميزة الصالحة فقط للنظر فيها. يتم إنشاء الرمز المميز لمدة 10 دقائق فقط من لحظة إنشائه * @param string $token هذا هو الرمز المميز الذي نبحث عنه * @return User.return قيمة وظيفة المستخدم */ public static function findByToken($token)(/ ابحث عن الرمز المميز في قاعدة البيانات وتأكد من تعيين الطابع الزمني الصحيح $ . result = ORM::for_table("reg_users") ->where ("token", $token) ->where_raw("token_validity > NOW()") ->find_one(); if(!$result)( return false; ) إرجاع مستخدم جديد($result) /** *); تفويض أو تسجيل مستخدم * @param string $email. موجودة بالفعل، قم بإرجاع قيمة وظيفة المستخدم من عنوان البريد الإلكتروني المحدد المخزن في قاعدة البيانات if(User::exists($email))( return new User($email); ) // بخلاف ذلك، قم بإنشاء مستخدم جديد في قاعدة البيانات وإرجاع قيمة وظيفة المستخدم::إنشاء من البريد الإلكتروني المحدد return User::create($email ); ) /** * إنشاء مستخدم جديد وحفظه في قاعدة البيانات * @param string $email. عنوان البريد الإلكتروني للمستخدم * @return User */ إنشاء وظيفة ثابتة خاصة($email)( // اكتب مستخدمًا جديدًا وأرجع نتيجة وظيفة المستخدم من هذه القيم ​​$result = ORM::for_table("reg_users")- >create(); $result->email = $email; $result->save(); return new User($result); المتغير * @param سلسلة البريد الإلكتروني $. عنوان البريد الإلكتروني للمستخدم * @return boolean */ public static function موجود($email)( // هل المستخدم موجود في قاعدة البيانات؟ $result = ORM::for_table("reg_users") ->where("email", $email ) ->count(); return $result == 1) /** * إنشاء كائن مستخدم جديد * @param مثيل $param ORM أو المعرف أو البريد الإلكتروني أو 0 * @return User */ public function __construct($param = null) ( if($param مثيل ORM)( // تم تمرير فحص ORM $this->orm = $param; ) else if(is_string($param))( // تم تمرير فحص البريد الإلكتروني $this->orm = ORM:: for_table ("reg_users") ->where("email", $param) ->find_one() ) else( $id = 0; if(is_numeric($param))( // قيمة المتغير $param $; يتم تمرير المعرف إلى معرف المستخدم = $param; ) else if(isset($_SESSION["loginid"]))( // بخلاف ذلك، راجع الجلسة $id = $_SESSION["loginid"]; ) $this->orm = ORM::for_table( "reg_users") ->where("id", $id) ->find_one() ) /** * إنشاء رمز ترخيص SHA1 جديد، وكتابته في قاعدة البيانات وإرجاع قيمته * @ سلسلة الإرجاع */ public function generatorToken( )(// أنشئ رمزًا مميزًا لمستخدم معتمد واحفظه في قاعدة البيانات $token = sha1($this->email.time().rand(0, 1000000)); // احفظ الرمز المميز في قاعدة البيانات // وقم بوضع علامة عليه بحيث يكون صالحًا لمدة 10 دقائق فقط $this->orm->set("token"، $token); $this->orm->set_expr("token_validity", "ADDTIME(NOW(),"0:10")"); $this->orm->save(); إرجاع رمز $؛ ) /** * تخويل المستخدم * @return void */ تسجيل الدخول إلى الوظيفة العامة())( // تحديد المستخدم كمسجل دخول $_SESSION["loginid"] = $this->orm->id; // تحديث قيمة حقل قاعدة البيانات last_login $this->orm->set_expr("last_login", "NOW()"); $this->orm->save() ) /** * تدمير الجلسة وتسجيل خروج المستخدم * @return void */ public function logout ()( $_SESSION = array(); unset($_SESSION); ) /** * تحقق مما إذا كان المستخدم قد قام بتسجيل الدخول * @return boolean */ public function loggedIn())( return isset($this->orm->id) && $_SESSION["loginid"] == $this->orm->id ) /** * التحقق مما إذا كان المستخدم مسؤولاً * @return boolean */ public function isAdmin())( return $this->rank() = = "administrator"; ) /** * ابحث عن نوع المستخدم، يمكن أن يكون مسؤولاً أو عاديًا * @return string */ public function rank())( if( $this->orm->rank == 1)( return "administrator" "; ) return "regular"; ) /** * الطريقة التي تسمح لك بالحصول على معلومات المستخدم الخاصة كخصائص * لكائن المستخدم * @param سلسلة $key اسم الخاصية التي يمكنها الوصول * @return mix */ public function __get($key)( if(isset($this->orm->$key))( return $this->orm->$ مفتاح؛ ) عودة فارغة؛ ))

يتم إنشاء الرموز المميزة باستخدام خوارزمية SHA1 وتخزينها في قاعدة البيانات. أنا أستخدم وظائف توقيت MySQL لتعيين حد زمني مدته 10 دقائق لصلاحية الرمز المميز.

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

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

بفضل هذا، يصبح من الممكن الوصول إلى المعلومات المخزنة في قاعدة البيانات بفضل الخصائص $user->email، $user->token، وما إلى ذلك. في جزء التعليمات البرمجية التالي، سننظر في كيفية استخدام هذه الفئات كمثال .


الصفحة المحمية

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

وظائف.php

الوظيفة send_email($from, $to, $subject, $message)( // المساعد الذي يرسل البريد الإلكتروني $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type: text /plain charset=utf-8" . "\r\n"; $headers .= "من: ".$from . "\r\n"; return mail($to, $subject, $message, $headers; ); .$_SERVER ["SERVER_NAME"]; if(isset($_SERVER["REQUEST_URI"]) && $_SERVER["REQUEST_URI"] != "")( $url.= $_SERVER["REQUEST_URI"]; ) else( $url = $_SERVER["PATH_INFO"]) return $url function Rate_limit($ip, $limit_hour = 20, $limit_10_min = 10)( // عدد محاولات تسجيل الدخول في الساعة الأخيرة لعنوان IP هذا $count_hour. = ORM: :for_table("reg_login_attempt") ->where("ip", sprintf("%u", ip2long($ip))) ->where_raw("ts > SUBTIME(NOW(),"1:00" )") ->count(); // عدد محاولات تسجيل الدخول في آخر 10 دقائق لعنوان IP هذا $count_10_min = ORM::for_table("reg_login_attempt") ->where("ip", sprintf("%u" , ip2long($ ip))) ->where_raw("ts > SUBTIME(NOW(),"0:10")") ->count(); if($count_hour > $limit_hour || $count_10_min > $limit_10_min)( throw new Exception("عدد كبير جدًا من محاولات تسجيل الدخول!"); ) ) وظيفة Rate_limit_tick($ip, $email)( // إنشاء سجل جديد في الجدول يحسب عدد محاولات تسجيل الدخول $login_attempt = ORM::for_table("reg_login_attempt")->create(); $login_attempt->email = $email; $login_attempt->ip = sprintf("%u", ip2long($ip )); $login_attempt->save()); وظيفة إعادة التوجيه($url)( header("Location: $url");exit;)

المهام حدود التقييمو Rate_limit_tickمراقبة عدد محاولات التفويض خلال الفترة الزمنية المنقضية منذ المحاولة الأولى. يتم تسجيل محاولة تسجيل الدخول في قاعدة البيانات في العمود reg_login_attempt. يتم استدعاء هذه الوظائف عند معالجة بيانات النموذج وإرسالها كما ترون من مقتطف الكود التالي.

الكود أدناه مأخوذ من ملف Index.php ويتعامل مع إرسال النموذج. تقوم بإرجاع استجابة JSON، والتي بدورها تتم معالجتها بواسطة jQuery في ملف الأصول/js/script.js الذي استعرضناه سابقًا.

فهرس.php

Try( if(!empty($_POST) && isset($_SERVER["HTTP_X_REQUESTED_WITH"]))( // إخراج رأس رأس JSON("نوع المحتوى: application/json"); // هل عنوان البريد الإلكتروني هذا صالح إذا (!isset($_POST["email"]) || !filter_var($_POST["email"], FILTER_VALIDATE_EMAIL))( throw new Exception("الرجاء إدخال بريد إلكتروني صالح."); ) // تحقق من تم السماح للمستخدم بتسجيل الدخول، هل تجاوز عدد الاتصالات المسموح بها (ملف function.php لمزيد من المعلومات) Rate_limit($_SERVER["REMOTE_ADDR"]); // تسجيل محاولة التفويض هذه Rate_limit_tick($_SERVER["REMOTE_ADDR"] , $ _POST["email"]); // إرسال بريد إلكتروني إلى المستخدم $message = ""; شكرًا لك على التسجيل!"; $message = "شكرًا لك على التسجيل في موقعنا!\n\n"; ) // محاولة تفويض مستخدم أو تسجيله $user = User::loginOrRegister($_POST[ "email"] ); $message.= "يمكنك تسجيل الدخول من عنوان URL هذا:\n"; $message.= get_page_url()."?tkn=".$user->generateToken()."\n\n"; $message.= "ستنتهي صلاحية الرابط تلقائيًا بعد 10 دقائق."; $result = send_email($fromEmail, $_POST["email"], $subject, $message); if(!$result)( throw new Exception("حدث خطأ أثناء إرسال البريد الإلكتروني الخاص بك. يرجى المحاولة مرة أخرى."); ) die(json_encode(array("message" => "شكرًا لك! لقد أرسلنا رابطًا" إلى صندوق الوارد الخاص بك أيضًا. تحقق من مجلد الرسائل غير المرغوب فيها."))); ) ) Catch(Exception $e)( die(json_encode(array("error"=>1, "message" => $e->getMessage() ))));

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

فهرس.php

if(isset($_GET["tkn"]))( // هل هذا الرمز صالح للترخيص؟ $user = User::findByToken($_GET["tkn"]); if($user)( // نعم , is.is.إعادة التوجيه إلى الصفحة المحمية $user->login(); redirect("protected.php"); ).

$المستخدم->تسجيل الدخول()

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

يتم ترتيب معالجة وظيفة الخروج من النظام بطريقة مماثلة.

فهرس.php

إذا (isset($_GET["logout"]))( $user = new User(); if($user->loggedIn())( $user->logout(); ) إعادة التوجيه("index.php") ؛)

في نهاية الكود، قمت مرة أخرى بتعيين إعادة توجيه إلى ملف Index.php، وبالتالي فإن المعلمة ?تسجيل الخروج=1ليس من الضروري إرسالها عبر URL.

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

فهرس.php

$user = مستخدم جديد(); إذا($user->loggedIn())( إعادة التوجيه("protected.php"); )

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

protected.php

// لحماية كل صفحة على موقعك، قم بتضمين ملف main.php // وقم بإنشاء كائن مستخدم جديد. هذا هو مدى سهولة الأمر! require_once "يتضمن/main.php"; $user = مستخدم جديد(); إذا (!$user->loggedIn())( إعادة التوجيه("index.php"); )

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

صدى "بريدك الإلكتروني: ".$user->email; صدى "رتبتك:".$user->rank();

طريقة رتبة()يتم استخدامها هنا لأن قاعدة البيانات عادة ما تقوم بتخزين أرقام (0 للمستخدم العادي، 1 للمسؤول) ونحتاج إلى تحويل هذه البيانات إلى الحالات التي تنتمي إليها، وهو ما تساعدنا عليه هذه الطريقة.

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

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

لقد انتهينا!

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

تم إعداد المادة بواسطة دينيس ماليشوك خصيصًا للموقع

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

هل أعجبتك المادة وتريد أن تشكرني؟
مجرد مشاركتها مع أصدقائك وزملائك!


آخر تعديل في 23 يوليو، 2019 بواسطة فينسي.

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

يجب أن يكون الأمر بسيطًا قدر الإمكان مع أفضل واجهة مستخدم/تجربة مستخدم. يعد تنفيذ وظيفة تسجيل المستخدم باستخدام PHP مهمة بسيطة وسأرشدك خلال الخطوات مع المثال الموجود في هذه المقالة.

ماذا في الداخل؟ ماذا يوجد في الداخل؟ كيف يعمل مثال تسجيل مستخدم PHP هذا؟

يمكن فصل رمز المثال هذا إلى 3 أجزاء.

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

    أثناء التسجيل، نقوم عمومًا بجمع معلومات المستخدم، المستعد للتسجيل في تطبيقنا. بعضها سيكون إلزاميا وبعضها سيكون اختياريا.

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

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

    هيكل الملف

    نموذج HTML للسماح للمستخدم بالتسجيل

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

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

    PHP نموذج تسجيل المستخدم تسجيل اسم المستخدم