أفضل جروبات التليجرام لتعلم البرمجة وقواعد البيانات والشبكات   موقع W3schools عملاق تعلم البرمجة - كامل بدون أنترنت   العالم ما وراء التقليدي "ميتافيرس" (كتاب باللغة العربية)   كتاب التسويق الإلكترونى Arts Of E-Marketing من الألف إلى الياء   أداة تفعيل وتنشيط جميع أصدارت الويندز وميكروسوفت أوفيس 2022   جميع أصدارات الوندوز والأوفيس بروابط مباشرة من موقعها الأصلي   تعرف على الفرق بين تقنيات HD و FHD و HDR و 4K   كيف تحصل على تفعيل كامل لنظام الويندوز 10 مقابل 7.43$ فقط!   لعبة ببجي (PUBG) للحاسوب متاحة الآن مجاناً   7 خصائص في برنامج Zoog VPN لفك المواقع المحظورة ستعجبك كثيراً   تعرف على Windscribe .. برنامج VPN ومانع إعلانات إحترافي في آن واحد   موبايلك أتسرق وبتتصل بيه مغلق ؟ تجربة حقيقية من مصر ..   سبعة أكاذيب تمنعك من تعلم البرمجة   لو باقة الأنترنت المنزلي مش بتكمل معاك الشهر .. أليك الحل ..   أزاى تبحث فى جوجل صح .. إليك بعض النصائح للبحث   واحده من أكبر عمليات الأختراق الـ حصلت في التاريخ   كتاب إحترف كاميرات المراقبة في 6 ساعات   الفيلم الوثائقى لقصة حياة ستيف جوبز .. مؤسس شركة أبل   الفيلم الوثائقى لقصة حياة مارك زوكربيرج .. مؤسس موقع الفيسبوك   الفيلم الوثائقى لقصة حياة بيل جيتس .. مؤسس شركة ميكروسوفت   مجموعة ضخمة من الخطوط 4000 خط من الخطوط العربية والأنجليزية   ازاي تبقي محترف فـ Cyber Security وانت بتدرس او بتشتغل ؟   أفضل المواقع للمبرمجين - مشاريع مفتوحة المصدر   صور من أول نسخة للويندوز فى التاريخ النسخة v1.0 - v2.0   لو اي حد بيبتزك او بيتحرش بيك اونلاين او بيهددك بصور .. أعمل الصح   التجسس على الشخص من خلال سماعات البلوتوث !! حقيقة   تجربة ويندوز 95 و ويندوز 98 أون لاين .. يلا نرجع أيام الزمن الجميل   عايز تعرف بياناتك أتسرقت ولا ـ لا - موقع على الانترنت يقدملك الاجابة   اليك أكثر من 30 سيرة ذاتية أحترافية بصيغة وورد والتحميل مجاناً   3 خطوات تجعلك أكثر آمنا عند تصفحك للأنترنت .. قم بتطبيقها حالا...   ما هي لغات البرمجة الخاصة ببرمجة الذكاء الإصطناعي ؟   حاتشتغل يعنى حاتشتغل .. أعمل اللى عليك .. وربنا حيرزقك   تجميعة بسيطة لخدع حاسوبية ممكن تصنعها ببرنامج Notpad   أزاى تبقى مبرمج أو مطور برامج محترف فى البرمجة ..   13 جملة ممكن يكونوا السبب إنك ماتعدّيش من الأنترفيو   ما الفرق بين كل من الـ VPN و الـ VPS ؟ و ما تعريف كل واحد منهما ؟   مشاهدة حلقات المسلسل Mr.Robot كاملة | المواسم الأربعة للمسلسل للتحميل   موقع يجعلك تكتب مثل الهاكرز التى فى الأفلام الأمريكية   تحميل مجانى لحقيبة المبرمج Programmer Bag مهداة من موقع أمازون   كتاب فكر كمهندس أطلق عنان أحلامك، كن مختلفاً، واستمتع   خلاصة الخلاصة في الهندسة الجتماعية ( social Engineering )   ما هو ال Keylogger ؟ وكيف تقوم هذه بالتجسس على لوحة مفاتيحك   الكابل البحري الناقل للإنترنت في المحيطات، وما هي سرعة نقل البيانات فيه ؟   ماهو هجوم الفدية او إنتزاع الفدية (Ransomware)   هل تريد أن تصبح هكر ؟ ولماذا ؟ من أين وكيف تبدأ ؟   تريد أن تتعلم البرمجة .. يبقى لازم تعرف من أين تبدأ طريقك للبرمجة   الاختراق المادي Physical hacking   الفرق بين بروتوكول TCP/IP و بروتوكول UDP   ماهي لغة ألف ؟ لغة البرمجة العربية !   ما هو الفرق بين Cyber Security و Information Security   ماذا يجب أن أتعلم لأدخل عالم الروبوتات ، وما هي لغات برمجة الروبوت؟   فحص الروابط وتحليلها للتأكد من سلامتها قبل فتحها بطرق سهلة وبسيطة   تحديد التهديدات ونقاط الضعف المتعلقة بأمن الشبكة   ماهو كود الاستجابة السريعة QR؟ وكيف يعمل؟   كتب ومقرارات وملخصات كلية الحاسبات والمعلومات الفرقة الأولى   كتب ومقرارات وملخصات كلية الحاسبات والمعلومات الفرقة الثانية   كتب ومقرارات وملخصات كلية الحاسبات والمعلومات الفرقة الثالثة   دورة تعليمية لشرح هياكل البيانات والخوارزميات بالصوت والصورة   دورة أنظمة التشغيل Operating Systems Course بالصوت والصورة   تقنية DeepFake خطورتها وآلية عملها وكيف يمكن أكتشاف التزيف !!   إدارة الحضانات التعليمية ورياض الأطفال والمدارس برنامج مجانى   برنامج أدارة المدارس والمعاهد والجامعات مجانى بالتفعيل مدى الحياة   برنامج شؤون الموظفين الذى يقوم بخدمة الموظفين في الشركات والهيئات والمؤسسات   مشروع برمجى كامل لتصميم موقع تواصل إجتماعى + السورس كود   رسم تصميم شجرة برمجياً .. بالعديد من اللغات البرمجية   برنامج مجانى وأحترافى فى إدارة شؤون الموظفين مفتوح المصدر   مشروع برمجى لتصميم موقع متكامل ومتجاوب يدعم كل شاشات العرض Gallery Images   برنامج إدارة شؤون الموظفين لإدارة الموارد البشرية في الشركات والهيئات والمؤسسات   برنامج محاسبى لإداة كاشير المطاعم والكافيهات نسخة مجانية   برنامج لإدارة معامل التحاليل الطبية الحديثة ومفتوح المصدر   كتاب لغة البرمجة الجافا ( الجافا سؤال وجواب )   مجموعة من الكتب التعليمية لتعليم لغة البرمجة الجافا   لعبة الثعبان البسيطة .. الكود بلغة البرمجة الجافا   لعبة بسيطة تشبة الطيور الطائرة .. مع الكود البرمجى للعبة   لعبة البلية بشكل مبسط مع الكود البرمجى للعبة   شرح تصميم واجهة أحترافية بلغة الجافا 102 + الكود وملفات العمل   شرح تصميم واجهة أحترافية بلغة الجافا 103 + الكود وملفات العمل   شرح تصميم واجهة أحترافية بلغة الجافا 104 + الكود وملفات العمل   شرح تصميم واجهة أحترافية بلغة الجافا 101 + الكود وملفات العمل   لغة الجافا ( Java ) اللغة الأشهر من بين كل لغات البرمجة .. تعرف عليها   دورة تعليمية لتعلم ( Jasper Reports ) لأنشاء التقارير بالصوت والصورة   دورة تعليمية لتعلم Jasper iReport لأنشاء التقارير لمطورين الجافا   تصميم وبرمجة برنامج للشات | بلغة الجافا + الكود   طريقة عمل لعبة الثعبان بلغة ++Snake Game in C   مجموعة من أفضل الكتب التعليمية لتعليم لغة البرمجة السى   كتاب لغة البرمجة السى سؤال وجواب   مجموعة من أفضل الكتب التعليمية لتعليم لغة البرمجة ( ++C )   مجموعة أسطوانات تعليمية لتعلم لغة ( ++C ) من البداية وحتى الأحتراف   تحميل كتاب سى شارب #C بعمق   مجموعة من أفضل الكتب لتعليم لغة السى شارب #C   كتاب سبيلك إلى تعلم لغة C#.NET + كتاب برمجة الواجهات   أقوى دورة تعليمية لتعلم لغة السى شارب #C من البداية بالصوت والصورة   برمجة برنامج لأدارة المبيعات #C وقاعدة بيانات SQL Server بالصوت والصورة   تصميم لعبة حرب طائرات بالسي شارب + السورس كود   تصميم برنامج تشفير وفك التشفير بالسي شارب #C + السورس كود   تصميم لعبة الارنب وجمع الجزر بلغة السي شارب + الكود   (00) دورة تعلم لغة البرمجة MQL5 - تعلم MQL5 ( MetaTrader5 )   ورشة عمل برمجة أكسبرت CAP Zone Recovery EA   كتاب المرجع الكامل فى تعلم لغة MQL4   التعرف على MQL5 - لغة برمجة روبوتات التداول من Metaquotes   دورة تعليمية لتعلم لغة XML بالصوت والصورة   10 أسطوانات تعليمية لتعلم لغة الفيجوال بيسك 2008 بالصوت والصورة   دورة تعليمية لبرمجة الواجهات بلغة الفيجوال بيسك بالصوت والصورة   مجموعة من الأسطوانات التعليمية لتعلم ASP.NET من البداية وحتى الأحتراف   دورة تدريبية لبرمجة موقع للتوظيف بتقنية ASP.NET MVC 5 بالصوت والصورة   مجموعة من أفضل الكتب لتعليم لغة Microsoft ( ASP.NET )   دورة تصميم المواقع الالكترونية ( HTML - CSS - PHP - JOOMLA- SEO) باللغة العربية   إنشاء موقع بالإعتماد على إطار العمل الشهير بوتستراب (Bootstrap)   مجموعة من أفضل الكتب لتعليم لغة CSS   كتاب تعلم HTML5 و CSS3 ( الخطوة الأولى نحو البرمجة للويب )   دورة تعليمية لتعلم أطار العمل Bootstrap 4 بالصوت والصورة   كتاب برمجة المتحكمات الدقيقة بلغة التجميع   أقوى دورة تعليمية لتعليم لغة الأسمبلى بالصوت والصورة   مجموعة من أفضل الكتب لتعليم لغة البرمجة أسمبلى   مشروع أدارة منتجات كامل بالجافا سكريبت | Full Product Management System   كورس مجانى للمبتدئين فى مجال البرمجة Javascript باللغة العربية بخط اليد   مشروع أحترافى ساعة رقمية وعقارب + السورس كود   أنشاء تخزين سحابي بسيط | تحميل و رفع الملفات بأستعمال PHP   أنشاء نظام كامل لتسجيل الدخول بـ PHP   مجموعة من أفضل الكتب لتعليم لغة PHPemsp;  دورة تعليمية لتعلم MVC Framework فى لغة PHP بالصوت والصورة   كتاب تعلم Flutter باللغة العربية   مجموعة أفكار مشاريع Flutter لأحتراف التطوير بها   ما هي Dart ؟ و ما هي Flutter ؟   كتاب فك الشيفرات السرية بلغة البايثون   الكود الأول لتصميم وبرمجة روبوت كصديق لك مع القابلية للتعلم بالذكاء الأصطناعى   برمجة سكربت بايثون لفحص البورتات المفتوحة و المغلقة في موقع   تحميل كتاب البرمجة بلغة بايثون   اصنع اداة nmap بنفسك لفحص عناوين الآيبي للمواقع و السيرفرات في لغة بايثون   تعلم بايثون بالكامل في فيديو واحد | كورس بايثون كامل للمبتدئين   كتاب أربعون سؤالاً لمقابلات العمل بلغة بايثون   كتاب تعلم أساسيات الأندرويد بالعربية بأستخدام Android Studio   كتاب ملخص مسار الأندرويد من مبادرة مليون مبرمج عربي   كتاب ببساطة لتعلم تطوير التطبيقات على الأندرويد   7 مكتبات أندرويد لتطوير واجهات تطبيقات الأندرويد بشكل إحترافي بكل سهولة   دورة تعليمية لتعلم برمجة تطبيقات الأندرويد على Xamarin بالصوت والصورة   كورس CS50 كامل باللغة العربية | CS50 Tutorial In Arabic   كتاب مختصر دليل لغات البرمجة   كتاب هندسة البرمجيات العصرية للمبتدئين باللغة العربية   تعلم الخوارزميات وهياكل البيانات فى 300 دقيقة   أهم مقاسات الشاشات اللي تحتاجهم لتصميم صفحات متجاوبة Responsive   كتاب البحر الشاسع لدخول الخوارزميات من بابها الواسع   أفضل الكتب التعليمية الخاصة بأغلب لغات البرمجة مع التمارين والأمثلة   أساسيات البرمجة ونصائح والذى يجب على كل مبرمج معرفتها جيداً   الفرق بين أطار العمل Framework والمكتبة Library ببساطة   مجموعة ضخمة من الأيقونات لمبرمجين تطبيقات سطح المكتب   تحميل برنامج NetBeans IDE 8.2 المحرر العملاق للبرمجة بالجافا   إعداد بيئة الجافا للبرمجة Java Development Kit ( JDK )   الدورة الشاملة في أدارة الشبكات المنزلية والمحلية من الألف إلى الياء باللغة العربية   خطوات حماية الشبكة من الهاكرز (من كواليس المحترفين)   أعداد وأختبار وتأمين بروتوكول SSH   أجهزة التشويش: كيف تعمل أجهزة التشويش على الهواتف النقالة ؟   "قناة 14" الغامضة للواي فاي - لماذا لا يمكنك استخدامها ؟   أكبر مكتبة كتب باللغة العربية لتعلم الشبكات ( 300 كتاب )   كتاب يقدم دورة تعليمية كاملة لـ ( MCITP ) باللغة العربية   مجموعة من أفضل الكتب لدراسة شهادة MCSE   مجموعة من أفضل الكتب لتعلم لغة SQL لإدارة قواعد البيانات   كتاب الشرح الوافى لتعلم لغة SQL من نبعها الصافى   الهندسة العكسية Reverse Engineering   أسطوانة تعليمية لتعلم الهندسة العكسية وكسر حماية البرامج   الأسطوانة الثانية لتعلم الهندسة العكسية وكسر حماية البرامج   كتاب الهندسة العكسية خطوة إلى الأمام   كتاب مدخل إلى الهندسة العكسية   كتاب أوبنتو ببساطة (أبدأ مع نظام أوبنتو لينكس الآن)   كتاب خطوة بخطوة لنحترف GIMP   كتاب ( برمجة وتصميم نظام تشغيل ) أساسيات بناء نظام تشغيل   مقدمة عن الـ Disk Management ( إدارة الهاردسكات )   حل مشكلة تهنيج وثقل هواتف الأندرويد   أكواد سرية في هاتفك تقوم بأشياء مهمة عليك معرفتها   4 ملفات لا يجب أن تحذفها مطلقًا من هاتف أندرويد الخاص بك وإلا ستواجه مشكلات   جرب أنظمة اللينكس كاملة من خلال المتصفح فقط ومن دون أي برامج !   كيف تتجاوز كلمة المرور فى نظام الويندوز بدون فورمات   25 أمر إذا أدخلتها في نافذة ال RUN ستدخل إلى أدوات مهمة ومخفية في حاسوبك   تجربة الإصدارات القديمة من Windows في متصفحك باستخدام المحاكي EmuOS مجانا   كيفية إزالة Internet Explorer بالكامل من نظام التشغيل Windows 10   التعامل مع نظام التشغيل Dos وكيفية برمجة الملفات الدفعية   تحميل ويندوز 10 للأجهزة الضعيفة . أخر تحديثات 2018 . بحجم صغير   حقيبة المصمم لمصممين الفوتوشوب Adobe Photoshop   أداة مجانية وآمنة لتفعيل جميع برامج ادوبى Adobe لجميع الإصدارت - مدى الحياة   دورة تعليمية أحترافية لتعلم برنامج الفوتوشوب Adobe Photoshop CS6   هل تصدق .. قصة حب وراء أختراع برنامج الفوتوشوب ( Photoshop )   أسئلة أمتحانات ICDL | Windows 7 الرخصة الدولية لقيادة الحاسب الآلى   طريقة الدخول على الدارك ويب أو الأنترنت المظلم : إليك الطريقة   روابط الغرفة الحمراء - الغرفة الحمراء   اللى أتعلم Python ومش قادر يكتب Tools تساعده في الـ Penetration Testing   كورس برمجة فيروس الفدية بأستخدام لغة البرمجة بايثون   قائمة أهم اللغات البرمجة التي يجب عليك معرفتها للولوج لعالم الهاكينغ و الإختراق   مكتبة cookiejar وكيفية عمل سكربت و حقنه لتخطي لوحة الادمن في بايثون   أشهر التوزيعات فى مجال أختراق الشبكات   عمل هجوم على بورت مفتوح Telnet بالفيديو على شبكة داخلية   8 أدوات أختراق شبكات الواى فاى على الويندوز   حل مشكلة أنقطاع الشبكة بعد أستخدام airmon-ng   هجمات قومت بيهم على أرض الواقع وصور توضيحية من الهجمة   توضيح الهجوم على الشبكة - رجل في المنتصف MITM   أستغلال الـ Reverse Shell و Reverse Tcp لـكن ماذا يعني هذا ؟!   تثبيت الميتاسبلويت على تطبيق التيرمكس بأسهل الطرق   فيروس جديد بالبايثون لعمل DDOS Attack على النظام ومسح نفسه تلقائى   كتاب الفيروسات نظرة معمقة   صنع فيروس مزعج بأستخدام بايثون وآلية عمل مكافح الفيروسات   فيروس حذف ملفات التسجيل Registry الرئيسية   طريقة صنع فيروس بسيط مدمر للويندوز في ثواني   كيف يمكن ان تكون مثل مستر روبوت MR.Robot ؟   كتاب محترف لأختراق الشبكات اللاسلكية   إخفاء جميع ملفاتك و فيديوهاتك بداخل صورة لا يتجاوز حجمها 10KB بسهولة   كيف تصنع صوتا شبيه بصوت مجموعة أنونيموس Anonymous الشهيرة   ما الفرق بين الـ Vulnerability و الـ Exploit في مجال الإختراق و الحماية ؟   مجموعة من الكتب لأختبار الأختراق والأمن والحماية   كتاب التحليل الجنائي الرقمي   كتاب أختبار أختراق سيرفرات وتطبيقات الويب   كتاب تعلم اساسيات برنامج تيرمكس Termux بالعربي للمبتدئين من الصفر   أختراق أجهزة الـ Android وأختراق الـ WhatsApp بواسطة صورة   طريقة بسيطة جدا لأختراق الواتساب بأستخدام أداة Whatapp Viewer   كيفية عمل روت لأي جهاز يعمل بنظام Android بدون جهاز كمبيوتر   فتح قفل الشاشة لهواتف الأندرويد رمز PIN بن كود | Android Pin Bruteforce Unlock   قائمة لأقوى 10 أدوات إختراق لنظام الـ Kali Linux عليك معرفتها و إحترافها   إليك أزيد من 10 توزيعات لينكس (Linux) الخاصة بإختبار الإختراق   سؤال وجواب حول طرق هكر وأختراق وتهكير الفيسبوك   أفضل 15 طريقة عمل لكيفية اختراق حسابات الفيسبوك Facebook وكيفية حمايته   مصطلحات من مسلسل MR.Robot تعرف عليها الآن   كتاب مقدمة في الأمن السيبراني   كتاب باللغة العربية فى قرصنة الحواسب الآلية وطرق تأمينها Hacking   طرق أختراق الواتس آب وحمايتك من الأختراق   بناء مختبر أختراق للتدرب على أكتشاف الثغرات وأختبار أختراق السيرفرات وتطبيقات الويب   متجر لشراء عتاد ومعدات الإختراق للقرصنة والأمن السيبراني   كتاب Manually Vulnerability Anlaysis in Web Application باللغة العربية   قصة حقيقية للهاكرز من شركة SecureWorks في مؤتمر Black Hat 7 للهاكرز   سيناريو من يوميات الهاكرز .. اقرأ وأستفيد من تفكير الهاكرز   برنامج يستطيع اختراق حساب الفيسبوك ضع الايميل ويخرج لك الباسورد   مشروع تخرج : تقنية مصائد الأختراق لمكافحة جرائم الأنترنت   سيناريو هاكر أكثر من رائع من يوميات مهندس أمن المعلومات   معرفة كلمة مرور الشبكة اللاسلكية Wi-Fi بأستخدام موجه الأوامر CMD   لو بتعمل Ping فى مختبر الأختراق وما وصل للجهاز الأخر .. اليكم الحل   جهازك اصيب بفيروس الفدية .. أليك الحل فى خطوات   تعلم برمجة وصناعة الفيروسات وأختراق وتدمير الأجهزة   برمجة فيرس لأغلاق جهاز الضحية ووضع له كلمة مرور .. لا يستطيع فتح الجهاز بعدها   أساسيات فهم الأختراق والمهارات الأساسية للهاكرز المحترف 
  1. المدير العام

    المدير العام أدارة موقع أكتب كود

    أنشاء نظام كامل لتسجيل الدخول بـ PHP
     
  2. المدير العام

    المدير العام أدارة موقع أكتب كود

    تجهيز بيئة العمل
    تحميل و تجهيز برنامج Xampp
    العمل على الbackend في المواقع نحتاج دائما لما يعرف ب "خادم http " و ذلك لاستقبال الطلبات و معالجتها .
    يمكن تشغيل خادم http على جهازك و ذلك باستخدام برامج مثل XAMPP. الذي يوفر بالاضافة الى خادم http مجموعة خدمات مثل قاعدة بيانات MySql.

    يمكن تحميل البرنامج من الرابط التالي :
    https://www.apachefriends.org/download.html

    بعد التحميل و التثبيت .. ستظهر لكم واجهة مشابهة لهذه بعد التحميل:[​IMG]

    قم بتشغيل خادم الhttp و قاعدة البيانات بالنقر على زر "start".
    للتأكد من كل شيء يعمل , اذهب الى المتصفح و انتقل الى الرابط التالي localhost . المفروض ان تظهر صفحة مشابهة لهذه:
    [​IMG]
    انشاء ملفات المشروع
    لتجهيز المشروع للتجاوب مع الخادم . ملفات المشروع يجب ان تكون على المسار التالي : C:\xampp\htdocs . ستجد هناك مجموعة من الملفات عليك أن تمحوها (او تنقل الملفات الى مكان آخر.) . سنقوم بانشاء ملفات جديدة مناسبة للمشروع الخاص بنا :
    - ملف index.php : و هو الملف الذي سنطلق منه الموقع عند الانتقال الى localhost في المتصفح .
    - ملف style.css : هذا الملف هو الملف الذي سيحمل كود الcss الخاص بنا . يمكنك كتابة كود الCSS في ملف index.php ايضا لكن الأفضل دائما هو التفريق بين الأكواد المختلفة لتحسين المقروئية.
    - مجلد images: للصور.
    - مجلد Auth: في هذا المجلد سننشئ الملفات الخاصة بصفحة تسجيل الدخول و تسجيل الحساب في الخطوات اللاحقة.

    المجموع سيكون :
    [​IMG]

    التأكد أن كل شيئ جاهز
    للتأكد من أن كل شيئ جاهز و فعال: فلنقم بالتعديل على ملف index.php :
    قم بكتابة كود صفحة الhtml بالشكل التالي:
    كود HTML:
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>My website name</title>
        <link rel="stylesheet" href="style.css">
    </head>
    
    <body>
                <h1 class="title" >My website </h1>
                <div class="btn-panel">
                    <a href="/Auth/login.php"> تسجيل الدخول</a>
                    <a href="/Auth/register.php"> حساب جديد</a>
                </div>
    </body>
    
    </html>
    المفروض انك على علم مسبق بلغة الhtml . هذه الصفحة بسيطة كمقدمة للموقع. يمكنكم التعديل على الصفحة لتناسب ذوقكم من خلال التعديل على CSS.
    لاحظ في هذين السطرين:
    كود HTML:
    <a href="/Auth/login.php"> تسجيل الدخول</a>
    <a href="/Auth/register.php"> حساب جديد</a>
    يحمل "href" المسار الخاص بالصفحات التي سننشئها في المجلد Auth , و التي تمثل صفحة تسجيل الدخول و تسجيل الحسابات.

    انتقل للمتصفح الى localhost . المفترض أن تجد التصميم الذي صنعته:
    [​IMG]
    في حال لم يظهر التصميم الخاص بك:
    _تفقد أن برنامج الXampp شغال و خادم apache فعال.
    _تفقد انك وضعت الملفات في المسار الصحيح
    _تفقد أنك حفظت الكود في ملف index.php بعد التعديل عليه .
     
  3. المدير العام

    المدير العام أدارة موقع أكتب كود

    تجهيز قاعدة البيانات
    تجهيز الجداول
    بما ان المعلومات الخاصة بالمستخدم يجب أن تحفظ ، فذلك يجعلنا بحاجة لقاعدة بيانات .
    سنستخدم في هذا المشروع قاعدة بيانات MySql .يوفر Xampp واجهة للتحكم بقاعدة البيانات و هو ما يعرف ب PhpMyAdmin.
    للانتقال لPhpMyadmin عليك تشغيل خادم apache و خادم mysql من على Xampp ثم الانتقال الى الرابط التالي على المتصفح :
    localhost/phpmyadmin

    ستنتقل الى الصفحة التالية :
    [​IMG]
    تذكر : اسم المستخدم الخاص بقاعدة البياتات هو root و كلمة السر فارغة

    سنقوم بانشاء قاعدة بيانات جديدة لمشروعنا و ذلك بـ :
    1-الضغط على New في أعلى القائمة الجانبية .
    2-في الحقل 'Database name' سندخل اسم قاعدة البيانات ، فليكن : Mywebsite.
    3-ثم اضغط على Create .
    [​IMG]

    ستنقل الى صفحة انشاء الجداول :
    في حقل Name : قم بادخال اسم الجدول : فليكن users .
    في Number of columns قم بادخال 5 و ذلك يعني خمسة أعمدة نحن بحاجة لعمود لرقم المستخدم ،عمود لإسم ، عمود للبريد الالكتروني ، عمود لكلمة السر و عمود لتاريخ انشاء الحساب .
    [​IMG]
    ستظهر صفحة بها حقول إملأها بالشكل التالي :
    [​IMG]
    حيث عمود:
    -رقم المستخدم : "id" قيمته قيمة عددية INT، و بما ان رقم المستخدم يجب ان لا يتكرر فهو unique.
    -الإسم :"username" قيمته نصية و طول القيمة لا يتجاوز 55 حرف .
    -البريد الالكتروني:"email" و هو قيمة نصية طبعا لا تتجاوز 55 حرف.
    -كلمة السر : "password" قيمة نصية أيضا .
    -وقت انشاء الحساب : "create_date" قيمته Timestamp مما يعني"تاريخ" و قيمته القياسية التي يبدأ (default value) بها هي تاريخ اليوم Current_TimeStamp.

    بعدها اضغط على save .

    انشاء كود الاتصال ب PHP
    بعد انشاء قاعدة البيانات ، يجب ربط موقعك بها و ذلك باستخدام كود PHP . توفر PHP طريقتين للاتصال بقاعدة البيانات Mysql , اما عن طريق MySqli او او عن طريق PDO. كلتا الطريقتين فعالتين و لكننا سنستخدم PDO كونها الطريقة الأنسب لمعاينة و معالجة الأخطاء .
    قم بانشاء ملف جديد اسمه Connect.php ثم قم بكتابة الكود الآتي :
    كود PHP:
    <?php

    $servername 
    "localhost";
    $username "root";
    $password "";
    $conn null;
    try {
        
    $conn = new PDO("mysql:host=$servername;dbname=mywebsite"$username$password);
        
    $conn->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);

        echo 
    "تم الاتصال بقاعدة البيانات";
    } catch (
    PDOException $e) {
        echo 
    "فشل الاتصال : <br> " $e->getMessage();
    }
    في الأسطر الأولى قمنا بتعيين المتغيرات التي نحتاجها لانشاء الاتصال بالقاعدة و هي :
    1. servername: و يعني عنوان الخادم الذي يحمل قاعدة البيانات .
    2. username: اسم المستخدم الخاص بقاعدة البيانات
    3. password: كلمة السر الخاصة بقاعدة البيانات .
    4. conn: يمثل هذا المتغير الاتصال بقاعدة البيانات . سنحتاجه لاحقا لاجراء عمليات على القاعدة أيضا .
    في هذا السطر :
    كود:
    $conn = new PDO("mysql:host=$servername;dbname=mywebsite", $username, $password);
    انشأنا اتصال باستعمال PDO .
    "لاحظ وضعنا قيمة dbname هي اسم قاعدة البيانات الذي أنشأناها سابقا ."

    هذا السطر :
    كود:
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    هو المسؤول عن ارسالارسال الارسال الأخطاء حيث تأخذ الدالة setAttribute براميترين هما :
    • PDO::ATTR_ERRMODE : ضروري لاظهار الأخطاء.
    • PDO::ERRMODE_EXCEPTION: و ذلك لارسال الأخطاء على شكل Exceptions يمكننا معالجتها ب : try/catch.
    سيقوم الكود بطباعة "تم الاتصال بقاعدة البيانات" في حال عمل كل شيئ بسلاسة .
    و طباعة : "فشل الاتصال" في حال حصول خطأ.

    لتشغيل الكود أنتقل الى الرابط التالي في المتصفح
    كود:
     localhost/Connect.php
    لاحظ :السبب وراء كتابة كود الاتصال بقاعدة البيانات منفصل هو لتجنب كتابة نفس الكود كل مرة .
    ستتعرف على الفائدة في الخطوات القادمة
     
  4. المدير العام

    المدير العام أدارة موقع أكتب كود

    انشاء صفحة تسجيل الحسابات
    انشاء حقول المدخلات
    اولا سنقوم بانشاء صفحة لتسجيل الحسابات الجديدة.فلتقم بانشاء داخل مجلد Auth الذي أنشأناه سابقا ملف اسمه register.php و الذي يمثل صفحة تسجيل الحسابات .
    الخطوة الأولى في انشاء اي صفحة ويب هي ضبط html الخاص بها.
    مانحتاجه في هذه الصفحة هو مجموعة من الحقول ليسجل فيها المستخدم معلوماته
    و هي :
    • حقل للاسم
    • حقل للبريد الالكتروني
    • حقل لتأكيد البريد الالكتروني
    • حقل لكلمة السر
    • حقل لتأكيد كلمة السر
    • بالاضافة لزر لتأكيد التسجيل .
    كود HTML:
    <!DOCTYPE html>
    <html dir="rtl">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="../style.css">
        <title>Register</title>
    </head>
    
    <body>
        <form class="registerform" action="/Auth/register.php" method="post">
            <h1>انشاء حساب جديد</h1>
            <table>
                <tr>
                    <td>الاسم</td>
                    <td><input type="text" name="username" id="" required></td>
                </tr>
                <tr>
                    <td>البريد الالكتروني</td>
                    <td><input type="email" name="email" id="" required></td>
                </tr>
                <tr>
                    <td>تأكيد البريد الالكتروني</td>
                    <td><input type="email" name="confirm_email" id="" required></td>
                </tr>
                <tr>
                    <td>كلمة السر</td>
                    <td><input type="text" name="password" id="" required></td>
                </tr>
                <tr>
                    <td>تأكيد كلمة السر</td>
                    <td><input type="text" name="confirm_password" id="" required></td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit" value="تسجيل"></td>
                </tr>
            </table>
        </form>
    </body>
    
    </html>
    للتنسيق استعملنا وسم <table> و ذلك لكي تظهر الحقول متراصة .
    لاحظ اننا كتبنا الكود الخاص بالحقول داخل وسم <form> . يستعمل هذا الوسم لارسال بيانات الحقول التي بداخله الى كود الـ php ( اي ارسال البيانات الى الخادم لمعالجتها.
    لاحظ وجود داخل وسم input الخاص بالحقول الخاصية name . هي جد مهمة لتعريف البيانات و سنتطرق لها لاحقا في كود الphp.
    لاحظ ايضا ان بعض الوسوم أعطينا لها قيم للclass وذلك لتنسيقها بالـ CSS فيما بعد.

    ستكون النتيجة من الشكل :
    [​IMG]
    التنسيق باستعمال CSS
    قبل البدأ بضبط الـ backend في الصفحة . فلنقم ببعض التعديلات :
    -يجب ربط ملف ال style.css بالصفحة وذلك من خلال السطر التالي في الكود
    كود HTML:
    <link rel="stylesheet" href="../style.css">
    سنظيف بعض التعديلات على ملف style.css و ذلك لتنسيق الحقول :
    كود:
    .registerform {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        padding: 70px 25px;
        max-width: fit-content;
        margin: 0 auto 0 auto;
        color: white;
        background: #ff000060;
        box-shadow: rgba(0, 0, 0, 0.274) 0px 0px 80px;
        border-radius: 25px;
        font-weight: bolder;
    }
    
    .registerform h1 {
        text-shadow: black 20px 0px 40px;
    }
    
    .registerform input {
        color: white;
        background: rgba(255, 252, 95, 0.2);
        border: none;
        padding: 5px 25px 5px 25px;
    }
    لن نتكلم مطولا عن كود الـ css كوننا مهتمين بالـ backend اكثر . اذا كنت مهتما بتعلم الـ css تفقد منتديات أكتب كود لتجد مايهمك

    النتيجة:
    [​IMG]
     
  5. المدير العام

    المدير العام أدارة موقع أكتب كود

    حفظ الحساب في قاعدة البيانات و تسجيل الدخول
    قبل حفظ البيانات , علينا فلترة البيانات التي تمر الى القاعدة و تصفية الطلبات الصحيحة من الضارة.

    لقيام بارسال البيانات المكتوبة في حقول الHTML , علينا وضعها داخل وسم form . حيث علينا :
    تحديد طريقة الطلب : وذلك من خلال كتابة الطريقة التي نريدها داخل method . سنستعمل طريقة post ( التي تعني بشكل مختصر لا تظهر البيانات في الرابط على عكس get التي تقوم باظهار البيانات المرسلة في الطلب داخل الرابط ).
    تحديد الصفحة التي ستعالج البيانات : و ذلك بكتابة رابط الصفحة داخل action . نحن سنكتب الكود الذي يعالج البيانات المستقبلة بنفس الصفحة لذلك سنضع رابط الصفحة :
    كود:
    action="/Auth/register.php"
    او يمكن كتابة نقطة
    كود:
    action="."
    سيكون وسم الform بهذا الشكل :
    كود:
    <form class="registerform" action="/Auth/register.php" method="post">
    لا تنسى اغلاق الform طبعا . يجب أن يحتوي على جميع الحقول المطلوبة بالاضافة الى زر submit.

    سنبدأ الآن بكتابة كود الphp . يستحسن كتابته قبل كود الhtml اي قبل وسم <html> .
    اولا سنقوم بالاتصال بقاعدة البيانات . و ذلك بتضمين صفحة Connect.php التي تحتوي على كود الاتصال . ثم نقوم بانشاء متغير و نسميه errors . وذلك لارسال الأخطاء الموجودة بالطلب عم طريقه ....

    قبل حفظ البيانات, يجب التأكد من وجود كافة البيانات في الطلب (request) . بما أننا استخدمنا طريقة post فاننا سنجد البيانات المخزنة في متغير $_POST ( تعرف هذه المتغيرات في لغة php ب super global variables اذا كنت مهتم بالبحث عنها ) .
    للتأكد من أن البيانات كاملة ببساطة نستعمل isset :
    كود PHP:
    $is_request_full = isset($_POST["username"]) && isset($_POST["email"]) && isset($_POST["confirm_email"]) && isset($_POST["password"])
    اذا فقد أحد البيانات يعني الطلب ناقص , في تلك الحالة سنضع الخطأ في $errors لطباعته لاحقا .
    كود PHP:
    if ($is_request_full)
    {
    // هنا سنكتب الكود الخاص باذا كان الطلب كاملا
    }
    else {
        
    $errors "تأكد من الحقول قبل التسجيل";
    }
    اذا كانت كل البيانات محددة يعني الطلب صحيح , اذا ننتقل للخطوة التالية :
    علينا التأكد أيضا ان حقل كلمة المرور و حقل تأكيد كلمة المرور متطابقان كذلك بالنسبة لحقول البريد و تأكيد البريد . و تجهيز رسالة الخطأ لطباعتها لاحقا اذا لم تكن الحقول متطابقة
    لاحظ :
    [email , confirm_email , password,confirm_password] هي الأسماء التي ربطنها بالحقول (input) من خلال name

    كود PHP:
    if ($_POST["email"] == $_POST["confirm_email"] && $_POST["password"] == $_POST["confirm_password"]) {

    // هنا سنكتب الكود اذا كانت الحقول متطابقة كما نريد
     
    }
    else if (
    $_POST["email"] != $_POST["confirm_email"]) {
    // اذا كان البريد لا يتطابق في الحقلين
            
    $errors .= "<div>البريد الالكتروني لا يتطابق في الحقلين</div>";
     }
    else if (
    $_POST["password"] != $_POST["confirm_password"]) {
    // اذا كانت كلمة المرور لا تتطابق في الحقلين
            
    $errors .= "<div>كلمة المرور لا تتطابق في الحقلين</div>";
    }
    عد التأكد ان الحقول متطابقة ، سنبدأ بتأمين البيانات لتخزينها في قاعدة البيانات . اولا سنستعمل دالة htmlspecialchars للحماية من هجمات الXSS. تقوم هذه الدالة بتأمين البيانات من أكواد HTML الخبيثة.
    لاتقلق ، لاتزال html غير كافية لقرصنة NASA . ابحث عن ثغرة الXSS لتفهم أكثر .

    نحتاج أيضا الى رقم تعريفي للمستخدم . لإنشائه سنقوم باستعمال دالتين في php و هما :
    • uniqid: و المستعملة لانشاء سلسلة من الرموز العشوائية.
    • hexdec : و التي سنستعملها لتحويل الحروف في السلسلة الى ارقام و بالتالي يصبح الرقم التعرفي مكون من أرقام فقط.
    كود PHP:
    $id hexdec(uniqid());// الرقم التعريفي

    $username htmlspecialchars($_POST["username"]);
    $email htmlspecialchars($_POST["email"]);
    $pass =  htmlspecialchars($_POST["password"]);


    بعد تأمين البيانات , سنتأكد ان البريد الالكتروني غير مستعمل وذلك بالتحقق أنه غير موجود في قاعدة البيانات .
    من خلال الكود التالي:
    كود PHP:
    $is_already_registered $conn->query("select * from users where email='$email'")->fetch();
    تذكر لقد قمنا بانشاء المتغير $conn في Connect.php . و هو عبارة عن PDO Object.
    يجب أن نجهز الخطأ في حالة وجود البريد الالكتروني :
    كود PHP:
    if (!$is_already_registered) {
    // اذا لم يكن البريد الالكتروني متواجدا في قاعدة البيانات
    //سنكتب كود تسجيل الحساب هنا
    }
    else {
         
    $errors "البريد الالكتروني مستعمل";
    }
    بعد التأكد أن البريد غير مستعمل , سنقوم بتجهيز طلب الsql لتخزين بيانات الحساب :
    كود PHP:
    $query =  $conn->prepare("INSERT INTO `users`(`id`,`username`, `email`, `password`) VALUES (?,?,?,?)");
    حيث : علامة الاستفهام تمثل البيانات التي نريد تمريرها وهذه الخاصية توفرها طريقة الpdo و تسمح لنا بتمرير البيانات بشكل أوضح من اثناء التنفيذ. وذلك من خلال الكود التالي:
    كود PHP:
    $query->execute(array($id$username$emailsha1($pass)));
    حيث عناصر المصفوفة تمثل علامات الاستفهام في الكود أعلاه.
    لاحظ اننا استخدمنا sha1 . و هي دالة لتشفير كلمة المرور قبل حفظها و ذلك لحمايتها حتى بعد الحفظ .

    بعد حفظ البيانات سنقوم بفتح جلسة و تسجيل الرقم التعريفي للمستخدم فيها :
    كود PHP:
    session_start();
    $_SESSION['user_id'] = $id;
    وجود الرقم التعريفي في بيانات الجلسة يعني ان المستخدم قد سجل الدخول مسبقا

    ثم نعود للصفحة الرئيسية باستعمال الكود الأتي:
    كود PHP:
    header('Location: /');
    سيصبح الكود الكامل من هذا الشكل:
    كود PHP:
    <?php
    include("../Connect.php");
    $errors '';

    $is_request_full = isset($_POST["username"]) && isset($_POST["email"]) && isset($_POST["confirm_email"]) &&
     isset(
    $_POST["password"]) && isset($_POST["confirm_password"]);

    if (
    $is_request_full) {

        if (
    $_POST["email"] == $_POST["confirm_email"] && $_POST["password"] == $_POST["confirm_password"]) {

            
    $id hexdec(uniqid());
            
    $username htmlspecialchars($_POST["username"]);
            
    $email htmlspecialchars($_POST["email"]);
            
    $pass =  htmlspecialchars($_POST["password"]);

            try {

                
    $is_already_registered $conn->query("select * from users where email='$email'")->fetch();


                if (!
    $is_already_registered) {
                    
    $query =  $conn->prepare("INSERT INTO `users`(`id`,`username`, `email`, `password`) VALUES (?,?,?,?)");
                    
    $query->execute(array($id$username$emailsha1($pass)));
                    
    session_start();
                    
    $_SESSION['user_id'] = $id;
                    
    header('Location: /');
                } else {
                    
    $errors "البريد الالكتروني مستعمل";
                }
            } catch (
    Exception $e) {
                
    $errors "حدث خطأ اثناء الاتصال" $e;
            }
        } else if (
    $_POST["email"] != $_POST["confirm_email"]) {

            
    $errors .= "<div>البريد الالكتروني لا يتطابق في الحقلين</div>";
        } else if (
    $_POST["password"] != $_POST["confirm_password"]) {

            
    $errors .= "<div>كلمة المرور لا تتطابق في الحقلين</div>";
        }
    } else {
        
    $errors "تأكد من الحقول قبل التسجيل";
    }

    ?>
    الآن علينا طباعة الأخطاء للمستخدم في حال وجودها .
    بما أننا أنشأنا متغير $errors سابقا فكل ما علينا هو طباعته في صفحة الhtml حينما لا يكون فارغا . وذلك من خلال الكود الآتي:
    كود HTML:
    <div><?php echo $errors ?></div>
    فلتكتبه مثلا بعد وسم ال h1 . و بذلك يصبح كود الصفحة:
    كود PHP:
    <?php
    include("../Connect.php");
    $errors '';

    $is_request_full = isset($_POST["username"]) && isset($_POST["email"]) && isset($_POST["confirm_email"]) && isset($_POST["password"])
        && isset(
    $_POST["confirm_password"]);

    if (
    $is_request_full) {

        if (
    $_POST["email"] == $_POST["confirm_email"] && $_POST["password"] == $_POST["confirm_password"]) {

            
    $id hexdec(uniqid());
            
    $username htmlspecialchars($_POST["username"]);
            
    $email htmlspecialchars($_POST["email"]);
            
    $pass =  htmlspecialchars($_POST["password"]);

            try {

                
    $is_already_registered $conn->query("select * from users where email='$email'")->fetch();


                if (!
    $is_already_registered) {
                    
    $query =  $conn->prepare("INSERT INTO `users`(`id`,`username`, `email`, `password`) VALUES (?,?,?,?)");
                    
    $query->execute(array($id$username$emailsha1($pass)));
                    
    session_start();
                    
    $_SESSION['user_id'] = $id;
                    
    header('Location: /');
                } else {
                    
    $errors "البريد الالكتروني مستعمل";
                }
            } catch (
    Exception $e) {
                
    $errors "حدث خطأ اثناء الاتصال" $e;
            }
        } else if (
    $_POST["email"] != $_POST["confirm_email"]) {

            
    $errors .= "<div>البريد الالكتروني لا يتطابق في الحقلين</div>";
        } else if (
    $_POST["password"] != $_POST["confirm_password"]) {

            
    $errors .= "<div>كلمة المرور لا تتطابق في الحقلين</div>";
        }
    } else {
        
    $errors "تأكد من الحقول قبل التسجيل";
    }




    ?>


    <!DOCTYPE html>
    <html dir="rtl">

    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="../style.css">
        <title>Register</title>
    </head>

    <body>
        <form class="registerform" action="/Auth/register.php" method="post">
            <h1>انشاء حساب جديد</h1>
            <div><?php echo $errors ?></div>
            <table>
                <tr>
                    <td>الاسم</td>
                    <td><input type="text" name="username" id="" required></td>
                </tr>
                <tr>
                    <td>البريد الالكتروني</td>
                    <td><input type="email" name="email" id="" required></td>
                </tr>
                <tr>
                    <td>تأكيد البريد الالكتروني</td>
                    <td><input type="email" name="confirm_email" id="" required></td>
                </tr>
                <tr>
                    <td>كلمة السر</td>
                    <td><input type="text" name="password" id="" required></td>
                </tr>
                <tr>
                    <td>تأكيد كلمة السر</td>
                    <td><input type="text" name="confirm_password" id="" required></td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit" value="تسجيل"></td>
                </tr>
            </table>
        </form>
    </body>

    </html>
     
  6. المدير العام

    المدير العام أدارة موقع أكتب كود

    انشاء صفحة تسجيل الدخول
    انشاء الحقول اللازمة باستعمال html
    بنفس الطريقة السابقة سنقوم بانشاء صفحة جديدة داخل مجلد Auth و ليكن اسمها login.php.
    هذه الصفحة ستحتوي على حقلين :
    • حقل للبريد الالكتروني
    • حقل لكلمة المرور
    و زر لتسجيل الدخول.
    كود HTML:
    <!DOCTYPE html>
    <html dir="rtl">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="../style.css">
        <title>Login</title>
    </head>
    
    <body>
        <form class="registerform" action="/Auth/login.php" method="post">
            <h1>تسجيل الدخول</h1>
            <table>
    
                <tr>
                    <td>البريد الالكتروني</td>
                    <td><input type="email" name="email" id="" required></td>
                </tr>
    
                <tr>
                    <td>كلمة السر</td>
                    <td><input type="password" name="password" id="" required></td>
                </tr>
    
                <tr>
                    <td></td>
                    <td><input type="submit" value="تسجيل"></td>
                </tr>
            </table>
        </form>
    </body>
    
    </html>
    لاحظ أننا غيرنا الـaction في وسم form الى /Auth/login.php

    [​IMG]
     
  7. المدير العام

    المدير العام أدارة موقع أكتب كود

    التأكد من تسجيل الدخول باستعمال PHP
    بعد تحضير صفحة الhtml التي ستظهر للمستخدم , سنقوم لتجهيز الbackend.
    أولا يجب أن ننشئ اتصالا بقاعدة البيانات و ذلك (كما في المرة السابقة) لتضمين الكود الموجود في Connect.php عن طريق include .
    ثم سنقوم بتشغيل جلسة . طبعا الجلسة ستكون فارغة لا تحتوي معلومات عن الحساب.
    (جلسة فارغة = لم يتم تسجيل الدخول . جلسة تحتوي على رقم الحساب التعريفي = تم تسجيل الدخول)
    سننشئ متغير لحفظ الأخطاء كما في السابق : $errors

    ثم سنتأكد أن الطلب كامل كما في الصفحة السابقة:
    كود PHP:
    $is_request_full = isset($_POST["email"]) && isset($_POST["password"]);
    اذا شعرت بصعوبة في الفهم فأنصح بالعودة للخطوة السابقة (انشاء صفحة تسجيل الحسابات) و محاولة فهم التفاصيل.

    اذا كان الطلب صحيحا و كاملا أذا سنقوم بتجهيز المعلومات و تأمينها :
    كود PHP:
    $email htmlspecialchars($_POST["email"]);
    $password htmlspecialchars($_POST["password"]);
    بعد تجهيز المعلومات سنقوم بالبحث في قاعدة البيانات عن السطر الذي يحتولي على البريد الالكتروني و كلمة المرور. ولذلك سننشئ طلب sql و نستخدم فيه where لتحديد شرطنا.
    كود PHP:
    $query $conn->prepare("SELECT * FROM users WHERE email=? and password=?");
    بعد تجهيز الطلب سنمرر المعلومات (التي ستوضع مكان علامات الاستفهام في الطلب) و هي البريد الالكتروني ($email) و كلمة المرور مشفرة (لأن كلمة المرور المخزنة في قاعدة البيانات مشفرة ) حيث سنستخدم دالة sha1 لتتشفير . و ذلك كالآتي:
    كود PHP:
    $query->execute(array($emailsha1($password)));
    بعد تنفيذ الطلب . يجب أن نتحقق من وجود سطر (يعني حساب مخزن في قاعدة البيانات) بنفس البريد و كلمة المرور. حيث اذا كان طلبنا فيه أسطر فهذا يعني أن البريد و كلمة المرور متطابقان و يوجد حساب يستعملهما . و اذا كان الطلب فارغا فهذا يعني أن المعلومات خاطئة .
    لتأكد من المعلومات. سنستعمل fetch() حيث تتحقق هذه الدالة من أول سطر موجود في الطلب . اذا لم تكن توجد هناك أسطر فسترجع لنا false او 0 .
    كود PHP:
    if ($res $query->fetch()) {
            
    $_SESSION["user_id"] = $res["id"];
            
    header('Location: /');
        } else {
            
    $errors "المعلومات التي ادخلتها خاطئة";
        }
    اذا وجدت سطر فسنقوم بتخزينه في res.
    ستكون res مصفوفة تحتوي على جميع الأعمدة الخاصة بالجدول users . للحصول على الرقم التعريفي يمكن تحصيله ب res["id"]$
    طبعا علينا تخزين الرقم التعريفي في الجلسة لتأكيد تسجيل الدخول ثم العودة للصفحة الرئيسية .

    كود PHP:
    <?php
    include("../Connect.php");
    session_start();
    $errors '';

    $is_request_full = isset($_POST["email"]) && isset($_POST["password"]);

    if (
    $is_request_full) {
        
    $email htmlspecialchars($_POST["email"]);
        
    $password htmlspecialchars($_POST["password"]);
        
    $query $conn->prepare("SELECT * FROM users WHERE email=? and password=?");
        
    $query->execute(array($emailsha1($password)));
        if (
    $res $query->fetch()) {
            
    $_SESSION["user_id"] = $res["id"];
            
    header('Location: /');
        } else {
            
    $errors "المعلومات التي ادخلتها خاطئة";
        }
    }
    ?>
     
جاري تحميل الصفحة...