السلام عليكم والصلاة والسلام على سيدنا وحبيبنا محمد
النهاردة ياشباب جايلكم ببلاجين اسمها Single Device Login (يعني تسجيل الدخول من جهاز واحد)، بلاجين فكرتها بسيطة جدا آلا وهي انها تخلي الشخص اللي بيسجل دخول على موقعك أول مرة يتربط متصفحه بموقعك وميقدش يسجل دخول تاني غير من نفس المتصفح إلا لو أنت كأدمن سمحت له بإنه يسجل من متصفح تاني
اللي يعرفني كويس عارف إني بالفعل مبرمج بلاجين اسمها WP Device Restriction وبيتم بيعها على موقع شركتنا الرسمي LAYERS فأكيد هتستغربوا طيب ايه الفرق بين البلاجين اللي عندكم في الشركة ياباشمهندس وبين البلاجين الجديدة دي؟
بص ياسيدي ببساطة البلاجين اللي بنبيعها عندنا في الشركة معقدة شوية وفيها أوبشنز كتير زي مثلا إنك ممكن تخلي قفل الحساب بواسطة الip أو نوع الجهاز سواء موبايل أو ديسكتوب أو تابلت أو مثلا ممكن تقفله بنوع السيستم اللي على الجهاز سواء ويندوز أو ماك وإصدار السيستم ده وكمان تقدر تقفله بنوع البراوزر وإصداره وهكذا.. وطبعًا تقدر تحدد أكتر من حاجة مع بعض بحيث كل مرة المستخدم يجي يسجل دخول يراجع على كل الحاجات دي قبل ما يخليه يسجل.. وكمان تقدر تحدد عدد أجهزة يصل ل5 أجهزة لكل مستخدم.. ده غير أنه بيحفظ بيانات كل جهاز داخل حساب كل مستخدم علشان انت كأدمن تقدر تشوف الاجهزة اللي المستخدم الحالي مسجل عليها كلها.. شوف الصورتين دول وانت هتفهم كلامي:


