-
المساهمات
5232 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
52
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Adnane Kadri
-
مرحبا عمر، نعم، يتوفر ذلك في الأكاديمية. يمكنك التواصل مع الإدارة من خلال مركز مساعدة أكاديمية حسوب.
-
جافاسكربت لا يمكنها القيام بالكتابة على الملفات، أفضل ما يمكن القيام به بهذا الخصوص هو قراءة محتويات الملف ثم التعديل عليها ككائن جافاسكربرت أو سلسلة نصية أو ما الى ذلك ، وأخيرا ارسالها الى الواجهة الخلفية وجزء الخادم ليتم توليد ملف أو استبدال محتويات الملف بالمحتويات الجديدة. قد يمكن أيضا استخدام NodeJS للقيام بالفكرة على نحو مباشر. مثال: const fs = require('fs'); // تخصيص اسيم الملف const filePath = 'example.txt'; // قراءة محتويات الملف fs.readFile(filePath, 'utf8', (err, data) => { if (err) { console.error(err); return; } // تعديل محتوى الملف const modifiedData = data.replace('oldText', 'newText'); // اعادة كتابة محتوى للملف fs.writeFile(filePath, modifiedData, 'utf8', (err) => { if (err) { console.error(err); return; } console.log('تم بنجاح.'); }); });
- 1 جواب
-
- 1
-
-
رغم أن الفكرة تبدوا غير ممكنة بعض الشيء، ولكن قد يمكن التوصل إلى موقع بسيط نسبيا في خلال هاته المدة الزمنية. وسيقتضي هذا تنظيما على مستوى عال من الدقة والالتزام. لنقل أنه يمكن توزيع المهام على النحو التالي: المجموعة A: ستنشغل بإدارة المشروع وتحليل متطلبات المشروع وبتوزيع المهام وتخطيط الصفحات بشكل رسومات وما نحو ذلك. غالبا ما ستكون مكونة من شخص واحد يجب أن يكون هو الأكثر اطلاعا على مجال الويب. المجموعة B: ستنشغل بتعلم وتطوير الواجهة الخلفية للموقع، بما في ذلك هندسة قواعد البيانات. المجموعة C : ستنشغل بتعلم وتطوير الواجهة الأمامية للموقع، وتحويل الهياكل والتخطيطات المقدمة من المجموعة A إلى هياكل ويب حقيقية وتنسيقها باستخدام CSS. وبما أن الوقت ضيق، يستوجب على كل مجموعة أن تقوم بالتدرب على ما تتعلمه على هذا المشروع بالفعل. قد تحتاجون بعض الوقت الآخر لتعلم تقنيات GIT لتسهيل العمل الجماعي بينكم.
- 7 اجابة
-
- 1
-
-
الإجابة الأبسط هي: استكمال مسارات الدورة الأخرى. بخصوص العمل المرفق، فهو عموما ممتاز اذ يظهر أنك قد قمت بفصل مكونات التطبيقات على نحو ممتاز بطريقة أشبه بالطريقة المتعرض لها في مسار أساسيات PHP من ذات الدورة. بنية المتحكمات لديك متماسكة وكذلك نماذج البيانات. يتم توصيف الكلاسات المجردة والواجهات على نحو صحيح يستوفي الغرض الأول منهما. ملفات العرض لديك تحتوي هياكل نظيفة وبنيات واضحة، عدى ملفات المكونات الفرعية، إذ يظهر أنها تحتوي على وسوم إغلاق تتعلق بمكونات أخرى، على سبيل المثال لا الحصر، مكون footer: <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script> </body> </html> هذا التوصيف لا يحترم مبدأ المسؤولية الواحدة، فملف المكون متوقف على ملف مكون آخر. وهو لن يكون صحيحا ما لم يتكامل مع مكون آخر. فكر بإصلاحها أو تضمين الوسوم بملف آخر. أيضا لا يبدوا أن المحتوى المحقون بهذا الملف يعبر عن تذييل footer، هل تقصد به تذييل الصفحة؟ أظن أن لا داعي منه ما لم يكن هنالك عنصر footer واضح ذي بنية واضحة تحتوي مثلا عبارة حقوق الملكية أو النشر. عدى ذلك، كل شيء ممتاز وقد أحسنت في العمل على ذلك.
- 2 اجابة
-
- 1
-
-
هاته ليست بمشكلة، فـ vs code لا يتوفر على دعم شامل لمحارف اللغة العربية، ولذلك تجدها تظهر بهذا الشكل، وينطبق ذلك على كل اللغات التي تستخدم محارف مثل اللغة العربية أو اتجاه كتابة RTL. عموما، هذا لن يؤثر على سير المشروع أو عمله. يمكنك التغاضي عن ذلك والاستمرار في العمل على مشروعك، ولكن ان شئت، قم بتغيير اسم مجلد المشروع الى لغة أجنبية -مثل الانجليزية- للتخلص من هاته المشكلة.
- 5 اجابة
-
- 1
-
-
أظن أن الأمر نفسه يخضع لعدة عوامل أخرى منها مثلا حجم المشروع، فبعض المشاريع تقتضي تنظيما وتخطيطا أكثر نظرا لكبرها وحجمها، في حين أن الأخرى لا تحتاج سوى ترسيم خطوط عريضة للبدء فيها. وعموما يتم الإعتماد على الخطوات التالية للتخطيط لبناء موقع: فهم المتطلبات التصميم الأولي للواجهة الأمامية تطوير الواجهة الأمامية تطوير النظم الخلفية الاختبار والتحسين التوسع أما بخصوص البدء بالعمل ما بين الواجهة الأمامية والخلفية، فانظر الأمر الذي تراه أسهل. ومن وجهة نظر شخصية، ارى أن العمل على الواجهة الأمامية أولى، نظرا لأنه يساعدك في تحليل مختلف حالات الاستخدام وتحديدها.
-
يمكنك التعامل مع فكرة التعميم عن طريق تمرير أكثر من وسيط إلى صنف الإشعار. مثال عملي: لنقل أننا نريد تخصيص عنوان الرسالة أو أي من معاملاتها، لنقم بتمرير العنوان نفسه كوسيط للباني: class TaskComplete extends Notification { use Queueable; private $details; private $task; private $title; /** * Create a new notification instance. */ public function __construct(Faculty $task, $title) { $this->task = $task; $this->title = $title; } الآن يمكنك استخدام هاته الخاصية من داخل الصنف: /** * Get the array representation of the notification. * * @return array<string, mixed> */ public function toDatabase($notifiable) { return [ 'id' => $this->task->Faculty_ID, 'title' => $this->title, 'User' => Auth::user()->name, 'state' => 0 ]; } الآن ما عليك إلا تخصيص قيمة لعنوان الإشعار بحسب المكان الذي تقوم فيه باستدعاء الشيفرة المعنية. نفس الشيء يمكنك عمله مع أي فكرة يمكنك انطلاقا منها التوسع في تخصيص هذا الصنف. مثل تخصيص المحتوى أو غيرهأ.
-
عندما تقوم بتثبيت مكتبة على النظام النشغيل (مثل باستخدام مدير حزم مثل Composer لـ PHP أو npm لـ Node.js)، فإنك تجعل المكتبة متاحة لجميع المشاريع على النظام. هذا يعني أنك تستفيد من المكتبة في مشاريع متعددة دون الحاجة لتكرار التثبيت. يمكن أن تكون هناك تبعات إذا تم تحديث المكتبة على مستوى النظام النشغيل وأثر ذلك على جميع المشاريع. أما عندما تقوم بتثبيت مكتبة داخل بيئة برمجية (مثل إنشاء بيئة افتراضية باستخدام virtualenv في Python)، فإنك تعزل المكتبة عن مشروعك وتجعلها متاحة فقط داخل هذه البيئة. الأمر الذي يساعد بطبيعة الحال في تجنب تعارض الإصدارات والتأكد من استدعاء الإصدار المحدد للمكتبة. يمكن أيضًا إعادة إنشاء بيئات برمجية مختلفة لمشاريع مختلفة تعتمد على إصدارات مختلفة من المكتبات.
- 2 اجابة
-
- 1
-
-
كفكرة، يمكنك حفظ التواريخ بالتاريخ الميلادي على مستوى طبقة البيانات وقواعد البيانات ثم عرضه بالتاريخ الهجري أو الميلادي على مستوى ملفات العروض. يمكنك الاستعانة بالمكتبات التي تهتم بالتحويل من وإلى التاريخ الهجري من مثل alkoumi/laravel-hijri-date في لارافيل. مثال عملي: ثم بتثبيت الحزمة: composer require alkoumi/laravel-hijri-date أضف موفر الخدمة إلى ملف app.php لمصفوفة providers: 'providers' => [ // ... Alkoumi\LaravelHijriDate\LaravelHijriDateServiceProvider::class, ]; قم باستعمالها في ملفات العروض على نحو: <p> {{ Hijri::FullDate($post->created_at) }} </p>
- 2 اجابة
-
- 1
-
-
جرب استعمال findByIdAndRemove بدلا عن remove للحذف، انتبه الى تمرير المعامل اللازم: await Image.findByIdAndRemove(req.params.photoId)
- 4 اجابة
-
- 1
-
-
المشكلة في الكود الخاص بك تكمن في السطر التالي: await post.remove; فبدلا من استخدام remove كخاصية سيجب عليك استعمالها كتابع: await post.remove(); احفظ الملف ثم انظر ما تم ذلك.
- 4 اجابة
-
- 1
-
-
الطريقة الأبسط لذلك هي عن طريق: فك ضغط الملف في مجلد htdocs الكائن بمجلد xampp في قرص C (انتبه إلى أن ذلك يقتضي أن يكون xampp مثبتا لديك). قم بفتح لوحة تحكم xampp وقم بتفعيل apache و mysql. الآن قم بالتصفح عبر المتصفح إلى: localhost/العالمي
-
بغض النظر عن المحتوى الداخلي للشريحة إلا أن فكرة عارض الشرائح غالبا ما تكون مماثلة لبعضها، وفيما يلي بعض الخطوات العامة لها: قم بإعداد هيكلة عارض الشرائح بشكل مناسب، بحيث يتموضع عدد من الشرائح داخل حاوية واحدة. قم بإضفاء التنسيقات المناسبة وأعط الحاوية وكل عنصر شريحة تنسيقا مناسبا، ونفس الشيء بطبيعة الحال بالنسبة لأزرار Next و Prev. قم بإضافة أحداث جافاسكربت اللازمة، فعند الضغط على Next يتم المرور الى الشريحة التالية بناءا على فهرس الشريحة وترتيبها. والأمر ذاته بالنسبة لزر Prev - طبعا فإنه يمكنك التحكم في طريقة المرور لهاته الشريحة، فقد يكون انزلاقا ببعض تنسيقات css أو الأبسط تماما: اظهار الشريحة المفعلة واخفاء كل ما هو دونها. مثال: <!DOCTYPE html> <html> <head> <style> .slide { display: none; } </style> </head> <body> <div class="slide">Slide 1 - Video 1</div> <div class="slide">Slide 2 - Video 2</div> <button id="prev">Previous</button> <button id="next">Next</button> <script> let currentSlide = 0; const slides = document.querySelectorAll('.slide'); function showSlide(n) { slides[currentSlide].style.display = 'none'; currentSlide = (n + slides.length) % slides.length; slides[currentSlide].style.display = 'block'; } document.getElementById('prev').addEventListener('click', () => showSlide(currentSlide - 1)); document.getElementById('next').addEventListener('click', () => showSlide(currentSlide + 1)); showSlide(currentSlide); </script> </body> </html>
-
وعليكم السلام، نعم، يمكنك بطبيعة الحال إنشاء موقع ووردبريس دون الحاجة إلى الإضافات المدفوعة أو برمجة مخصصة. اذ أن ووردبريس يأتي مع العديد من الميزات والقوالب المجانية التي يمكن تخصيصها واستخدامها لبناء معظم أنواع المواقع. هذا يتطلب فقط معرفة جيدة بإدارة المحتوى والتخصيص ومعرفة واسعة بالاضافات الجيدة والشائع استعمالها. بخصوص مصادر وكتب لاحتراف وتعلم ووردبريس نذكر مثلا: هنا بعض المصادر والكتب التي يمكن أن تساعدك في احتراف ووردبريس: الموقع الرسمي WordPress.org: يحتوي على مستندات وأدلة مفصلة حول كيفية استخدام وتخصيص ووردبريس. مدونة WPBeginner: توفر مقالات وشروحات مفصلة حول مواضيع متعددة في ووردبريس. الكورسات المنشورة على Udemy و Coursera: تحتوي على دورات عبر الإنترنت حول تطوير ووردبريس وتخصيصه. المقالات المنشورة على أكاديمية حسوب.
-
مرحبا أحمد، ليس بالضرورة، فالاختبار يكون بصورة أشمل ليتم اختبارك في مواد علمية مختلفة تم التطرق إليها في الدورة، وقد لا يكون ذلك بالضرورة عن لغة برمجية واحدة. يجب التأكد أولا من استيفاء الطالب لشروط الامتحان والحصول على الشهادة وهي: إتمام أربعة مسارات تعليمية على الأقل من الدورة التطبيق العملي مع المدرب، والاحتفاظ بالمشاريع العملية الناتجة لإرسالها للمراجعة رفع المشاريع على حسابك على GitHub بعد ذلك، يجب على الطالب مراسلة فريق الدعم وابداء نيته باجتياز الاختبار. أين سيتم تحديد موعد للطالب لإجراء محادثة صوتية لمدة 30 دقيقة يتم فيها مناقشة ما تم التعرض له خلال الدورة بجانب امتحانه وسؤاله أسئلة متفرقة عن الدورة. بعد هذا، سيتم تحديد مشروع تخرج مرتبط بما تعلمه يقوم به الطالب خلال فترة محددة. سيتم بعد تقديم المشروع، مراجعته وارشاد الطالب الى أماكن القصور أو تقديم الشهادة له والتخرج ببساطة. يمكنك الإطلاع أكثر على تفاصيل الامتحان والحصول على الشهادة من هنا.
- 1 جواب
-
- 1
-
-
كلتاهما مقاربة لإنشاء الكائنات في جافاسكربت، Constructor Function (دالة البناء): هي الطريقة التقليدية لإنشاء الكائنات في جافاسكربت، ويتم ذلك عن طريق استنساخ كائن من فئة معينة بوساطة الكلمة المفتاحية new، مثال: function Person(name, age) { this.name = name; this.age = age; } const person1 = new Person('Ahmed', 30); الكائن person1 هاهنا هو كائن عن الصنف Person، تم إنشاء بوساطة دالة البناء. Factory Function (دالة الصانع): هي في الأصل نمط تصميم يستخدم لإنشاء الكائنات، فهي مجرد دالة عادية تقوم بإعادة كائن في النهاية، ولا تعتمد على الطريقة التقليدية لاستنساخ كائن من الفئة. مثال: function createPerson(name, age) { return { name, age, someMethod() { console.log(`مرحبًا، اسمي ${this.name} وأنا عمري ${this.age} عامًا.`); } }; } const person2 = createPerson('Ahmed', 30); الفروقات الرئيسية بينهما هي ببساطة: أن دالة البناء مرتبطة بالفئات وعملية إنشاء الكائنات، بينما دالة الصانع ليست مرتبطة بالفئات وتركز على إنشاء الكائنات بتكوينات محددة. دالة البناء تستخدم الكلمة الرئيسية new، بينما يمكن استدعاء دالة الصانع مثل دوال عادية لإنشاء وإرجاع الكائنات. دالة الصانع يمكنها إرجاع تكوينات مختلفة للكائن استنادا إلى معلمات الإدخال، مما يجعلها أكثر مرونة. فقد يمكن تصيير تابع معين مثلا بشكل شرطي بحسب قيمة معامل ما.
- 3 اجابة
-
- 1
-
-
يمكنك تحليل هاته المعطيات إلى نماذج البيانات التالية: موظف / مستخدم Employee / User. منطقة Region. محافظة Governorate. مجمع سكني City. وحدة سكنية Apartment. قم بتشغيل الأوامر التالية تباعا لتكوين نماذج بيانات Models وملفات تهجير migration files لكل انموذج بيانات: php artisan make:model Employee -m php artisan make:model Region -m php artisan make:model Governorate -m php artisan make:model City -m php artisan make:model Apartment -m قم بإضافة الحقول اللازمة لكل ملف تهجير مرافق لأنموذج بيانات معين. قم بحقن بيانات اتصال صحيحة بقاعدة البيانات في ملف متغيرات البيئة env. ثم نفذ عملية التهجير: php artisan migrate قد تحتاج كخطوة اضافية توصيف العلاقات بين البيانات، الأمر الذي يتم بوساطة المفاتيح الأجنبية FK التي تشير إلى صفوف في جداول أخرى، مثال: لنقل أن كل منطقة تمتلك الكثير من المحافظات، وكل محافظة بدورها تمتلك الكثيرر من المجمعات السكنية، وكل مجمع سكنية يحتوي عددا من الوحدات السكنية .. هذا يقتضي: وجود مفتاح أجنبي region_id يميز المنطقة في جدول المحافظات. وجود مفتاح أجنبي governorate_id يميز المحافظة في جدول المجمعات السكنية. وجود مفتاح أجنبي city_id يميز المجمع السكني في جدول الوحدات السكنية. وهذا كأنموذج قاعدة بيانات أولي .. يمكنك تطويره والتحسين فيه بحسب حاجتك .. مثلما يمكنك التغاضي عن انموذج بيانات الموظف Employee في حال ما اردت استخدام الانموذج User الذي يأتي مع تطبيق لارافيل بشكل افتراضي.
- 3 اجابة
-
- 1
-
-
أي مواقع عينة ينطبق عليها هذا، فهي مواقع يمكن عمل أو عمل مقاربات لها على أنها تدريب عملي. سواءا كنت تقوم بذلك بوساطة PHP أو بايثون أو غيرهما .. أما ان كنت تقصد بعض المصادر الإضافية التي تخص بايثون غرض التدريب والممارسة في هاته اللغة حصرا، فيمكنك الاستعانة بواحدة أو اكثر من التالي: Django Project's Website Real Python Django for Beginners DjangoGirls
-
مرحبا مصطفى، هنيئا لك بإكمال الدورة، الخطوة التالية بعد الانتهاء من الدورة هي الإمتحان والحصول على الشهادة، ولهذا شروط هي: إتمام أربعة مسارات تعليمية على الأقل التطبيق العملي مع المدرب، والاحتفاظ بالمشاريع العملية الناتجة لإرسالها للمراجعة رفع المشاريع على حسابك على GitHub بعد التأكد من استيفاء الشروط سوف تحتاج التواصل مع فريق الدعم من خلال مركز مساعدة أكاديمية حسوب ، سوف يتم اجراء محادثة صوتية معك ثم امتحانك ببساطة. اطلع أكثر على الامتحان والحصول على الشهادة.
- 3 اجابة
-
- 1
-
-
عملية التعلم يجب أن تتبع خطوطا عريضة ومراحل واضحة، ومثل هذا الشيء لا يمكن أن يتضح لك إلا من خلال معلم أو دليل يخبرك ما الخطوة الحالية وما هي متطلباتها وما الخطوة التالية لعملها أو تعلمها أو تطبيقها. ولذلك سوف تحتاج اتباع كورس أو دورة منظمة وممنهجة لكي يسعك دخول المجال الذي تجد أنك مهتم به. وهذا بشكل أساسي، فيما يلي بعض النصائح الجانبية التي تعينك في ذلك: التزم بـالاستمرارية طور مهارتي المرونة والصبر لديك ولا تستعجل العملية التدريب والممارسة العملية انخرط في المجتمعات البرمجية للاستزادة، يمكنك الإطلاع على المقالة التفصيلية التالية:
- 4 اجابة
-
- 1
-
-
أهمية الشهادة CS50 تعتمد على أهدافك الشخصية ومجال عملك والمجال الذي تستمد منه هاته الأهمية. فمن ناحية أنها تأسيس قوي فهي مهمة بطبيعة الحال، فهي تمنحك فهما قويا لأساسيات علوم الحاسب من مثل البرمجة وهياكل البيانات والخوارزميات. أما من ناحية دفعك إلى تعلم المزيد فهي أيضا كذلك. هذا بجانب المساهمة في سيرتك الذاتية، فقد تكون الشهادة مفيدة عند التقديم للوظائف أو الانضمام إلى برامج دراسات عليا. فهي تظهر الاستثمار في التعليم والتطوير المستمر بإيجابية على سيرتك الذاتية. ولذلك، فهي لا تقل أهمية عن أي شهادة أخرى مكافئة خصوصا لشهرتها، تأهيلا وتأسيسا وشهادة.
- 3 اجابة
-
- 1
-
-
اقتراح جميل، لربما يتم العمل على ذلك مستقبلا. حاليا، يمكنك التوصل إلى العديد من الطلبة عبر مجتمعات حسوب I/O فالكثير منهم يتواجد أو ينشط هنالك. يمكنك أيضا طرح انشغالاتك هنا في أقسام مختلفة من أقسام الأسئلة العامة، ستجد الكثير من الطلبة يشاركونك نفس الأفكار أو الاهتمامات.
-
قد لا يكون تعلم بايثون وحده كافيا لعمل تطبيقات فعالة في مجال معين، فأنت ستحتاج بجانب ذلك الإحاطة ببعض أساسيات التعامل مع قواعد البيانات و اطار عمل في المجال المستهدف، بجانب بعض أساسيات المجال الذي تستهدفه. مثال: ان كنت تنوي تطوير تطبيقك على الويب، فأنت ستحتاج الإلمام بأساسيات تطوير الواجهات الأمامية. ان كان سؤالك بخصوص دورة تطوير التطبيقات باستخدام لغة بايثون، فالإجابة هي نعم. يتم اعتبار كل هاته النقاط في الدورة، ويتم تعليم الطلبة كل الجزئيات الاضافية التي يحتاجونها، وبذلك يتم تأسيس الطلبة في مجالات مختلفة تمكنهم من بناء تطبيقات فعالة في هاته المجالات. يذكر أن دورة تطوير التطبيقات باستخدام لغة بايثون تتوفر على المسارات التالية: أساسيات لغة بايثون تطبيقات عملية باستخدام بايثون أساسيات إطار العمل جانغو تطوير متجر إلكتروني باستخدام جانغو تطوير واجهة برمجية لتعديل الصور باستخدام فلاسك تطوير تطبيقات أودو بناء مدونة باستخدام فلاسك تحليل البيانات أساسيات تعلم الآلة Machine Learning يمكنك الإطلاع أكثر عنها من خلال: الرابط
- 4 اجابة
-
- 1
-
-
قم بربط ذلك مع عملية التسجيل، نفذ شيفرة ارسال البريد بعد شيفرة تسجيل مستخدم جديد وتوليد رمز token له.
- 4 اجابة
-
- 1
-
-
فكرة تأكيد الإيميل في مضمونها هي فكرة بسيطة ولا تحتاج إلا تطبيقا عمليا صحيحا وتكاملا بين مختلف مكونات التطبيق بصورة صحيحة. فيما يلي الخطوات العامة لذلك: في جدول المستخدمين أضف حقلا/عمودا يحمل قيمة بوليانية Boolean تعبر عما ان كان المستخدم حاليا قد قام بتأكيد عنوان بريده الإلكتروني أو لا. ولتكن email_is_verified وتحمل القيمة false بشكل افتراضي. يضاف أيضا حقل/عمود يحمل سلسلة نصية تعبر عن كود التفعيل الخاص بالمستخدم وليكن email_verification_token. في كل تسجيل جديد سوف يتم تعيين قيمة email_is_verified بـ false، كما يتم توليد سلسلة نصية عشوائية تعبر عن كود التفعيل. في كل تسجيل جديد يتم ارسال رسالة الى البريد الالكتروني في عنوان البريد المرفق، بحيث تحمل زرا يقوم بإعادة التوجيه إلى التطبيق حاملا قيمة رمز token كمعامل query param مثال: https://yourdomain.co/email/verify?token=PUT_TOKEN_HERE طبعا فإن الهيكلة الموافقة يتم بناءها وارسالها كرسالة HTML الى عنوان المستخدم. يقوم التطبيق بالمسار السابق بفحص قيمة token المرسلة في الطلب والتأكد مما ان كانت مطابقة لقيمة token المسجلة في قاعدة البيانات. في حال كان ذلك، يتم تأكيد عنوان المستخدم، وفي حال لم يكن يتم اخبار المستخدم بذلك. بين كل هذا وذاك، يجب بطبيعة الحال تقييد الوصول إلى بعض ميزات التطبيق للمستخدمين الذين لم يقوموا بتفعيل عناوين البريد الالكتروني الخاص بهم. وهي لا تكلف أي مال بطبيعة الحال، عدى تكاليف الاستضافة.
- 4 اجابة
-
- 1
-