اذهب إلى المحتوى

Adnane Kadri

الأعضاء
  • المساهمات

    5242
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    52

كل منشورات العضو Adnane Kadri

  1. - أولا قم بالتأكد أنك تستعمل الTrait الصحيح ففي النسخة الثامنة من المكتبة تم تغيير الtrait من HasMediaTrait الى InteractsWithMedia . فيكون هكذا : <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Spatie\MediaLibrary\HasMedia; use Spatie\MediaLibrary\InteractsWithMedia; class myModel extends Model implements HasMedia { use InteractsWithMedia; // use HasMediaTrait; تم التخلي عنه } و بكل حال من الاحوال , لا يزال عليك تخصيص وسط واحد فالدالة toMediaCollection معرفة بكلاس الوسط في حين أنك تقوم بتطبيقها على مجموعة من الوسائط و بطبيعة الحال فان الدالة غير معرفة على هذا النحو و سيتم رمي خطأ حالما قمت باستدعاءها . و كحلان مقترحان يمكنك : 1 . اما تخصيص وسط واحد و تطبيق الدالة toMediaCollection عليه و ذلك بـ : <?php public function update(Request $request, Channel $channel) { if($request->hasFile("image")){ // بدل هذا // $blog->addAllMediaFromRequest('image')->toMediaCollection('images'); // قم بهذا $blog->addMediaFromRequest('image')->toMediaCollection('images'); } } ?> وهذا بحالة ما كنت تقوم برفع وسط واحد على الاكثر 2 . تطبيق دور حول مجموعة الوسائط و تطبيق الدالة على كل منها مثل ما هو موصوف بالتعليق السابق , وهذا بحالة ما كنت تقوم برفع مجموعة وسائط , أي اثنان فأكثر .
  2. بقراءة متمعنة للخطأ الظاهر نجده يشير الى خطأ بسياق اللغة فهو لم يتوقع ادراج المتغير الذي اسمه $admin و الجائز في اللغة أن يعرف اما ثابت const أو دالة function : أي كلاس class و بداخله دوال methods و بداخل هاته الدوال يكون الكود و الlogic لا خارجها فالتخلص من هاته المشكلة بسيط و هو باضافة هذا الكود : $admin = new Role(); $admin->name = 'admin'; $admin->display_name = 'Project Admin'; $admin->description = 'admin is the owner of a project'; $admin->save(); الى داخل دالة معينة ننشئها . لكن هذا قد يحل المشكلة لكنه لن يجعل الباكاج تعمل بشكل صحيح و لربما قد يضيف مشاكل اخرى فالحل هو : بعدما قمنا بانشاء كلاس باسم Role الان نحتاج الى انشاء ادوار , أي انشاء نماذج من هذا الكلاس فالأصح ليس استعمال الكود السابق داخل الكلاس , بل استعمالها في أي مكان ثان غير داخل هذا الكلاس حتى يكون سهل الوصول و قابل للاستنتساخ منه . فالان أنت قد قمت بعمل الكلاس , وقد قمت بتوريثه دوال معينة باستعمال extends و لا تحتاج الى تعريف دوال اخرى , فتحتاج فقط الى انشاء هاته النماذج و عن نفسي احبذ انشاءها داخل ملف التهجير الخاص بالمستخدمين بدالة خاصة يتم استدعاءها قبل انشاء المستخدم الافتراضي أو السوبر ادمن ومن ثم اعطاء الدور له . فيكون ملف Role.php هكذا : <?php namespace App; use Zizaco\Entrust\EntrustRole; class Role extends EntrustRole { // } و يكون ملف التهجير الخاص بالمستخدمين هكذا : <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Hash; use App\Role; // لا تنسى تضمين الكلاس بشكل صحيح class CreateUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); // استدعاء الدالة التي تقوم بانشاء الادوار الافتراضية $adminRole = $this->createeSuperAdminRole(); // انشاء العضو الافتراضي او السوبر ادمن $user = App\Models\User::create([ 'name'=>'SuperAdmin', 'email'=>'super@admin.co', 'password' => Hash::make('12345678'), ]); // اضافة الدور للعضو $user->attachRole($adminRole); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('users'); } private function createeSuperAdminRole() { $admin = new Role(); $admin->name = 'admin'; $admin->display_name = 'Project Admin'; $admin->description = 'admin is the owner of a project'; $admin->save(); return $admin; // نقوم باعادته حتى يسهل اعطاء العضو الافتراضي هذا الدور } } و يمكنك معاملة الاذونات و الملف باسم Permission.php بنفس المنطق و انشاء الاذونات واضافتها للادوار بمنطق مشابه
  3. السلام عليكم الاخوة الكرام قمت بالتعامل مع احد العملاء بموقع Freelancer (كان بناء على طلبه), الشغل انتهى واستلمت المال على الموقع ولكنه بقى محجوز و تحويله يطلب تأكيد الهوية KYC تأكيد الهوية يطلب تأكيد العنوان , العنوان حاولت بالكارت البيومترية ولكنه اترفض , يطلب اشيا مثل رخصة سياقة , كشف كهرباء و حاجات هك وكلها تقريبا ما عنديش خفت استعمل الخاصة بالوالد او الاخ الاكبر و ينقفل الحساب خصوصا وانو مطلعلي مسج انو اي محاولة احتيال هوية ينقفل بيها الحساب يا ريت اللي عدا الاختبار يخبرني كيف عملها وقام بتأكيد الادراس, وحبذا لو من الجزائر بالضبط
  4. الثغرة الأمنية أو الـ Security Bug هي أوسع من تحصر في موقع أو تطبيق , قد نجد الثغرات في أنظمة التشغيل أو السيرفرات أيضا , أما عن الثغرات الأمنية في مواقع الويب أو تطبيقاته هي << غالبا >> ما تكون مرتبطة بحقول الادخال ( الـ Forms ) و أغلب الهجمات تكون عن طريق الفورمز تلك . اما بتحميل فايل ملغم على السيرفر عن طريقها وهي ما تعرف بهجمات الـ Remote File Uploads , أو عن طريقة كتابة سكربت أو كود يقوم بعملية تخريبية ما (هجمات الـ Cross Site Scripting) أو عن طريق حقن أمر SQL (ولعلها الأشهر على الاطلاق , الـ Sql Injections), فالفورمز ومدخلاتها هي المدخل الوحيد الذي يستطيع الاتصال بالسرفر و هو ما يستغله المخرب او المخترق . وهنا يأتي دور الـ Validation و الـ sanitizing على السرفر سايد وعلى الكلاينت سايد . فالثغرة الأمنية بموقع تكون اما بثغرة على السيرفر نفسه , او ربما على نظام التشغيل . أو في ضعف أو ربما غياب التعقيم و توثيق المعلومات قبل وبعد وأثناء ارسالها الى السيرفر , و قبل أي عملية حقن في قاعدة البيانات أو التعامل مع ملفات السيرفر . بعض المفاهيم والأساليب في البرمجة الكائنية التوجه OOP قد يكون لها دور كبير ايضا في الامن المعلوماتي مثل مفهوم التغليف أو الـ Encapsulation . وهو الاتجاه البرمجي الذي يتجه نحوه العالم . فالثغرة الأمنية قد لا تكون غالبا خطأ في السكريب أو خطأ في كتابة الكود , بل في الغفلة عن تغليف المعلومات أو معالجتها وتوثيقها و تعقيمها من أي ما قد يكون مضرا بالموقع. أي بصف جميع الاحتمالات الممكن عملها بحقل ما و معالجتها (وهو نفسه ما قاله الاخ في تعليق سابق) تحياتي
  5. اما ان العميل يثبت لوكل هوست ويجرب الموقع لو كان الموقع بقاعدة بيانات و باك اند . وهذا رح يتعب العميل و يشتتو خصوصا لو كان خارج المجال. أو تعمل تريك بسيطة , وهي الأفضل . ترفع الموقع على استضافة مجانية , وتضيف فورم دخول للموقع مثلا وتسلملو بيانات الدخول (ولو حقل واحد , رقم تسلسلي مثلا) وبعد الاتفاق على المطلوب تزيل الفورم و تحذف بيانات الموقع من السي بانل للمستضيف المجاني . استضافات مثل نتلفاي Netlify (لو كان الموقع ستاتيك) أو 000webhost أو freewha (ان كان الموقع بقاعدة بيانات و سرفر سايد) ستكون مناسبة جدا
  6. <form> Age : <input type='number' class='ageField' /> nationality : <select class='nationalityField'> <option value='Saudian'>Saudian</option> <option value='American'>American</option> <option value='Algerian'>Algerian</option> </select> <input type='submit' class='submitBtn'> </form> var btn =document.querySelector('.submitBtn'); // function called when submitting the button function checkForUser(){ // declaring variables var nationality=document.querySelector('.nationalityField'), age =document.querySelector('.ageField'); // check : if(nationality.value=='saudian' && age>=18){ window.alert('Welcome'); }else{ window.alert('sorry'); } } // Add event handler btn.addEventListener('click',checkForUser()); بعد ما يدخل المعلومات تأخذ قيم الفيلدس وتعمل اللي حابه بالجافاسكربت
  7. وعليكم السلام , سأجيبك من داخل مجالي (الويب) , تحريك الـ Illustrations في المتصفح أغلب الـ Illustrations مثل تلك التي يوفرها موقع unDraw او موقع Ouch تتوفر على صيغة الـ SVG . ببرامج مثل الFigma أو الفوطوشوب يمكنك التعديل على الـ SVG وتجميع أجزاءه ( Vectors ) و تعريفها جزءا جزءا بID معين . صيغة الـSVG بواسطة المتصفح تقرأ على أنها أجزاء مجمعة ولها خصائصها في اصدار الـ HTML5 , تتذكر الأجزاء اللي عرفتها منذ قليل؟ بالـ CSS3 Animations تقدر تبتكر أي انيميشن تجي فبالك . وبالـ Javascript رح تقدر تبتكر ما لا يأتي بال .
×
×
  • أضف...