ولكن البلاجين اللي جايبهلكم النهاردة اللي بدأت بيها كلامي Single Device Login هي بلاجين بسيطة جدا ومفيش فيها كل الأوبشنز دي.. لما أبدأ أشرح فكرتها انت هتستوعب الفرق بينها وبين البلاجين اللي بنبيعها في الشركة، بس قبل ما ابدأ اشرح فكرة بلاجين النهاردة عايزك تشوف الفيديو ده اللي بيشرح طريقة عمل بلاجين WP Device Restriction اللي بنبيعها عندنا في الشركة علشان لما ابدأ اشرح بلاجين النهاردة تكون فاهم الفرق بين الاتنين، الفيديو على جروب فيس بوك (هتحتاج تنضم للجروب الأول علشان تقدر تشاهد الفيديو)، اتفضل اللينك
https://fb.watch/wzQGxYlF_W
طيب بسم الله نبدأ في فكرة تنفيذ بلاجين Single Device Login (النهاردة الموضوع هيبقى مجرد فكرة وليس شرح بالكود) وفي الأخر هسيب لينك البلاجين لو حابب تستخدمها مجانًا
الفكرة ببساطة ياعزيزي إننا محتاجين حاجة معينة نحفظها في متصفح المستخدم لما يسجل الدخول أول مرة على الموقع وفي نفس الوقت نحفظ منها نسخة في الداتابيز عندنا وتكون مرتبطة بحساب المستخدم نفسه، الحاجة دي ممكن تكون سيريال نمبر أو مجموعة حروف على أرقام تكون مش مفهومة وغير متوقعة.. باختصار في مجال البرمجة بنسميها Hash أو الهاش وهي إننا بنقوم بتشفير بيانات معينة لحتى تكون غير مفهومة لأرقام وحروف كثيرة على سبيل المثال إذا قمنا بتشفير كلمة Mohamed Ali بنوع SHA256 ستتحول إلى 94b5883d75703a893b99c30795201b221009123a4cd7406eddcaecca369f144a
(طبعا فيه أنواع كثيرة أخرى للتشفير غير SHA256)
تقدر تجرب هذا الموقع في إنك تحول أي نص عادي إلى هاش من نوع SHA256، تفضل اللينك
https://emn178.github.io/online-tools/sha256.html
طيب الجميل فين في الموضوع ده؟ الجميل إن PHP عنده فنكشن جاهزة اسمها hash()
تقدر من خلال هذه الفنكشن انك تعمل تشفير لداتا معينة.. احنا في حالتنا دي محتاجين هاش عشوائي أو Random يعني مش محتاجين نشفر بيانات بعينها فأنا هنا استخدمت فنشكن تانية في PHP اسمها mt_rand()
ودي بتعمل Generate لأرقام كثيرة عشوائية يعني كأني باختصار الشخص لما يدخل عندي أول مرة الموقع انشئ له رقم عشوائي وليكن 837456488 وبعدين أخد الأرقام دي كلها واطبق عليها نظام الهاش SHA256 فهتكون النتيجة انها هيكون بالشكل ده 28f9205f5408c8268248ffefc3ca64f310cd111d7906c3c4f06f3997cc59e3b0
وطبعا تقدر تجرب بنفسك من الموقع اللي سيبت اللينك بتاعه فوق..
طيب عملت الهاش اعمل ايه بعد كده؟
ببساطة محتاج تحفظ الهاش ده عنده في البراوزر بتاعه في الكوكيز أثناء ماهو بيسجل دخول.. والجميل في الموضوع ده أن PHP برضه بتوفرلك فنكشن بتحفظ أي حاجة انت عايزها في الكوكيز في متصفح المستخدم الفنكشن دي اسمها setcookie()
وكمان طبعا هحفظ نسخة في الداتابيز عندنا في موقعنا في جدول الuser_meta وطبعا انتوا اكيد عارفين ان الuser_meta مربوط بجدول الusers عن طريق رقم معرف المتسخدم user_id يعني باختصار لما سجلت نفس الهاش ده في الداتابيز سجلته أنه مرتبط بالمستخدم اللي الid بتاعه رقمه كذا.
بعد كده هنعمل فنكشن تانية مهمتها أنها كل مرة يجي المستخدم يسجل دخول على الموقع يتم التحقق إذا كان الهاش اللي تم حفظه في جهاز المتسخدم ده متطابق مع الهاش اللي محفوظ في الداتابيز عندنا ولا لاء وإذا كان موجود اصلا في الداتابيز ولا لاء..
ركز معايا.. يعني هنعمل تحقق من حاجتين كل مرة يسجل فيها الدخول:
- هل المستخدم ده محفوظ له هاش اصلا في الداتابيز عندنا؟
- هل لو الهاش ده موجود في الداتابيز بالفعل هو نفسه اللي عنده في البراوزر؟
طيب ايه نتائج الحالات دي؟ أولا ان يكون مفيش هاش متسجل اساسا للمستخدم ده في الداتابيز عندنا وساعتها هيخليه يسجل دخول عادي جدا بدون مشكلة وهيسجله هاش جديد في الداتابيز.. طيب ثانيا لو فيه هاش في الداتابيز؟ هنا بيبدأ ياخد الهاش اللي عنده في الكوكيز ويقارنه باللي عندنا في الداتابيز لو لقاهم زي بعض بيخليه يسجل دخول بنجاح طيب لو لقاهم مش زي بعض أو لقى ان الكوكيز عند المستخدم في البراوزر مش موجودة اصلا؟ بيمنع تسجيل الدخول وبيقوله رسالة محددة انت بتكتبها بنفسك..
بس كده خلصنا؟ لا طبعا افرض المستخدم ده حصل عنده مشكلة ما ومحتاج انه يفك ربطة الحساب دي علشان يعيد التسجيل من الاول زي مثلا ان طالب جهازه باظ أو حابب يفتح من موبايله بدل من الايباد أو لأي ظرف تاني وارد جدا ممكن يحصل؟
ساعتها يجي دور بقى ال Reset Hash أو اعادة ضبط الهاش أو بمعنى اصح حذف الهاش من الداتابيز للمستخدم الحالي.. وهنا بقى بنعمل فنكشن بسيطة جدا مهمتها انها تضيف زر جديد اسمه Reset Hash وبنظهر الزر ده في صفحة المستخدم في الادمن داشبورد الخاص بووردبريس.. يعني من قائمة Users هتلاقي كل المستخدمين تختار واحد فيهم وتضغط عليه هيفتحلك صفحة تعديل المستخدم.. هنا بقى هنضيف الزر بتاعتنا الزر ده مهمته أنه لما تضغط عليه يروح على جدول الuser_meta في الداتابيز ويبحث عن رقم المستخدم الحالي اللي احنا داخل صفحته وبعدين يمسح الهاش بتاعه بحيث بعدها يقدر المستخدم يسجل دخول من جديد على جهاز جديد وبالتالي يتم حفظ هاش جديد له أيضا..
طيب افرض بقى أنت عايز كل مستخدم يكون مسموح له بالتسجيل من أكثر من جهاز وتحدد لكل واحد عدد أجهزة مختلف عن الثاني وتقدر تشوف كل الاجهزة اللي المستخدم مسجل من خلالها؟ كل ده هتلاقيه بقى في النسخة المتطورة اسمها WP Device Restriction بنبيعها على موقع شركتنا، نسخة فيها إعدادات متطورة أكثر وفيها طرق كثيرة لربط المستخدم بجهاز واحد وليس معتمدة فقط على الكوكيز..
تقدر تشتريها مباشرة من موقعنا الرسمي من خلال الرابط التالي:
https://www.ulayers.com/product/wp-device-restriction
ولو عايز تشوف بلاجينز تانية مفيدة جدا من برمجتنا تقدر تشوفها من الرابط التالي:
https://www.ulayers.com/product-category/digital-products
ولو محتاج تتواصل معنا لتفاصيل أكثر من خلال الواتس اب من الرابط التالي:
https://api.whatsapp.com/send?phone=201025072774
وبكده أنا خلصت شرح النهاردة.. لو حابب تستخدم البلاجين اللي شرحناها مجانا اتفضل تقدر تنزلها من الرابط التالي:
لمشاهدة هذا الجزء من المحتوى قم بالرد على المنشور أولا
دمتم بخير وبتوفيق من الله عز وجل ولا تنسونا من صالح دعائكم