محمد عاطف

24 نقاط السمعة
731 مشاهدات المحتوى
عضو منذ
يمكنك تجربة وضع خاصية onsubmit على عنصر ال form كالتالي : <form id="upload-form" enctype="multipart/form-data" onsubmit="return uploadImage(event);" > ويمكنك إنشاء دالة uploadImage كالتالي ليتم تنفيذها عن محاولة إرسال النموذج : function uploadImage (event){ event.preventDefault(); var fileInput = document.getElementById('file'); var file = fileInput.files[0]; var formData = new FormData(); formData.append('file', file); var xhr = new XMLHttpRequest(); xhr.open('POST', '', true); xhr.upload.onprogress = function(e) { if (e.lengthComputable) { var percentComplete = (e.loaded / e.total) * 100; document.querySelector('#progress-bar div').style.width = percentComplete + '%'; document.querySelector('#progress-bar div').textContent =
لا داعي للشكر . نعم طريقة المدرب مصطفي جيدة ولكنها ستفيد أكثر في النماذج الكبيرة والتي تحتوي على مدخلات كثيرة حيث ستجعل المستخدم يقوم أولا برفع الصور وبينما يتم رفع الصور على الخادم سيكون هو قام بملئ النموذج وبهذا لن يشعر بالتأخير أثناء رفع الصور. ولكن هذه الطريقة لها سلبيات في النماذج الصغيرة مثل هنا أنت تقوم بكتابة منشور فقط ويقوم برفع الصورة فهنا إذا قام المستخدم بالضغط على زر نشر المنشور قبل رفع الصورة ستحدث مشكلة أن المنشور سيكون
هذا يعتمد على الكود الخاص بك . ولكن لماذا تقوم بذلك ؟ يمكنك إضافة الحقل الخاص بإدخال الصورة في النموذج form الخاص بك ووضع الكود الخاص برفع الصورة وتوليد الرابط مع الكود الخاص بإضافة المنشور ويمكنك أخذ الرابط مباشرة ووضعه مع المنشور في قاعدة البيانات . إذا أردت مساعدة يمكنك إرفاق الكود الخاص بالملفين لمساعدتك.
يجب تتبع الأخطاء في كل صفحة منفصلة . وستجد رسالة الخطأ ويمكنك البحث عنها وإصلاحها . ونعم بالطبع تم تحديث وحذف وإضافة خصائص جديدة . ويمكنك تتبع التغيرات من خلال الموقع الرسمي : https://www.php.net/ChangeLog-8.php#PHP_8_2 https://www.php.net/releases/index.php
استخدام Base64 لتشفير النصوص قبل إرسالها إلى قاعدة البيانات ليس الحل الأفضل و لكنه أحيانا قد يكون حلا مؤقتا لبعض الحالات. وتوجد طرق أفضل للتعامل مع النصوص العربية في PHP وقواعد البيانات. حيث ان Base64 هو طريقة لترميز البيانات الثنائية إلى سلسلة من الأحرف للنقل عبر بروتوكولات مثل HTTP. لكنه لا يحل مشكلة ترميز النصوص نفسها. وعند إرسال النصوص العربية باستخدام Base64 يتم تحويل النص إلى شكل قابل للنقل ولكنه سيستهلك مساحة أكبر من النص الأصلي بسبب طريقة الترميز مما
إذا كنت تريد إستخدام خدمة mailgn فهي توفر مكتبة رسمية لها وهي mailgun-php يفضل إستخدامها مع الخدمة. وإليك الرابط الخاص بها على مستودع git : https://github.com/mailgun/mailgun-php أما بخصوص إستخدام الخدمة فيجب أولا إنشاء حساب على الموقع وبعد التسجيل ستحصل على API Key و Domain Name حيث ستحتاجهم لاستخدام مكتبة Mailgun. بعد ذلك يجب تثبيت المكتبة من خلال الأمر : composer require mailgun/mailgun-php وإرسال الرسالة أمر سهل يمكنك إستخدام الكود التالي : use Mailgun\Mailgun; $mg = Mailgun::create('API_KEY'); // يجب إستبدال _API_KEY
يبدوا أن إصدار php على الإستضافة المجانية هو 8.2 حيث منذ هذا الإصدار تم جعل التحذير هذا يظهر عندما تقوم بإضافة خصائص للصنف (class) ديناميكيا . أي أن الصنف Login لديك لا يحوي الخاصية pageFileName ولكنك تحاول إضافتها ديناميكا . لذلك الحل هو إضافة تلك الخاصية داخل الصنف هكذا مثلا : class Login { // إضافة الخاصية $pageFileName public $pageFileName; public function __construct() { // يمكنك الآن تعيين قيمة لـ $pageFileName $this->pageFileName = 'someFileName'; } } أو يمكنك تجاهل هذا
لا توجد أى مشكلة . ولكن يفضل الإلتزام بمعايير HTML حتى لا تحدث أى مشكلة غير متوقعة في المتصفح . وإليك الرابط الرسمي للعنصر link وستجد أنه يستخدم / دون الحاجة إلى إستخدام وسم إغلاق. <link href="main.css" rel="stylesheet" /> https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link
  • PHP
المشكلة لديك أنه لم يتم تفعيل إضافة php-curl . ولاحظ من المسار أنك تستعمل نظام تشغيل linux لذلك يجب عليك تثبيت php-curl هكذا : sudo apt-get install php-curl بعد ذلك يجب إعادة تشغيل الخادم من خلال الأمر : sudo service apache2 restart وإذا كنت تستخدم NGINX وليس Apache فيجب إستخدام الكود التالي : sudo service php7-fpm restart مع تغير إصدار php في الأمر السابق مع الإصدار الذي لديك.
وعليكم السلام ورحمة الله وبركاته. نعم الأكواد التي أرسلتها صحيحة ولا توجد بها أى أخطاء . حيث السطر الأول سيكون الصورة favicon الرئيسية له . أما السطر الأخرى فأنت تحدد احجام كل صورة والمسار الخاص بها وهذا جيد حيث يغطي جميع الاحتياجات الأساسية المتعلقة بال favicon . وأيضا لاحظت أنك تستخدم إمتداد ico. هو جيد حيث يدعم المتصفحات القديمة ولكن يفضل حاليا إستخدام صورة مثل PNG وغيرها . ولكن الأفضل من هذا هو إستخدام صيغة SVG حيث تدعم جميع المتصفحات
هذه ليست أخطاء بل تحذيرات أنه لم يتم السماح بإستخراج الملف حيث ليس لك الصلاحية المناسبة لذلك ويبدوا أن المشكلة بسبب عدم إمتلاك الصلاحيات أو أن المجلد zip ليس فارغا لهذا لا يستطيع الكتابة على الملفات الموجودة وإعادة إستخراجها. وبما أنك تقول أنه يتم الإستخراج بشكل صحيح فيبدوا أنه السبب الثاني حيث أعتقد أن الكود يتم تنفيذه مرتين وتحدث تلك المشكلة . لذلك أولا لنحل مشكلة الصلاحيات : يرجى إستخدام الأمر التالي لتغير صلاحيات مجلد zip لديك حتي تستطيع القراءة
الخاصية aspect-ratio في CSS تستخدم لتحديد نسبة العرض إلى الارتفاع للعناصر وذلك للحفاظ على الأبعاد المناسبة مما يساعد في الحفاظ على تناسق الشكل حتى مع تغيير حجم الشاشة أو عرض النافذة. مثال : div { aspect-ratio: 16 / 9; /* نسبة عرض إلى ارتفاع 16:9 */ width: 100%; /* العرض الكامل للعنصر الأساسي */ } في المثال السابق سيكون ارتفاع العنصر تلقائيا بنسبة 16:9 بناء على العرض. إذا تغير العرض سواء في ال css أو في تغير حجم الشاشة سيتغير
يوجد لديك حلين الحل الأول هو حفظ الصورة لديك على الخادم وبعد ذلك إستدعاء الصورة . ولحفظ الصورة يجب تمرير المسار الذي تريد حفظه فيها إلى الدالة imagepng هكذا : <?php $image = imagecreatetruecolor(200, 200); #you canuse image/jpeg and image/gif for jpg and gif images header('Content-Type: image/png'); $imagePath = 'saved_image.png'; // اسم الملف الذي تريد حفظ الصورة فيه imagepng($image, $imagePath); // حفظ الصورة imagedestroy($image); echo "تم حفظ الصورة في: $imagePath"; ?> وهكذا سيتم حفظ الصورة في نفس المجلد بإسم saved_image.png
وعليكم السلام ورحمة الله وبركاته. الفرق بين كتابة الكود من مبتدئ ومن خبير يتلخص في عدة جوانب: التنظيم: المبتدئ: قد يكتب الكود بشكل غير منظم وأكواد غير نظيفة مما يجعله صعب القراءة والفهم والتعديل عليه مستقبلا. الخبير: ينظم الكود بشكل جيد فيتم تقسيم الملفات وتنظيمها و يستخدم هياكل واضحة للأكواد مما يسهل فهمها وقرائتها والتعديل عليها مستقبلا . 2.الكفاءة: المبتدئ: قد يكتب كود طويل أو غير فعال مما يؤدي إلى بطء الأداء فأبسط شئ أنه قد لا يستطيع التعامل مع
نعم بالفعل هذا الكود الذي أرفقته يضمن أن الشيفرة التي بداخل الدالة سيتم تنفيذها فقط بعد تحميل المستند بالكامل. وهذه من خاصية إطار العمل jQuery حيث هذه طريقة مختصرة (shorthand ) لكتابة الكود التالي : $(document).ready(function() { // jQuery methods go here... }) يعني أنه عندما يكون DOM (كائن المستند) جاهزًا، سيتم تنفيذ الدالة التي تحتوي على الكود بداخلها. وهذا هي الطريقة الصحيحة لتفادي أى مشاكل حيث يجب الإنتظار حتى يتم تحميل جميع العناصر في الصفحة قبل تنفيذ الكود .
نعم بالفعل هذه الخاصية هي short hand لثلاث خصائص flex-grow و flex-shrink و flex-basis يمكنك وضع الثلاث قيم معا في سطر واحد . وما قمنا به هو وضع 1 لقيمة flex-grow و يمكنك إستبدال flex ب flex-grow إذا أردت . أما بخصوص عمل break بعد عدد عناصر معين يمكنك إستخدام الخاصية flex-basis هكذا : <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> .container { display: flex; flex-wrap: wrap; } .item { flex-grow: 1; flex-basis: 30%; box-sizing:
يمكنك إستخدام الخاصية flex للعناصر الأبناء والتي ستعطي للجميع نفس المساحة بالتساوى لتصبح جميع العناصر معا لها نفس عرض العنصر الأب . وهذا الكود كمثال لك : <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> .parent { display: flex; } .child { flex: 1; border: 1px solid #000; } </style> </head> <body> <div class="parent"> <div class="child">عنصر 1</div> <div class="child">عنصر 2</div> <div class="child">عنصر 3</div> </div> </body> </html> هنا بفضل الخاصية flex:1 للعناصر الأبناء ستجد أن تم تقسيم
لا ليس طبيعيا من المفترض أن لارافيل أيضا سريع ولكن من الممكن أن كثرة الملفات الخاصة بجافاسكريبت كما هو واضح من الصورة تؤثر علي ذلك .حيث أنك تستخدم العديد من المكتبات الخاصة بجافاسكريبت وهي مما تسبب أخذ وقتا كثيرا في تحميل تلك الملفات في المتصفح ومن ثم تشغيلها في المتصفح لتعمل فكل هذا يؤثر في سرعة ظهور الموقع. أولا يجب عليك التأكد هل الصفحة تحمل سريعا أي يظهر النص سريعا ولكن الملفات مثل css و javascript تأخذ وقتا للتحميل و
مرحبا صلاح . يفضل وضع مشكلتك على موقع الأكاديمية ليتم الرد عليك من قبل المتخصصين هناك . ولكن لا تقلق سيتم الرد عليك قريبا حيث أحيانا يتأخر الرد من مركز المساعدة لمدة تصل إلي 48 وهذا بسبب وجود ضغط حاليا علي مركز المساعدة ولكن سيتم الرد عليك ومساعدتك في تلك المشكلة إن شاء الله. لذلك من فضلك يرجي الإنتظار قليلا وبمجرد الرد عليك ستجد أن المشكلة قد تم حلها بإذن الله.
وبارك فيك أخي . ظننت أنك تريد تغير الأرقام الإنجليزية إلى العربية كما قلت أنك ترغب الان بتحويل الارقام الى العربية اذا ممكن. ولكن لابئس يمكنك تغير اللون كما أخبرتك عن طريق تغير .number { color: red; } إلى أي لون تريده وكما تريد اللون الأخضر فيمكنك التغير إلى التالي : .number { color: green; } وتغير ال regex إلى التالي لإستهداف الأرقام العربية : const modifiedText = text.replace(/([\u0661-\u0669]+)/g, '<span class="number">$1</span>'); حيث نطاق الأرقام العربية في نظام unicode هو من
يمكنك إضافة regex جديد لتعديل الأرقام الإنجليزية إلى العربية حيث ال regex الحالي يقوم فقط بتغير الألوان . ويمكنك إستخدام الكود التالي : var map = ["&\#1776;", "&\#1777;", "&\#1778;", "&\#1779;", "&\#1780;", "&\#1781;", "&\#1782;", "&\#1783;", "&\#1784;", "&\#1785;"] paragraph.innerHTML = paragraph.textContent.replace(/\d(?=[^<>]*(<|$))/g, function ($0) { return map[$0] }); ولتغير اللون نقوم بتغير color: red; إلى اللون الذى تريده وبما أنك تريد لون أخضر نغيره إلى التالي : .number { color: green; } وهكذا سوف يعمل معك إن شاء الله وإذا لم يعمل فيفضل
الحل يعتمد علي طريقة تسجيلك للدخول . فهل قمت بوضع ملف التحقق من أن المستخدم موجود في الجلسة في ملف صفحة الأدمن ؟ فإذا لم تقم بوضع الملف فلهذا لا يتم إعادة توجيهك لصفحة تسجيل الدخول حتي لو لم تقم بتسجيل الدخول بالفعل. لذلك قم بإستيراد ملف التحقق من تسجيل الدخول في جميع الصفحات التي تريد حمايتها وجعلها مسموحة فقط للمستخدم . والملف من المفترض أن يحتوي على الكود التالي : <?php session_start(); // تحقق من وجود متغيرات الجلسة التي
وعليكم السلام ورحمة الله وبركاته . الفرق الرئيسي بين استخدام الـ action="get" و action="post" في عناصر <form> في HTML هو كيفية إرسال البيانات من المستخدم إلى الخادم (السيرفر)، بالإضافة إلى بعض الاختلافات الأخرى: طريقة الإرسال: GET: يُرسل البيانات من خلال إضافتها إلى نهاية عنوان URL كمعلمات. يكون هذا واضحا للمستخدم بحيث يمكنه رؤية البيانات في شريط العنوان (URL). POST: يُرسل البيانات كجزء من الجسم (Body) لطلب HTTP، وليس على شكل معلمات في عنوان URL، لذا لا تظهر البيانات في شريط
وعليكم السلام ورحمة الله وبركاته. من المستحيل إرسال الإيميلات عن طريق ال html فقط حيث لإرسال الإيميلات ستحتاج إلى خادم ليقوم بهذا الأمر . ولكن توجد طريقة وهي فتح البريد الإلكتروني الخاص بالمستخدم ويرسل رسالة لك من خلال البريد الإلكتروني الخاص به . ولفعل ذلك سنستخدم كود جافا سكريبت والذى سيقوم بتحويلنا إلى عنوان mailto وهذا العنوان عندما يراه المتصفح سيقوم بفتح البريد الإلكتروني الإفتراضي . <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style type="text/css"> #contact-form
وعليكم السلام ورحمة الله وبركاته . نعم بالطبع يمكنك ذلك ولكن هذا يعتمد على حجم مشروعك وما الذى تريد تنفيذه . إذا كان الأمر بسيط يمكنك إستخدام تقنية مثل AJAX في JQuery أو أمر fetch في JavaScript للإتصال بالخادم عن طريق API ومن ثم عرض تلك البيانات في الصفحة ولكن كما وضحت لك يجب عليك إنشاء API لإحضار البيانات . ولكن إذا كان المشروع كبيرا فيفضل إستخدام أطر عمل مثل react و أى إطار عمل لواجهة أمامية و ذلك حيث