-
المساهمات
3049 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
13
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Chihab Hedidi
-
المشكلة الأساسية تكمن في المسافة الخاصة بكل عنصر أو بما تسمى في بايثون indentation في الجملة الشرطية else، حيث أنه في لغة بايثون، يجب أن تكون المسافات البادئة موحدة في الجمل الشرطية والأسطر التالية لها، لذا يجب أن يكون الكود الخاص بك بهذه الطريقة لتحل المشكلة: colors = [] colors_0 = input("add the first color you like: \n") colors.append(colors_0) colors_1 = input("Do you want to add more colors? yes or no? \n").lower() if colors_1 == 'yes': far_color = input("add another color to the list:\n") colors.append(far_color) print(f"the colors you like are: {colors}") else: print(f"the color you like is: {colors}")
- 6 اجابة
-
- 1
-
-
المشكل لم يمس المستخدمين العاديين و السبب هو أنه يوجد برنامج إسمه Falcon Sensor و هو من تطوير شرك CrowdStrike و هذا البرنامج يعتبر مشهور بين الشركات لأنه يعمل مثل الأنتيفايرس فهو يحمي الكومبيوتر من الفيروسات و الهجمات و لكن يعتبر متقدم جدا لذلك تستخدمه الشركات و للعمل به يحتاج للوصول إلى ملفات النواة الخاصة بالجهاز من أجل إرسال تحديثات سريعة في كل مرة للمستخدمين، حيث يتم إرسالها على شكل ملف، هذا الملف يقوم بتحميل التحديث و يتم تطبيقه، و لكن ما حدث هو أن هذا الملف هذه المرة كان فيه مشكل و بالتالي تم تحميله و عند تشغيله يتم إكتشاف المشكل من النواة الخاصة بالجهاز و لا يشتغل الجهاز و تظهر الشاشة الزرقاء، و بما أن الملف محمل في الجهاز فكل ما يتم إشتعال الجهاز يتم التحديث مرة أخرى و تبقى دائما نفس المشكلة، و الحل هو أن يتم تشغيل النظام في ال safe mode حيث بهذه الطريقة لا تشتغل التطبيقات الخارجية ثم الإنتقال إلى هذا الملف و حذفه، و بما أنني لا نستخدم هذا البرنامج لم نتضرر. أما بالنسبة للفرق بين النسخة المجانية و المدفوعة، فالمجانية تكون محدودة في المميزات ولا تتحصل على كل التحديثات، بينما المدفوعة تكون فيها تحديثات دائما و ميزات إضافية.
- 5 اجابة
-
- 1
-
-
تعمل AMP على تبسيط وتقليل حجم الشيفرة البرمجية للموقع لجعله أسرع وأكثر استجابة عند التحميل، وهذا بفضل تبسيط الشيفرة البرمجية وتقليل حجمها، لكن يجب أن تعرف أن AMP يفرض قيود على بعض عناصر التصميم والشيفرة البرمجية، مما يمكن أن يؤثر على مرونة تصميم الموقع، كما أنك قد تحتاج إلى صيانة إضافية وضمان توافق الصفحات مع معايير AMP. بالنسبة لموقعك يمكن أن يكون استخدام AMP فكرة جيدة خاصة إذا كان المستخدمون يعتمدون على الوصول السريع إلى المعلومات، مثل حالة الطقس الحالية والتنبؤات، حيث أن سرعة التصفح يمكن أن تحسن من تجربة المستخدم وتزيد من عدد الزوار الذين يعودون إلى موقعك، و خذ بعين الإعتبار أيضا أنه قد يفرض بعض القيود على كيفية عرض الإعلانات، مما يمكن أن يؤثر على الإيرادات من الإعلانات لديك في حالة كنت تعتمد عليها كدخل. يمكنك أن تطلع أكثر على كيف يمكنك القيام بذلك من خلال هذه المقالات:
- 4 اجابة
-
- 1
-
-
أحببت اللعبة كثيرا، يوجد لبعض الأخطاء تحدث في بعض الأحيان حيث لا يتم تجميع مربعين معين و إنما يختفي أحد المربعات و تبقى نفس القيمة، كما أنه يمكنك تحسينها بحيث تضيف بعض الأصوات عند تحرك المربعات و عند تجميع الأرقام بحيث يكون لك تجميع صوت مميز، و أيضا حاول تسريع التحريك قليلا أراه بطيئ بعض الشيء، و لكن بصفة عامة اللعبة ممتازة، أهنئك على ذلك.
- 7 اجابة
-
- 1
-
-
التقنيات التي ذكرتيها One-Hot Encoding، Label Encoding، وOrdinal Encoding هي تقنيات تستخدم لتحويل البيانات الفئوية إلى بيانات عددية حتى يمكن استخدامها في نماذج التعلم الآلي. سنبدأ ب One-Hot Encoding حيث تقوم بتحويل كل قيمة فئوية إلى مجموعة من الأعمدة الثنائية (0 أو 1)، حيث يكون لكل فئة عمود منفصل، لنفترض أن لدينا عمودا يحتوي على الألوان: ["Green", "Red", "Blue"]. ،لإستخدام هذه القيم في تدريب النموذج لدينا نحتاج إلى تحويلها إلى أرقام و بالتالي تصبح بهذه الطريقة: أما بالنسبة ل Label Encoding فالفكرة تقوم بتحويل كل فئة إلى رقم صحيح فريد،لنفترض أن لدينا نفس العمود بألوان مختلفة، عند تحويلها تصبح بهذا الشكل حيث كل رقم يمثل لون معين: و أخيرا Ordinal Encoding هذه التقنية تستخدم عندما تكون هناك علاقة ترتيبية بين الفئات، وتقوم بترتيب الفئات بناء على ترتيب محدد، نفترض أن لدينا عمود يحتوي على درجات تعليمية: ["Poor", "Good", "Very Good", "Excellent"]، بعد تحويلها تصبح بهذه الطريقة. و اختيار نوع التشفير يعتمد على طبيعة البيانات والعلاقة بين الفئات، فإذا كانت الفئات غير ترتيبية، فإن One-Hot Encoding هو الخيار الأمثل، و إذا كانت الفئات ترتيبية ولها معنى، فإن Ordinal Encoding هو الأنسب، بينما Label Encoding يمكن استخدامه في حال كانت العلاقة الترتيبية غير هامة ولكن يجب الحذر من إدخال ترتيب غير مقصود.
- 1 جواب
-
- 1
-
-
من داخل Vs code قم بالضغط على الإعدادات تجدها في اليمين على الأسفل، ثم إختر settings، بعدها في خانة البحث أكتب auto closing tag و ستظهر لك هذه الخانات قم بتفعيلها في ثلاثة: بهذه الطريقة سيتم غلق الوسم بشكل أوتوماتيكي.
- 5 اجابة
-
- 1
-
-
مرحبا زياد، ليس عليك حذفها يمكنك جعلها خاصة حيث لا يستطيع أحد يراها إلا أنت إلى أن تنتهي من إكمال الإختبار لتسهل عمل المختبرين، بعدها قم بإرجاعها مرة أخرى إلى مشاريع تظهر للعامة بعد الإنتهاء حتى لا تخسر هذه المشاريع.
- 2 اجابة
-
- 1
-
-
دورة تطوير واجهات المستخدم تركز على العديد من الأساسيات والتقنيات المختلفة، في الدورة ستتعلم: - أساسيات تطوير الويب باستخدام HTML و CSS و JavaScript و Node js. - تطبيقات عملية باستخدام HTML و CSS و JavaScript. - بناء متجر إلكتروني باستخدام تقنيات Bootstrap 5 و Sass و Webpack. - استخدام إطار تطوير المواقع الثابتة Hugo. الدورة تركز بشكل أكبر على تعليم الأساسيات وتطوير التطبيقات باستخدام HTML و CSS و JavaScript، بالإضافة إلى استخدام Bootstrap 5 و Sass و Webpack وHugo، و هذه التقنيات تجعلك جاهز لتعلم أي إطار عمل آخر بسهولة.
- 3 اجابة
-
- 1
-
-
يمكنك استخدام التعليقات، و تعتمد طريقة التعليق على لغة البرمجة التي تستخدمها، فمثلا في لغة بايثون يمكنك استخدام رمز # لتعليق سطر واحد أو استخدام ثلاثة علامات اقتباس ثلاثية لتعليق مقطع من الكود: # print("Hello, World!") هذا سطر معلق ولن يتم تنفيذه print("Hello, World!") # هذا السطر سيتم تنفيذه و في لغة جافا سكريبت، يمكنك استخدام // لتعليق سطر واحد أو /* ... */ لتعليق مقطع من الكود: //console.log("Hello, World!"); هذا سطر معلق ولن يتم تنفيذه console.log("Hello, World!"); // هذا السطر سيتم تنفيذه
-
نحن لا نجيب على الأسئلة الاختبارية مباشرة، ولكن سأشرح لك طريقة الحل حتى يتسنى لك حل التمارين بمفردك، بالنسبة للسؤال الأول بخصوص إدراج بيانات لخمسة طلاب، أولا قم بتعريف هيكل يحتوي على الحقول المطلوبة (id, name, mark)، يمكنك إستخدام مصفوفة لتخزين بيانات الطلاب الخمسة، و أيضا تحتاج إلى استخدام حلقة لإدخال بيانات كل طالب. بالنسبة للسؤال الثاني قم بتعريف هيكلين وإضافة حقول إلى هيكل الطالب، تحتاج إلى تعريف هيكل للطالب يحتوي على الحقول (id, name, mark)، و تعريف هيكل آخر للبيانات الأكاديمية يحتوي على الحقول (department, year)، ثم قم بدمج الهيكلين عبر تعريف هيكل رئيسي يحتوي على الهيكلين السابقين، ثم إستخدم المصفوفة لتخزين بيانات الطلاب عن طريق إستخدام الحلقات، بعدها قم بطباعة بيانات الطلاب للتأكد من إدخالها بشكل صحيح. يمكنك الإطلاع على هذه المقالات لفيدك بشكل أفضل:
-
سأحاول شرح الكود بالتفصيل، أولا لدينا جملة التكرار تبدأ بالمتغير i بقيمة 8 وتستمر في التكرار طالما أن i أكبر من 0، في كل مرة يقل i بمقدار 1 (i--)، ثما لدينا جملة الطباعة: console.log('#'.repeat(i)); في كل دورة، تقوم بطباعة سلسلة من # بطول i، لذلك نتيجة الكود ستكون: ######## ####### ###### ##### #### ### ## # إذا أردنا طباعة المثلث بشكل عكسي، حيث يبدأ بسطر واحد ويزيد حتى 8 أسطر، يمكننا تعديل جملة التكرار بالشكل التالي: for (let i = 1; i <= 8; i++) هنا نبدأ بالمتغير i بقيمة 1 ونستمر في التكرار طالما أن i أقل من أو يساوي 8، في كل مرة يزيد i بمقدار 1 (i++). نتيجة هذا الكود ستكون: # ## ### #### ##### ###### ####### ########
- 2 اجابة
-
- 1
-
-
إطلعت على موقعك من قبل على منصة حسوب io و هو شغال، لكن تحتاج إلى إنقاص عدد المعلومات التي في الصفحة و لا تحتاج إلى وضع التفاصيل الخاصة بكل الأيام القادمة، و إنما فقط إعتمد على البساطة مثل الصورة التي أرسلت، بحيث تكون معلومات أكثر فقط على اليوم الحالي، و في حالة شخص ما أراد معلومات أكثر على الأيام القادمة يمكنه الضغط على اليوم ليتم عرض هذه التفاصيل.
-
إختيار التصميم المناسب يعتمد بشكل أكبر على الثيم الخاص بالموقع يجب أن يكون ملائم للألوان التي هناك، و بالبحث عن تصميم جاهز ربما لن تجد ما يناسبك لذا أفضل شيء هو إنشاء تصميم خاص بك، يمكنك إستلهام الافكار من التصاميم السابقة و بعدها تصميم الواجهة بإستخدام موقع Figma، كما أن مجال الأخبار تقريبا لديه نفس الواجهات التي تظهر درجات الحرارة مع إختلاف طفيف في الألوان مثل الصورة: لذا حاول جعله بهذه الطريقة مع التغيير في الألوان التي تناسب موقعك.
-
هذا الأمر لا يقتصر على تأثيرات سلبية فقط، ففيه أيضا بعض الجانب الإيجابي، فتصميم المواقع كالتطبيقات يمكن أن يوفر تجربة مستخدم سلسة ومتكاملة، مع استجابة سريعة وتفاعلية عالية، و يمكنك الاستفادة من تقنيات مثل AJAX و WebSockets لتحسين تفاعلية الموقع وتقليل زمن التحميل، و أيضا يمكن الوصول إلى تطبيقات الويب بسهولة عبر المتصفح، مما يجعلها متاحة على مختلف الأجهزة بدون الحاجة إلى تثبيت تطبيق منفصل، و يمكن تحديث الموقع بسهولة ودون الحاجة إلى أن يقوم المستخدمون بتنزيل تحديثات. و لكن هذا الأمر قد يتطلب موارد أكثر من المتصفح والجهاز، مما قد يؤدي إلى أداء أبطأ إذا لم يتم تحسينه بشكل جيد، و أيضا التطبيقات تعتمد بشكل كبير على الاتصال بالإنترنت، مما قد يسبب مشاكل في الوصول إذا كان الاتصال ضعيفا أو غير مستقر. فالقرار هنا يعتمد على احتياجات جمهورك المستهدف والأهداف التي تريد تحقيقها من خلال موقعك، إذا كنت تبحث عن تحسين تجربة المستخدم وتقديم خدمات تفاعلية ومعقدة، فإن تحويل موقعك إلى تطبيق ويب قد يكون خيارا جيدا، ولكن إذا كانت البساطة والاستقرار هما أولوياتك، فقد يكون من الأفضل الالتزام بتصميم تقليدي للموقع.
- 3 اجابة
-
- 1
-
-
لا تستطيع تحديد حجم واحد أي يكون أكبر أو اصغر من قيمة واحدة فهذه الطريقة غير عملية و حتى لو يظهر لك الملف على أن حجمه عشرة ميغابايت، لكن لن تجدها 10000 تماما بل سيكون أرقام عشوائية و مختلفة بين الملف و الآخر لذا من الأفضل جعلها أقل أو تساوي، وأيضا هذا تعديل ليقبل فقط ملفات jpg: <?php $uploadOk = 1; $targetDir = "uploads/"; $targetFile = $targetDir . basename($_FILES["file"]["name"]); $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION)); // التحقق من أن الملف هو صورة $check = getimagesize($_FILES["file"]["tmp_name"]); if ($check === false) { echo "الملف ليس صورة."; $uploadOk = 0; } // التحقق من حجم الملف if ($_FILES["file"]["size"] > 100000) { echo "عذراً، حجم الملف كبير جداً."; $uploadOk = 0; } // التحقق من أن الملف هو بتنسيق JPEG if($imageFileType != "jpg" && $imageFileType != "jpeg") { echo "عذراً، الملفات المسموح بها هي ملفات JPG فقط."; $uploadOk = 0; } // إذا كانت جميع الشروط مستوفاة، قم برفع الملف if ($uploadOk == 1) { if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) { echo "تم رفع الملف بنجاح."; } else { echo "عذراً، حدث خطأ أثناء رفع الملف."; } } ?>
-
Vercel مصمم بشكل أساسي لاستضافة التطبيقات الأمامية و أيضا serveless functions، لكنه ليس مثاليا لاستضافة نظام خلفي كامل باستخدام Laravel وقاعدة بيانات، لكن يمكنك ذلك إذا كنت تفضل Vercel، وأيضا يرجى مراعاة أن Vercel يمكنه تنفيذ الوظائف لمدة 10 ثوان كحد أقصى،و لديه 1024 ميجابايت من ذاكرة الوصول العشوائي كحد أقصى و هذا بالنسبة للحساب المجاني. و ربما تجد خدمات أفضل مثلHeroku، DigitalOcean، أو كحل أخير إذا كنت تفضل استخدام Vercel، يمكنك التفكير في فصل الواجهة الأمامية عن الخلفية، حيث تستضيف الواجهة الأمامية على Vercel وتستضيف الواجهة الخلفية على إحدى الخدمات التي ذكرتها.
- 1 جواب
-
- 1
-
-
أرجوا إرسال الإيرور اللي يطلعلك
- 9 اجابة
-
- 1
-
-
هناك خطأ في المقارنة التي تستخدمها للتحقق من حجم الملف، يجب أن تستخدم مقارنة أكبر أو تساوي بدلا من = لضمان أن الملف لا يتجاوز الحجم المحدد.
- 9 اجابة
-
- 1
-
-
يمكنك إستخدام الكود التالي: <!DOCTYPE html> <html lang="ar"> <head> <meta charset="UTF-8"> <title>نموذج مع خيارات مرتبطة</title> </head> <body> <?php $infoError = $selectError = ""; $info = $select1 = $select2 = $select3 = $select4 = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { $info = $_POST['info']; $select1 = $_POST['select1']; $select2 = $_POST['select2']; $select3 = $_POST['select3']; $select4 = $_POST['select4']; if ($info != 780) { $infoError = "يرجى ملء الحقل بالرقم الصحيح."; } if (empty($select1) || empty($select2) || empty($select3) || empty($select4)) { $selectError = "يرجى اختيار قيمة لكل قائمة منسدلة."; } if (empty($infoError) && empty($selectError)) { echo "تم إرسال النموذج بنجاح!"; // يمكنك إضافة الكود لمعالجة النموذج هنا } } ?> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> <label for="info">Info:</label> <input type="text" id="info" name="info" value="<?php echo htmlspecialchars($info);?>"> <span style="color:red;"><?php echo $infoError;?></span><br><br> <label for="select1">اختر الخيار الأول:</label> <select id="select1" name="select1"> <option value="" <?php if ($select1 == "") echo "selected";?>>اختر...</option> <option value="option1" <?php if ($select1 == "option1") echo "selected";?>>خيار 1</option> <option value="option2" <?php if ($select1 == "option2") echo "selected";?>>خيار 2</option> </select><br><br> <label for="select2">اختر الخيار الثاني:</label> <select id="select2" name="select2"> <option value="" <?php if ($select2 == "") echo "selected";?>>اختر...</option> <option value="option1" <?php if ($select2 == "option1") echo "selected";?>>خيار 1</option> <option value="option2" <?php if ($select2 == "option2") echo "selected";?>>خيار 2</option> </select><br><br> <label for="select3">اختر الخيار الثالث:</label> <select id="select3" name="select3"> <option value="" <?php if ($select3 == "") echo "selected";?>>اختر...</option> <option value="option1" <?php if ($select3 == "option1") echo "selected";?>>خيار 1</option> <option value="option2" <?php if ($select3 == "option2") echo "selected";?>>خيار 2</option> </select><br><br> <label for="select4">اختر الخيار الرابع:</label> <select id="select4" name="select4"> <option value="" <?php if ($select4 == "") echo "selected";?>>اختر...</option> <option value="option1" <?php if ($select4 == "option1") echo "selected";?>>خيار 1</option> <option value="option2" <?php if ($select4 == "option2") echo "selected";?>>خيار 2</option> </select> <span style="color:red;"><?php echo $selectError;?></span><br><br> <input type="submit" value="إرسال"> </form> </body> </html> حيث نستخدم كود PHP للتحقق من القيم عند إرسال النموذج، و نتحقق من أن كل قائمة منسدلة تحتوي على قيمة غير فارغة، إذا كانت هناك أخطاء، نعرض رسائل خطأ بجانب الحقول المعنية، أما إذا لم تكن هناك أخطاء، نظهر رسالة نجاح.
- 9 اجابة
-
- 1
-
-
للتحقق من قيمة الحقل info يمكنك إستخدام جافاسكريبت مع php حيث نفرض أنه يوجد لدينا نموذج HTML بالشكل التالي: <!DOCTYPE html> <html lang="ar"> <head> <meta charset="UTF-8"> <title>نموذج مع تحقق</title> </head> <body> <form name="myForm" action="submit.php" onsubmit="return validateForm()" method="post"> <label for="info">Info:</label> <input type="text" id="info" name="info"> <input type="submit" value="إرسال"> </form> </body> </html> بعدها نستخدم كود php لمراقبة الطلب و التأكد من القيمة: <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $info = $_POST['info']; if ($info != 780) { echo "يرجى ملء الحقل بالرقم الصحيح."; } else { echo "تم إرسال النموذج بنجاح!"; // يمكنك إضافة الكود لمعالجة النموذج هنا } } ?> نقوم بإنشاء ملف PHP باسم submit.php يتحقق الكود من طريقة الطلب للتأكد من أن النموذج تم إرساله باستخدام طريقة POST، ثم نحصل على قيمة الحقل "info" من بيانات النموذج، إذا كانت القيمة ليست 780، نظهر رسالة خطأ. إذا كانت القيمة صحيحة، نظهر رسالة نجاح. أما للتحقق من نوع الملف المقبول على أنه صورة في نموذج HTML باستخدام PHP نقوم بإنشاء ملف PHP باسم upload.php، بعدها نحصل على معلومات الملف المرفوع من الحقل "image"، و نستخدم دالة explode لفصل اسم الملف للحصول على الامتداد، ثم نحوله إلى حروف صغيرة باستخدام strtolower، ثم نتحقق من أن الامتداد ضمن الامتدادات المسموح بها (JPG, JPEG, PNG, GIF)، إذا كان الامتداد صحيحا، نتحقق من عدم وجود أخطاء أثناء رفع الملف (fileError === 0)، ثم نظهر رسالة نجاح إذا تم رفع الملف بنجاح، أو رسالة خطأ مناسبة إذا كانت هناك مشكلة: <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $file = $_FILES['image']; $fileName = $file['name']; $fileTmpName = $file['tmp_name']; $fileSize = $file['size']; $fileError = $file['error']; $fileType = $file['type']; $fileExt = explode('.', $fileName); $fileActualExt = strtolower(end($fileExt)); $allowed = array('jpg', 'jpeg', 'png', 'gif'); if (in_array($fileActualExt, $allowed)) { if ($fileError === 0) { if ($fileSize < 5000000) { // الحد الأقصى لحجم الملف 5MB $fileNameNew = uniqid('', true).".".$fileActualExt; $fileDestination = 'uploads/'.$fileNameNew; move_uploaded_file($fileTmpName, $fileDestination); echo "تم تحميل الملف بنجاح!"; } else { echo "حجم الملف كبير جدًا!"; } } else { echo "حدث خطأ أثناء تحميل الملف!"; } } else { echo "يرجى تحميل ملفات الصور فقط (JPG, JPEG, PNG, GIF)."; } } ?>
- 9 اجابة
-
- 1
-
-
الذكاء الاصطناعي لم يكن أبدا مثاليا ولن يكون أيضا، ودائمًا سيكون هناك ثغرات بهذه الطريقة ومع مرور الوقت سيتم اكتشافها، لكن على حسب علمي، فإن Gemini من قبل يعطيك الروابط في حالة طلبت منه ذلك، ولكن في حالة استخدام ChatGPT فإنه لا يعطيك الروابط، و تختلف المنصات والتطبيقات التي تعتمد على الذكاء الاصطناعي في طريقة التعامل مع الطلبات المختلفة، بينما يمكن أن يقدم بعض الأنظمة الروابط بشكل مباشر.
-
نعم يمكنك ذلك يجب عليك إنشاء الفورم في ملف HTML و الذي يحتوي على ال input، ثم قم بإنشاء ملف PHP للتعامل مع رفع الملفات، سأحاول كتابة كود بسيط يقوم بنفس العمل لكن يجب عليك تعديله حسب حاجتك: <?php if (isset($_POST['submit'])) { // حدد مسار المجلد حيث سيتم تخزين الصور $target_dir = "img/"; // قم بإنشاء مصفوفة تحتوي على أسماء الحقول $inputs = ['img1', 'img2', 'img3', 'img4', 'img5']; foreach ($inputs as $input) { // احصل على معلومات الملف $target_file = $target_dir . basename($_FILES[$input]['name']); $uploadOk = 1; $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION)); // تحقق مما إذا كان الملف صورة بالفعل $check = getimagesize($_FILES[$input]["tmp_name"]); if ($check !== false) { echo "File is an image - " . $check["mime"] . ".<br>"; $uploadOk = 1; } else { echo "File is not an image.<br>"; $uploadOk = 0; } // السماح بأنواع معينة فقط من الملفات if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) { echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.<br>"; $uploadOk = 0; } // تحقق مما إذا كان $uploadOk يساوي 0 بسبب خطأ if ($uploadOk == 0) { echo "Sorry, your file was not uploaded.<br>"; // إذا كان كل شيء على ما يرام، حاول رفع الملف } else { if (move_uploaded_file($_FILES[$input]["tmp_name"], $target_file)) { echo "The file ". htmlspecialchars(basename($_FILES[$input]["name"])). " has been uploaded.<br>"; } else { echo "Sorry, there was an error uploading your file.<br>"; } } } } ?> بهذه الطريقة ستتأكد من أن الملف هو صورة، كما نسمح بأنواع معينة فقط من الملفات (JPG، JPEG، PNG، وGIF)، نحاول رفع الملف إلى المجلد المحدد إذا لم يكن هناك أي أخطاء، وايضا كخطوة أخيرة تأكد من أن المجلد img لديه أذونات الكتابة المناسبة للسماح بعملية رفع الملفات.
- 2 اجابة
-
- 1
-
-
نعم شغالة هذا كان مثال بسيط فقط، إبحث أكثر لتجد الحل الكامل مع المشاكل اللي يمكن تواجهك لأنو مثل ما قتلك الطريقة محدودة بعض الشيء في الإستعمال.
-
يمكنك استخدام الدالة mail() المدمجة في PHP، حيث يجب عليك أولا إنشاء نموذج HTML حيث يمكن للمستخدمين إدخال معلوماتهم، بعدها قم بإنشاء ملف PHP لمعالجة البيانات المرسلة من النموذج وإرسال البريد الإلكتروني لنفرض على سبيل المثال يكون بالشكل التالي: <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { // الحصول على البيانات من النموذج $name = htmlspecialchars($_POST['name']); $dob = htmlspecialchars($_POST['dob']); $email = htmlspecialchars($_POST['email']); // موضوع الرسالة $subject = "تأكيد حجز موعد"; // محتوى الرسالة $message = "مرحبا $name,\n\nلقد تم استقبال طلبك وتم الحجز بنجاح. شكراً لتواصلك معنا.\n\nمع تحياتنا،\nفريق الدعم"; // رؤوس الرسالة $headers = "From: support@yourwebsite.com" . "\r\n" . "Reply-To: support@yourwebsite.com" . "\r\n" . "X-Mailer: PHP/" . phpversion(); // إرسال البريد الإلكتروني if (mail($email, $subject, $message, $headers)) { echo "تم إرسال رسالة تأكيد إلى بريدك الإلكتروني."; } else { echo "حدث خطأ أثناء إرسال البريد الإلكتروني. يرجى المحاولة مرة أخرى."; } } ?> نستخدم هنا الدالة htmlspecialchars() لتجنب أي مشاكل متعلقة بأمان البيانات المدخلة، بعدها الدالة mail() لإرسال البريد الإلكتروني، و تحتوي الدالة على أربع معطيات: البريد الإلكتروني المستلم، موضوع الرسالة، محتوى الرسالة، والرؤوس. يجب أن تعرف أن هذه أسهل طريقة ولكنها غير مشهورة قليلة لأنها محدودة بعض الشيء، أما أشهر مكتبة هي PHPMailer، ستجد هنا شرح مفصل لكيف تستخدمها: https://io.hsoub.com/php/56694-هل-هنالك-شرح-مفصل-لكيفية-إستخدام-phpmailer
- 3 اجابة
-
- 1
-
