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

السؤال

نشر

سلام عليكم

عندي خانة المستخدم بيدخل فيها عنوان رابط ( لازم يكون خاص برفع الملفات زي one drive او google drive او drobbox ) الخ

 <input type="url" class="form-control image_url">

القيمة تم تمريرها بالمتغير التالي 

$image_url = $_POST['image_url'];

قمت بعمل مصفوفة كالتالي

    $White_List = array("https://drive.google.com/", "https://1drv.ms/"); //Add Allowed Website list Here

و قمت باستخدام دالة in_array 

    if (!in_array($image_url, $ًWhite_List)) {
        echo "error";
        return;
    }

 

البرنامج لا يقبل الا الرابط الحرفي 

يعني https://drive.google.com/ فقط

اي ملف مرفوع على جوجل درايف بيرفض و بيقولي خطأ

انا عاوزه يوافق على الملفات داخل هذا النطاق

و لو فيه طريقة اخليه يفحص بيها محتوى الرابط انه صورة فقط يا ريت لانه مواقع الرفع ما بتجيبليش الامتداد و ما بعرفش اعمل فلترة عليه

شكرا جزيلا

Recommended Posts

  • 1
نشر

يمكنك التحقق من ما ان كان العنوان المدخل رابطا نسبيا يحوي داخله أحد النطاقات المقبولة، بهاته الطريقة سيمكنك قبول الروابط المتفرعة عن هذا الاصل:

<?php

/**
* التحقق من ما ان كان رابط ما 
* نطاقا فرعيا عن احد النطاقات 
* المقبولة
* @param string $target_url
* @return boolean
*/
function is_valid_url($target_url)
{
    $White_List = array("https://drive.google.com/", "https://1drv.ms/"); //Add Allowed Website list Here
    foreach($White_List as $url) {
	    if(str_contains($target_url ,$url)) {
		    return true;
	   }
    }
    return false;
}



$user_url = "https://drive.google.com/path/to/target/drive";
echo is_valid_url($user_url);

لاحظ ان الوظيفة str_contains موجودة فقط في PHP8، ان كنت تستخدم نسخا دون هاته النسخة. يمكنك عمل ذات الفكرة عن طريق strpos مثلا: 

if(strpos($target_url ,$url) !== false) {
	return true;
}

أو stripos ايضا:

if(stripos($target_url ,$url) !== false) {
	return true;
}
  • 0
نشر
بتاريخ 1 دقيقة مضت قال محمد المصري5:

شكرا لك استاذنا

هل لو قمت بترقية اصدار php8 سيؤثر ذلك على الانظمة المبرمجة بالاصدارات الأقل ؟

قد يؤثر نعم، ولكن يجب قراءة أدلة التحديث للتأكد من سلامة عملية تحديث المشروع.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...