-
المساهمات
5232 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
52
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Adnane Kadri
-
يمكنك تحديد النص المظلل عن طريق الجافاسكربت بإستعمال التابع getSelection للكائن العام window كالتالي : window.getSelection() مثال عملي : لتكن هيكلية الـ HTML التالية : <p> هذا النتص هو مجرد لملئ الفراغ حيث ان هناك حقيقة مثبتة ان الناس لا تهتم بالنص المكتوب اكثر من الشكل الخارجي هذا النتص هو مجرد لملئ الفراغ حيث ان هناك حقيقة مثبتة ان الناس لا تهتم بالنص المكتوب اكثر من الشكل الخارجي هذا النتص هو مجرد لملئ الفراغ حيث ان هناك حقيقة مثبتة ان الناس لا تهتم بالنص المكتوب اكثر من الشكل الخارجي </p> <input type="button" value="جلب المحدد" onclick="getSelectedText()"> <form name="testform"> <textarea name="selectedtext"></textarea> </form> حيث تقوم الدالة getSelectedText بطباعة النص المظلل في صندوق النص selectedtext : function getSelectedText() { // جلب النص المظلل var selectedText = window.getSelection(); // كتابة النص المحدد في الحقل النصي document.testform .selectedtext .value = selectedText; } تفحص المثال العملي .
- 1 جواب
-
- 2
-
-
ليس شرطا أن تعرف أن مصفوفة ما تم إرسالها عن طريق متصفح ما رغم أنه يمكنك ذلك، وسيكون الإكتفاء بتوليد رمز في كل طلب تسجيل دخول كافيا جدا ، فالعملية لن تتعلق بالمتصفح بشكل وثيق . لاحظ : وصحيح أن عمود إنتهاء الصلاحية أيضا يخزن مصفوفات JSON أيضا، قد أحسنت في تنبيهي إلى ذلك. ولكن كون الأمر يمتد هكذا لما لا نقول بإنشاء جدول رموز token؟ أين يتم تخزين كل رمز مفردا بشكل مستقل بدل مصفوفة . وليكن هذا الجدول tokens مثلا، حيث يحمل الأعمدة التالية: user_id يمثل عمود id من جدول المستخدمين token يمثل رمز التوكين token_expires_at يمثل تاريخ إنتهاء صلاحية هذا التوكين ثم بدل التحقق من إمتلاك المستخدم لرمز token في عمود المستخدمين يتم ربط العملية بالجدول المنشئ حديثا. هذا ليس إلا مثالا عن تطويرٍ للفكرة إبتداءا من الفكرة الأساسية، يمكن بذات المنطق الذهاب بالفكرة إلى أبعد من ذلك وإضافة العديد من الميزات الأخرى. يحتمل أن يكون ذلك ناتجا عن تحديثات رمز التوكين عن طريق رمز منتهي الصلاحية، حيث يحدث هذا في الكواليس بعد كل طلبية HTTP مرفقة بـرمز token منتهي الصلاحية. يمكن أن تخصص الشيفرة التي لديك بطريقة تعمل على إنشاء رمز توكين جديد إنطلاقا من اخر منتهي الصلاحية .
-
لن يعمل هذا الزر لأن الحدث الإفتراضي المسند إليه هو تقديم النموذج form submission ، أي إرسال البيانات المدخلة في الحقول ما بين وسم فتح form ووسم إغلاقه إلى نقطة الوصول الموضحة في الخاصية action الخاصة بالعنصر form . وفي حالة عدم تعريف هاته الخاصية سيتم إسناد القيمة "" لها مما يشير إلى نفس الصفحة . وبالتالي فإن أي إسناد لأي حدث اخر لن يتم إعتباره , وببساطة : لن يعمل الزر وسيكون الضغط عليه إرسالا للبيانات في نفس الصفحة . أفهم من طريقتك في كتابة الشيفرة أنك تحاول الذهاب إلى صفحة البحث search.html عند ضغطك للزر الكائن داخل النموذج . المكان الصحيح لتعريف هاته العلاقة هو بإستعمال الخاصية action لوسم النموذج form ، أين يتم إرفاق رابط الصفحة المستهدفة: <form action="search.html" class="d-flex my-2"> <input class="form-control me-sm-2" type="search" placeholder="Search"> <button class="btn btn-success" type="submit">click</button> </form> تعرف أكثر على العنصر form > الخاصيات .
-
عموما ، يشترط أن يكون رمز التوكين الذي تحاول توليده امنا من الناحية التشفيرية cryptographically secure . إذ لا يميل الكثير إلى توليد سلسلة نصية عشوائية عن طريق دوال من مثل rand أو uniqid أو غيرها كونها لم توجد لعمليات التوثيق التي تتطلب مستوى أعلى من الحماية والأمان ، لأن هاته نفسها مرتكزة على مفاهيم أخرى من مثل وقت إستدعاءها ، مما يجعل عملية فكرة التركيز عليها هشة. راجع قسم الوصف من توثيق الدالة uniqid() في PHP : فضلا عن الإنطلاق من سلسلة نصية معلومة مثل تلك التي تخزنها في المتغير whoami . وكحلول أكثر أمانا توفر PHP بدائل تصفها بأنها " آمنة تشفيريا cryptographically secure " . فمكتبة PHP 7 القياسية مثلا توفر وظيفة random_bytes التي تقوم بتوليد وحدات بايت عشوائية آمنة. ستحتاج بعد ذلك تحويل وحدات البايت هاته إلى hexadecimal عن طريق الوظيفة bintohex . مثال : <?php $bytes = random_bytes(60); $token = bin2hex($bytes); echo $token; /* 8063741bbb1dd099aa059e3ee1851bdb8a27a7d1 b22e962801c76b10dc0107828ec679fe93fac698 6c93d6e863542e69e029f5db08bf367ac6de66ab */ يمكنك أيضا الإستعانة بمكتبات أكثر أمانا وأكثر إلتفاتا لهذا الجانب ، من مثل مكتبات OAuth في PHP التي توفر التابع generateToken عن طريق مزود خدمتها OAuthProvider كالتالي : $p = new OAuthProvider(); $t = $p->generateToken(60); أو ربما مكتبات وحزما أخف حجما من مثل الغنية عن التعريف jwt .
-
تأكد من عدم إرفاق أية مساحات بيضاء قبل إرفاق اسم ملف الصورة ، في : images/ Penguins.png لكن كون العملية مُتحكمٌ فيها عن طريق الـ PHP فيحتمل أنك لسبب ما تضيف فراغا عند إدراجك للعمود img في الجدول الذي تحاول الإستعلام منه . ورغم أنه يُفضّل تتبع شيفرة الإدراج إلا أنه يمكنك حذف الفراغات في بداية ونهاية إسم الصورة عن طريق الوظيفة trim . إذ تقوم هاته الوظيفة بإزالة المسافات البيضاء (whitespace) (محارف الفراغات) أو أي محرف آخر من بداية السلسلة النصيَّة المررَّة إليها ونهايتها. لتكون الشيفرة التي لديك كالتالي : src="images/<?php echo trim($cours['img']); ?>" الناتج : images/Penguins.png توثيق الدالة trim .
-
لما لا تقوم ببساطة بربط المشروع بمستودع GIT واحد و ربط هذا المستودع بالعديد من البيئات الأخرى . ثم عند تحديثك لمستودع الـ GIT هذا سيتم تلقائيا إلتقاط مختلف التعديلات التي قمت بها من المستودع عن طريق هاته البيئات وبالتالي تحديثها كلها . يمكنك بهذا خدمة فكرة الـ multi server deployment وتحقيق نفس الغرض .
-
مبدئيا لن يمكن ذلك ، لأن هاته الطريقة تفرض أن يتم تحديث قيم token و token_expires_at في كل عملية تسجيل دخول . ولذلك فإن الرمز المخزن في المتصفح الأول سيختلف عن الثاني ولن يمكن إلا المطابقة عن طريق أحدهما . كفكرة يمكنك تخزين أكثر من توكن واحد في مصفوفة JSON بداخل حقل token ، أين يمكنك التحقق من مطابقة التوكن اللذي يرسله المستخدم عن طريق متصفح ما مع أحد الرموز المخزنة بحقل token . بالطبع فإن هذا هو الشكل الأبسط للعملية ، يمكن إنطلاقا منها تطويرها أو إضافة أي مميزات أخرى تخدم غرضا ما لديك . الاحتفاظ بتسجيل الدخول سيفرض تمديد المهلة الزمنية التي تنتهي فيها صلاحية التوكن في الخطوة الثالثة : أما عن الوقوع في الثغرات الأمنية بهذا الخصوص فلا مشكلة في تخزين رمز المصادقة في الواجهة الأمامية ، لأن العملية مُتحكّمٌ بها من الواجهة الخلفية . راجع إجابة المدرب سامح في سؤالك السابق :
-
في العادة يتم إستعمال التوكين لتوثيق طلبات الـ HTTP أو التحقق من صلاحياتها في طلب مورد ما . كطريقة عامة في إستعماله ،لنقل أنه يتبع المنطق التالي : يتم إنشاء العمودين بجدول المستخدمين : token VARCHAR(255) token_expires_at TIMESTAMP حيث أن تخزين السلسلة النصية اللتي يتم توليدها في العمود token ، في حين أن العمود token_expires_at سيحمل تاريخ إنتهاء صلاحية هذا الرمز . عند طلب المصادقة و تسجيل الدخول يتم إستقبال طلب العميل من الخادم . سيتم أولا التحقق من بيانات هذا المستخدم ، ثم سيتم توليد سلسلة نصية . سيتم تخزين هاته السلسلة النصية في عمود token الخاص بهذا العضو المستهدف ، كما سيتم تحديث عمود token_expires_at وإرفاق تاريخ جديد . يقوم الخادم بمصادقة الطلب وإعادة هذا الـ token في رد إلى العميل . يقوم العميل بإستقبال رد الخادم وتخزين هذا الـtoken ، يمكن تخزينه في التخزين المحلي LocalStorage أو عن طريق ملفات تعريف الإرتباط Cookies . في الطلبات القادمة سيتم قراءة الـ token من التخزين المحلي و إرساله مع الطلب . يقوم الخادم بالتحقق من وجود token مماثل مخزن وغير منتهي الصلاحية . يكون ذلك عن طريق التحقق من وجود السلسلة النصية التي يرسلها المستخدم بجدول المستخدمين ، وبمقارنة تاريخ إرسال الطلب بتاريخ إنتهاء صلاحية التوكين . سيمكن بناءا على ذلك توثيق الطلب ومصادقته ، أو رفض الطلب وإعلام المستخدم بإنتهاء صلاحية رمزه وطلب إعادة تسجيل الدخول مثلا .
-
واجهة البرنامج سهلة عموما ولا تحمل أية تعقيدات . في حالة مواجهتك لأي مشكلة يمكنك بأي وقت طرح أي استفسار بخصوص البرنامج بقسم الأسئلة العامة في أكاديمية حسوب و سيتم تقديم العون لك وتوجيهك.
-
نعم ، يمكنك تطبيق العديد من لغات البرمجة وأطر العمل عمليا من على جهاز الهاتف الخاص بك عن طريق إستعمال محررات أو بيئات تطوير IDE خاصة بالهاتف . أحب عادة إستعمال تطبيق Dcoder ، وهو بيئة تطوير كاملة تدعم البرمجة بالعديد من اللغات وأطر العمل . يتيح أيضا إمكانية إرفاق لوحة المفاتيح بالهاتف ، هذا بجانب العديد من المميزات الأخرى من مثل : دعم تعدد اللغات . يمكنك إيجاده في متجر play store لتطبيقات الأندرويد بإسمه الكامل كالتالي :
-
أي إطارٍ تقصد بين الإثنين؟
-
React Native هو إطار عمل يساعد على إنشاء تطبيقات جوال باستخدام لغة JavaScript ومكتبة React . التطبيقات التي تبنى بإطار React Native أصيلة، ما يعني أنّ شيفرة JavaScript تُترجَم إلى الشيفرة الأصلية للجهاز حسب المنصّة (Android أو iOS)، بخلاف التطبيقات الهجينة التي يُمكن إنشاؤها بأطرٍ مثل Cordova. Cordova هو إطار عمل مفتوح المصدر يساعد على إنشاء تطبيقات جوال .يسمح باستخدام تقنيات الويب القياسية مثل HTML5 و CSS3 و JavaScript لتطوير تطبيق للجوال يعمل على جميع المنصات. يمكنك مراجعة توثيق كل منهما في : توثيق ReactNative . توثيق Cordova . كما يمكنك الإطلاع على مقالات الأكاديمية في قسم Cordova .
-
يحددث هذا بسبب أن لديك خطأ في السياق العام لإضافة إستعلام قيد CHECK ، فالشكل العام لإستعماله يكون كالتالي : ALTER TABLE [table_name] ADD CONSTRAINT [check_name] CHECK ([column_name] IN ('check1', 'check2', 'check3' ... )); حيث أن : table_name : يعبر عن اسم الجدول الحاوي للعمود المستهدف . check_name : يعبر عن اسم القيد الذي تحاول إضافته . column_name : يعبر عن اسم العمود المستهدف . ما داخل القوسين يعبر عن القيد و شرطه . ففي المثال الذي لديك يجب أن يوجد كالتالي : ALTER TABLE orders ADD CONSTRAINT size_check CHECK (size IN ("s", "e", "l", "xl")); ليصبح كامل الإستعلام كالتالي : ALTER TABLE ADD COLUMN size varchar(255); ALTER TABLE posts ADD CONSTRAINT size_check CHECK (size IN ("s", "e", "l", "xl"));
- 1 جواب
-
- 1
-
-
لا يأخذ أي وقت فعملية التسجيل بسيطة مثلها كأي عملية تسجيل أخرى . فبمجرد شرائك للدورة سترسل لك التفاصيل عبر البريد الالكتروني و ستلاحظ ظهور زر " دوراتي " في قائمة التصفح العلوية و سيصبح محتوى الدورة متاحا لك بشكل طبيعي . تأكد أن تقوم بمراجعة صندوق رسائل البريد الإلكتروني ، كما يمكنك مراسلة الدعم لأي استفسارات أخرى.
-
بالطبع يمكنك ذلك ، فبوتستراب يوفر إمكانية تحسين اداءه و يتجاوز مشكلة بطئ تحميله أو تحميل مكونات لا نحتاجه . و يتيح إمكانية تضمين كل مكون على حدة ، مثل : badge ، alert ، containers ، grid أو غيرها . و لكن يكون كل ذلك بإستعمال Sass ، فهو يوفر إمكانية استيراد المكونات التي تحتاجها فقط دون الأخرى . توفر حزمة bootstarp الملف bootstrap.scss ، أين يتم تضمين قائمة المكونات : // الإعداد و التهيئة @import "functions"; @import "variables"; @import "mixins"; @import "utilities"; // المكونات @import "root"; @import "reboot"; @import "type"; @import "images"; @import "containers"; @import "grid"; @import "tables"; @import "forms"; @import "buttons"; @import "transitions"; @import "dropdown"; @import "button-group"; @import "nav"; @import "navbar"; @import "card"; @import "accordion"; @import "breadcrumb"; @import "pagination"; @import "badge"; @import "alert"; @import "progress"; @import "list-group"; @import "close"; @import "toasts"; @import "modal"; @import "tooltip"; @import "popover"; @import "carousel"; @import "spinners"; @import "offcanvas"; // Helpers @import "helpers"; // Utilities @import "utilities/api"; فإذا كنت لا تستخدم أحد المكونات فيمكنك ببساطة تعليق سطره أو حذف تماما من الملف . ثم سيمكنك عن طريق خوادم و أدوات مثل webpack إخراج ملف جامع . قد تكون هاته المعلومات متقدمة بعض الشيء إذ يعتبر هذا تعديلا على الملف الأم لبوتسراب بطريقة مخصصة غرض التحسين ، ولكن هذا لا يمنع من طرح الفكرة أو البحث فيها أكثر .
- 6 اجابة
-
- 2
-
-
بشكل عام ، إستعمال بوتستراب ليس به أي عيوب إن كنت تحبذ نمطا معينا للتصميم فيه و لكنك ستواجه أحد هاته العيوب في حالات أخرى : ستكون هناك حاجة إلى الكثير من تجاوز الشيفرات و إعادة كتابة الملفات أو إعادة تعيين بعض التنسيقات التي يمكن أن تؤدي إلى قضاء الكثير من الوقت في تصميم موقع الويب وترميزه إذا كان التصميم يميل إلى الانحراف عن التصميم المعتاد المستخدم في Bootstrap ، أي أنه سيتعين عليك بذل جهد إضافي أثناء إنشاء تصميم وإلا ستبدو جميع مواقع الويب التي تقوم بهاا متشابهة إذا لم تقم بإجراء عمليات تخصيص كبيرة. الأصناف التي يوفرها بوتستراب كثير ويمكن أن تؤدي إلى الكثير من العبث في HTML وهو أمر غير مطلوب دوما و قد يتعارض مع مفاهيم الشيفرة النظيفة في بعض الأحيان . نسخ متأخرة من بوتستراب معتمدة كليا على jQuery و Pooper ، مما يترك معظم الشيفرات الإضافية غير مستخدمة ، وهو أمر اخر يتعارض مع مفاهيم الشيفرة النظيفة بجانب أنه قد يؤخر تحميل الصفحات إن كانت سرعات التحميل لدى عملائك أو أغلبهم بطيئة . لكن هذا لا يمنع بالطبع من إمتلاك الكثير من الإيجابيات التي يمكن أن تجعلك تغفل أو تتقبل هاته السلبيات ، نذكر من بينها : كونه يساعدك على تجنب العديد من الأخطاء التي يمكن أن تظهر أثناء تعميم الخواص على المتصفحات . فعلى سبيل المثال : لا نقوم بتخصيص صنف لـ google chrome و اخر لـ IE ، بل نجد أن بوتستراب يوفر صنفا واحدا جامعا يتعامل به بوتستراب مع كامل التغيرات بين المتصفحات . بجانب أنه يعتمد على jQuery فهو أيضا يجنبك إستعمال الكثير من إضافات الجيكويري أو تضمين المكتبات المعتمدة عليها لخدمة أغراض معينة . يساعدك في الحصول على عمل و يضمن لك مكانا في سوق العمل ، إذ أن بوتستراب واحد من أكثر الأدوات المطلوبة في سوق العمل . يقدم Bootstrap نظام تخطيط شبكي Grid system رائع ، يختصر عليك هذا الكثير من الجهد و الشيفرات الإضافية . التجاوبية ، فأغلب حاويات بوتستراب تجاوبية و مرنة مع كل الشاشات ، هذا بجانب أنه يوفر أصنافا خاصة بكل نوع من الشاشات . يوفر الوقت ، فبوتستراب يحرص على توفير أغلب -إن لم نقل كل- ما تحتاجه لتصميم موقع الويب الخاص بك . أما عن تفضيلك لنظام التخطيط الشبكي grid system عن نمط الصندوق المرن flexbox فهو شيء طبيعي جدا ، ولا مشكلة بذلك إن كان إستخدامه أفضل و أكثر مرونة بالنسبة لك . قد تحتاج الإطلاع على العلاقة بين الخطاطة الشبكية Grid Layout وبين طرق التخطيط الأخرى .
- 6 اجابة
-
- 2
-
-
يمكنك مراسلة مركز مساعدة أكاديمية حسوب و اقتراح الفكرة . كما قد تحتاج الإطلاع على صفحة درب معنا للاستزادة .
-
يمكنك إستعمال حزمة barryvdh/laravel-dompdf لذلك ، إذ توفر هاته الحزمة إمكانية تحويل ملف عرض view بسيط إلى ملف PDF و تحميله . نحتاج في ذلك تطبيق الخطوات التالية : تثبيت الحزمة و إعدادها . تثبيت الحزمة يتم عن طريق تشغيل الأمر : composer require barryvdh/laravel-dompdf سنحتاج بعد ذلك إضافة مزود خدمة الحزمة إلى مصفوفة providers في ملف config/app.php : 'providers' => [ Barryvdh\DomPDF\ServiceProvider::class, ], يفضل أيضا تعريف اختصار للوصول السهل إلى واجهة الحزمة : 'aliases' => [ 'PDF' => Barryvdh\DomPDF\Facade::class, ] توفير رابط لطباعة ملف العرض بشكل PDF : في ملف العرض ، نحتاج توفير زر تصدير للصفحة المعروضة بشكل PDF . يكون ذلك بشكل مشابه : <div class="d-flex justify-content-end mb-4"> <a class="btn btn-primary" href="{{ route('pdf_export') }}">PDF تصدير إلى </a> </div> و بالطبع سنحتاج تعريف هذا المسار في ملف routes/web.php : <? use App\Http\Controllers\PDFController; Route::get('/pdf_export' ,[PDFController::class , 'export'])->name('pdf_export'); إستعمال توابع الحزمة لتصدير الملف . ليكن التابع export للمتحكم PDFController كالتالي : namespace App\Http\Controllers; use Illuminate\Http\Request; use PDF; class PDFController extends Controller { public function export() { $pdf = PDF::loadView('target_view', $someData); return $pdf->download('file_name.pdf'); } } بحيث أن : target_view : يعبر عن ملف العرض المستهدف ، يمكنك إستبداله باسم ملف العرض المناسب الذي تريد تصديره . file_name.pdf : يعبر عن اسم الملف المصدر ، يمكنك تغييره بحسب حاجتك أو حاجة عميلك .
-
طبقا للتوثيق الرسمي لمرجع أخطاء مكتبة libcurl المشار إليه في نص الخطأ فإن الخطأ cURL error 60 يعني أنه قد تم اعتبار شهادة SSL للخادم الذي تحاول إرسال الطلب من عليه غير مقبولة . قد تتعدد أسباب رفضها ، و لكن إشارتك للتالي : توضح أنه لا يمكنك إرسال طلب موثق بشهادة SSL لأنك في الغالب تستعمل localhost ، و ليكن في العلم أنه لا يحتوي على هاته الشهادة افتراضا . لا أظن أن بالأمر مشكلة كونك تقوم بتجربة الواجهة التي تستهدفها عن طريق خادمك المضيف . و لكن يقترح كحل لهاته المشكلة إضافة SSL صالح للمضيف المحلي لـ XAMPP كونك تقوم بإرسال هاته الطلبات بإستخدام أو بوساطة cURL .
- 1 جواب
-
- 1
-
-
أظن أن سؤالك متشعب كثيرا , إذ أن " تعلم HTML و CSS كمطور تطبيقات أندرويد " يعتمد بالدرجة الأولى على نهجك في تطوير هاته التطبيقات . فإذا كنت تقوم بتطوير تطبيقات الـ Android بإستعمال تقنيات هجينة من مثل ReactNative أو Cordova ، فستحتاج بالطبع إلى معرفة HTML و CSS لأنها تستخدم ذلك في مضمونها . و لكن إذا كنت تقوم بالتطوير أصليًا بإستعمال Java و XML ، فأنت لن تحتاج ذلك . أما عن كونك مشترك في دورة تطوير التطبيقات بإستخدام Javascript فأظن أن معرفة بأساسيات اللغتين ستكون كافية جدا .
- 10 اجابة
-
- 2
-
-
قد أحسنت , هاته الطريقة عملية جدا . وذلك لكون هاته المعلومات معلومات وصفية . أي أنها لا يجدر أن تظهر في الصفحة و إنما لأغراض أخرى مثل تحسين محركات البحث أو تحسين الظهور . فعوضا عن طباعة HTML يقترح فلترة المحتوى و استخراج النصوص من محتوى الـ html فقط . خصوصا في حالات من مثل الحاجة إلى هذا الحقل في أغراض أخرى , مثال : وجود حقل واحد للمقالة و لوصف صفحة المقالة في جدول المقالات في قواعد البيانات . أي أن كل محتوى كالتالي : <p style="text-align:center;"> هاته فقرة تخص وصف الصفحة </p> <h2> هذا عنوان يخص وصف الصفحة أيضا</h2> يصبح : هاته فقرة تخص وصف الصفحة هذا عنوان يخص وصف الصفحة أيضا ليمكن إستيعابها في الخاصية content كالتالي : <meta name="description" content=" هاته فقرة تخص وصف الصفحة هذا عنوان يخص وصف الصفحة أيضا" > مما يعني أنه هذا لن يسبب المشكلة السابقة . يمكنك إنشاء دالة للفلترة و تحويل كل محتوى html إلى محتوى نصي بمنطق مشابه : $text = '<p style="text-align"> هاته فقرة </p> <h2> هذا عنوان </h2>'; $cleaner_input = strip_tags($text); echo $cleaner_input; وهو نفس ما اقترحته سابقا .
- 6 اجابة
-
- 1
-
-
ليكن في العلم أن محتوى الخاصية content يقبل نصا فقط , في حين أنك تقوم بتقديم محتوى HTML إليه . لاحظ : <meta name="description" content="<p style="text-align:center;"" و بسبب علامتي التنصيص المفتوحتين في : content="<p style="text-align:center;">" ^ ^ فإن المتصفح يقوم بقراءة ما يقدم له كمحتوى HTML عادي , و بطبيعة الحال فإن هذا سيؤدي إلى ظهوره في الصفحة كـ HTML عادي . يحتمل أنك تقوم بإستعمال محرر نصوص لتحرير نص الوصف عن طريق لوحة التحكم , تأكد أنك لا تقوم بذلك , و أن الحقل news_content محتوى نصي فقط و لا يحوي أية وسوم أو عناصر HTML . يمكنك كحل لهاته المشكلة إلغاء تفعيل محرر النصوص الذي تستعمله على مدخل هذا الحقل في مكان ما بلوحة التحكم أين تقوم بتحديث نص الوصف . يحتمل أيضا أنك تقوم بإستهداف حقل غير الذي تقوم بتخزين المحتوى النصي فيه . تأكد من كل من السابق و أخبرني ما إن استمرت مشكلتك بالظهور .
- 6 اجابة
-
- 1
-
-
عموما , لا توجد أي مشكلة بالشيفرة التي لديك . يحتمل أن يكون الإختلاف الذي يظهر بين ما هو الخادم المحلي و ما هو على المستضيف هو أحد التالي : عدم إحتواء قواعد البيانات الخاصة بك على أي صفوف مدرجة بجدول topics بالمعرف المدرج في رابط الصفحة كـ : ?topics=23 يعني هذا إعادة الإستعلام الذي لديك لمصفوفة فارغة . و بالتالي عدم إمكانية قراءة الخواص news_content و title من ناتج الإستعلام . يؤدي هذا بدوره إلى نتيجة مشابهة للتالي : <meta name="keywords" content=" " /> <meta name="description" content=" "> الإحتمال الاخر هو في عدم إحتواء رابط الصفحة على معامل بالإسم topics أساسا , فبدل أن تقوم بتصفح رابط الصفحة عن طريق : https://domain.dm/path/to/my_page.php?topics=22 أنت تقوم بالتصفح إليه كالتالي : https://domain.dm/path/to/my_page.php يعني هذا تجاوز الشرط : <?php if( isset($_GET['topics']) ) : ?> و كل ما يقتضيه , و المرور مباشرة إلى شطر العبارة الشرطية الاخر : <?php else : ?> <title> موقع ....... </title> <?php endif; ?> مما يؤدي إلى عدم ظهور الوصف و الكلمات المفتاحية . لتجاوز هاته المشكلة , يقترح تصدير قواعد البيانات التي لديك على الخادم المحلي و إستيرادها في خادمك المستضيف . يقترح جانبا التأكد من أن الإتصال بقواعد البيانات يتم بشكل عادي , و من أن الجدول الذي تحاول القراءة من عليه يحوي بشكل عادي صفوفا يمكن القراءة منها .
- 6 اجابة
-
- 1
-
-
لا يزال أمامك الكثير فمحتوى الدورة غزير و شامل لكل مفاهيم تطوير واجهات المستخدم . كما أن ما يقدم لا يشمل html , css و جافاسكربت فقط بل ستمتد محتويات الدورة حتى تشمل Bootstrap و sass و jQuery , سواء من الناحية النظرية أو من الناحية التطبيقية إذ يتم تطبيق كل ما يدرس عمليا , بجانب الأشياء التي يتم استذكارها أو التعمق فيها أو توضيح أغراضها أثناء التطرق لها في التطبيق العملي .
-
مرحبا أحمد , في مسار أساسيات CSS في دورة تطوير واجهات المستخدم في الأكاديمية يتم التحدث عن أساسيات الـ css بمجملها و منطق تعاملها , ولا يتم تناول كل خاصية على حدة . و ذلك بهدف تسهيل إستذكارها للطلاب , و لجعل عملية ترتيبها و إستيعابها منطقية . فلا نجد مثلا دروسا كالتالي : الخاصية display الخاصية flex-wrap مجموعة الخواص background بل نجد دروسا ذات عناوين و محتويات دلالية , جامعة لمجموعة أفكار تضم مجموعة خواص تصب في ذات السياق , من مثل : التعامل مع الألوان . الروابط و الأصناف الزائفة . طرق العرض display modes . و هكذا .. أي أن ترتيب الدروس و تصنيفها كالتالي يجعل من إستيعابها أسهل و أكثر وضوحا . كما أن الأمور التي ذكرتها بعيدة بعض الشيء عن الأساسيات ذاتها , فهي من الأمور المتقدمة التي يتطلب التعامل معها معرفة مسبقة بـ css .. فلا يعقل مثلا أن نستوعب عمل transition أو transform دون أن نعرف الخواص التي يتخذها العنصر أثناء و بعد تحويله . في حين أن مسار أساسيات CSS يتعرض للأساسيات فقط . و لهذا فقد تم التطرق لهاته الأمور في المسارات اللاحقة لمسار أساسيات CSS في دورة تطوير واجهات المستخدم , و لذلك فقد تم تطبيقها عمليا و بشكل مكرر في كثير من المواضع اللاحقة , مثل مسار بناء صفحات هبوط أو مجموعة الفيديوهات في قسم تجاوبية الصفحة في مسار تطوير متجر إلكتروني .. و غيرها الكثير . كما يمكنك دوما الإستزادة بالإطلاع على موسوعة حسوب .
- 3 اجابة
-
- 2
-