صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 19

الموضوع: بديل الامر scandir بتعديله الى الامر cpgscandir

  1. #1

    بديل الامر scandir بتعديله الى الامر cpgscandir





    درس php : بديل الامر ( ) scandir بتعديله الى الامر ( ) cpgscandir

    واجهتني هذه المشكله بالصدفه مع الاستضافه التى اتعامل بها لاحظت ان بعض خواص وخصائص المنتدي لا تعمل وتظهر لى رسالة خطا
    كود PHP:
    Warning [2scandir() has been disabled for security reasons 
    بان الامر ( ) scandir يوجد به مشكله علمت ان السيرفر موقف هذه الداله وعلى حسب كلامه انه موقفها لامان السيرفر ولا سبيل بفتح الداله لى وكان يوجد البديل والحمد لله تم عمل الاسكربت على اكمل وجه بتغير شكل الداله كما بالمثال التالي
    كود PHP:
    function scandir($dir, &$expic_array)

    to

    function cpgscandir($dir, &$expic_array)

    then the calls on 305 from

    scandir
    ($dir $directory '/'$expic_array);

    to cpgscandir($dir $directory '/'$expic_array);

    and 
    line 393 from

       
    if (scandir($HTTP_GET_VARS['startdir'] . '/'$expic_array)) {


    to    if (cpgscandir($HTTP_GET_VARS['startdir'] . '/'$expic_array)) { 
    وهو تحويل
    scandir
    الى
    cpgscandir
    اتمني يكون المعلومه مفيده وتنفع من ظهرت معه هذه المشكله

    تحياتي الخالصه








  2. #2
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    947


    جزاك الله خيرا





    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير

  3. #3
    عضو شرف
    تاريخ التسجيل
    Apr 2002
    المشاركات
    1,379


    الكود السابق غير صحيح ولا اعلم كيف يتم تنفيذه , لا يمكن ان تعمل داله باسم مختلف وتستدعي بداخلها الداله الممنوعه .





    __________________
    ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
    الاتصال: daif@daif.net او جوال: 0556639884
    الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .

  4. #4


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

    على كل حال راجع هذا الدرس
    Coppermine batch upload






  5. #5
    عضو شرف
    تاريخ التسجيل
    May 2007
    المشاركات
    1,647


    أستاذي ضيف الله ، العملية ليست كما ذكرت في ردك .. لو راجعت الكود مرة أخرى تجده عبارة عن شرح وليس كود ، مرة يذكر السطر الذي يجب استبداله ، ومرة يذكر السطر البديل ، وهكذا ..

    أي استبدل:
    كود PHP:
    function scandir($dir, &$expic_array
    بـ:
    كود PHP:
    function cpgscandir($dir, &$expic_array
    واستبدل:
    كود PHP:
    scandir($dir $directory '/'$expic_array); 
    بـ:
    كود PHP:
    cpgscandir($dir $directory '/'$expic_array); 
    واستبدل:
    كود PHP:
    if (scandir($HTTP_GET_VARS['startdir'] . '/'$expic_array)) { 
    بـ:
    كود PHP:
     if (cpgscandir($HTTP_GET_VARS['startdir'] . '/'$expic_array)) { 
    يبدو أن هذا الشرح يخص سكربتاً معيناً ، ويبدو أنه سكربت منتدى لا أعلم ما هو ..

    وشكراً لصاحب الموضوع

    تحياتي، أشرف السمهوري





    __________________
    # اتبعني على Twitter
    # عِرفان ساهم ببناء المحتوى العربي العلمي على الإنترنت!

  6. #6
    عضو شرف
    تاريخ التسجيل
    May 2007
    المشاركات
    1,647


    نسيت أن أوضّح العملية من خلال فهمي لما جرى من تعديلات ..

    على الأغلب أن السكربت يقوم بالتحقق من وجود دالة scandir ، فإن كانت غير موجودة يتم تعريفها من جديد بنفس الاسم .. وفي مواقع أخرى من السكربت يتم استدعاء هذه الدالة ..

    بما أن هذه الدالة معطّلة ، تم تعديل اسم الدالة الجديدة ، بحيث يتم دائماً استدعاء الدالة الجديدة وبالاسم الجديد .. لأنها إن كانت معطلة لا يمكن تعريف دالة جديدة باسم القديمة ، لأنها موجودة ولكن معطلة ..

    أتمنى أن تكون الفكرة قد وصلت ..

    أطيب التحيات، أشرف السمهوري





    __________________
    # اتبعني على Twitter
    # عِرفان ساهم ببناء المحتوى العربي العلمي على الإنترنت!

  7. #7
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    947


    نسيت أن أوضّح العملية من خلال فهمي لما جرى من تعديلات ..

    على الأغلب أن السكربت يقوم بالتحقق من وجود دالة scandir ، فإن كانت غير موجودة يتم تعريفها من جديد بنفس الاسم .. وفي مواقع أخرى من السكربت يتم استدعاء هذه الدالة ..

    بما أن هذه الدالة معطّلة ، تم تعديل اسم الدالة الجديدة ، بحيث يتم دائماً استدعاء الدالة الجديدة وبالاسم الجديد .. لأنها إن كانت معطلة لا يمكن تعريف دالة جديدة باسم القديمة ، لأنها موجودة ولكن معطلة ..

    أتمنى أن تكون الفكرة قد وصلت ..

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

    كود PHP:
    function CPGscandir($dir, &$expic_array)
    {
     
    // ## $dir = str_replace(".","" ,$dir);
     
    static $dir_id 0;
     static 
    $count 0;
     static 
    $pic_id 0;
     
    $pic_array = array();
     
    $dir_array = array();
     
    getfoldercontent($dir$dir_array$pic_array$expic_array);
     if (
    count($pic_array) > 0) {
      
    $dir_id_str sprintf("d%04d"$dir_id++);
      echo 
    dirheader($dir$dir_id_str);
      foreach (
    $pic_array as $picture) {
       
    $count++;
       
    $pic_id_str sprintf("i%04d"$pic_id++);
       echo 
    picrow($dir $picture$pic_id_str$dir_id_str);
      }
     }
     if (
    count($dir_array) > 0) {
      foreach (
    $dir_array as $directory) {
       
    CPGscandir($dir $directory '/'$expic_array);
      }
     }
     return 
    $count;

    طبعا اذا حللت الكود ستجده يعتمد على function اخرى وهي التي تؤدي الوظيفة الرئيسية وهي getfoldercontent
    كود PHP:
     
    function getfoldercontent($folder, &$dir_array, &$pic_array, &$expic_array)
    {
     global 
    $CONFIG;
     
    $dir opendir($CONFIG['fullpath'] . $folder);
     if (
    $CONFIG['thumb_method'][0] == 'g') {
      
    $img_to_find 'png|jpg|jpeg|gif';
     } else {
      
    //$CONFIG['allowed_file_extensions'] == GIF/PNG/JPG/JPEG/TIF/TIFF
      
    $img_to_find str_replace('/''|'strtolower($CONFIG['allowed_file_extensions']));
     }
     while (
    $file readdir($dir)) {
      if (
    is_dir($CONFIG['fullpath'] . $folder $file)) {
       if (
    $file != '.' && $file != '..') {
        
    $dir_array[] = $file;
       }
      } elseif (
    is_file($CONFIG['fullpath'] . $folder $file) && preg_match('#\.('.$img_to_find.')$#i'$file)) {
       if (
    strncmp($file$CONFIG['thumb_pfx'], strlen($CONFIG['thumb_pfx'])) != && strncmp($file$CONFIG['normal_pfx'], strlen($CONFIG['normal_pfx'])) != && $file != 'index.html') {
        
    $pic_array[] = $file;
       }
      }
     }
     
    closedir($dir);
     
    natcasesort($dir_array);
     
    natcasesort($pic_array);

    طبعاً هناك متغيرات ومسارات معرفة مسبقاً في ال config و مفعلة ك global في نفس الفنكشن لتؤدي وظائفها في الاسكربت
    كود PHP:
    global $CONFIG






    التعديل الأخير تم بواسطة مهندس مصرى ; 03-04-2009 الساعة 06:16 PM
    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير

  8. #8
    عضو فعال
    تاريخ التسجيل
    Jul 2008
    المشاركات
    1,109


    جزاك الله خيرا اخي الكريم

    في سؤال هل داله cpgscandir هل هي داله في php ام داله انت برمجتها ؟؟
    ولو هي داله في php ليه هي مشغاله عندي ؟؟





    __________________
    ســـــــبحان الله وبـــــــــحمده *سبـــــــــــحان الله العظيم
    لطلب البرمجة فقط
    helal-egypt@hotmail.com

  9. #9


    مشكورين يا اخوانى وبارك اله فيكم على روح المشاركه
    ولكن الكود السابق كان على سبيل المثال وليس اكتر لكن فى منتداي وهو من نوع mybb
    عندما انتقلت الى سيرفر جديد وقمت بنقل المنتدي كانت اول ما ظهر لى هذه الرساله
    Warning [2] scandir() has been disabled for security reasons

    وعندما بحثت على الانترنت وجدت الشرح الذى به الكود الذى وضعته فى االموضوع كمثال وبالفعل غيرت الامر من

    scandir
    الى
    cpgscandir
    واشتغل الاسكربت بدون اي مشاكل وبداخل الاسكربت ايضا كان يوجد هاك جوجل سيت ماب وكان يعاني من نفس المشكله وقمت بتعديل الامر فى ملف الهاك واشتغل ايضا






  10. #10


    في سؤال هل داله cpgscandir هل هي داله في php ام داله انت برمجتها ؟؟
    ولو هي داله في php ليه هي مشغاله عندي ؟؟
    اهلا بك اخي الكريم داله cpgscandir حسب ما وجدته فى الشروحات الموجوده بالمواقع الاجنبيه ان داله cpgscandir موجوده فى php5 وهى داله بديله عن داله scandir وتؤدي نفس المهمه
    تحياتي






  11. #11
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    947


    اهلا بك اخي الكريم داله cpgscandir حسب ما وجدته فى الشروحات الموجوده بالمواقع الاجنبيه ان داله cpgscandir موجوده فى php5 وهى داله بديله عن داله scandir وتؤدي نفس المهمه
    تحياتي
    راجع ردي بالأعلى .. الدالة ليست مدمجة مع ال php بل هي دالة خاصة تم عملها باستخدام اوامر اخرى لتؤدي في النهاية نفس وظيفة الدالة scandir





    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير

  12. #12
    عضو فعال
    تاريخ التسجيل
    Jul 2008
    المشاركات
    1,109


    اهلا بك اخي الكريم داله cpgscandir حسب ما وجدته فى الشروحات الموجوده بالمواقع الاجنبيه ان داله cpgscandir موجوده فى php5 وهى داله بديله عن داله scandir وتؤدي نفس المهمه
    تحياتي

    جزاك الله خيرا اخي الكريم

    يعني كده هي داله واحد مبرمجها





    __________________
    ســـــــبحان الله وبـــــــــحمده *سبـــــــــــحان الله العظيم
    لطلب البرمجة فقط
    helal-egypt@hotmail.com

  13. #13


    اهلا بك اخي الكريم داله cpgscandir حسب ما وجدته فى الشروحات الموجوده بالمواقع الاجنبيه ان داله cpgscandir موجوده فى php5 وهى داله بديله عن داله scandir وتؤدي نفس المهمه
    تحياتي
    الدالة لا تنتمي لأي لغة من اللغات
    هي دالة خاصة تضعها وتستدعيها فقط والمكتوب بداخلها هو بديل لجلب المسار





    __________________
    السيف أصدق أنباء من الكتب

  14. #14
    عضو نشيط
    تاريخ التسجيل
    Oct 2008
    المشاركات
    283


    هناك بديل آخر عن دالة scandir ويصلح أيضاً مع PHP4 عن طريق الدالة readdir
    كود PHP:
    <?php
    $dir 
    "";
    $handle  opendir($dir);
    while (
    false !== ($filename readdir($handle))) {
        
    $files[] = $filename;
    }
    print_r($files);
    ?>






    __________________
    اللهم وفقني لما تحبه وترضاه...

  15. #15
    عضو فعال
    تاريخ التسجيل
    Jul 2008
    المشاركات
    1,109


    هناك بديل آخر عن دالة scandir ويصلح أيضاً مع PHP4 عن طريق الدالة readdir
    كود PHP:
    <?php
    $dir 
    "";
    $handle  opendir($dir);
    while (
    false !== ($filename readdir($handle))) {
        
    $files[] = $filename;
    }
    print_r($files);
    ?>
    جزاك الله الف خيرا اخي الكريم

    انا عملتها داله وفيه تغير بسيط

    كود PHP:

    function scandirs($dir)
     {
         if(
    is_dir($dir))
         {
             
    $handle=@opendir($dir);
            while(
    $f=@readdir($handle))
            {
                if(
    $f!="." and $f!="..")
                {
                
    $files[]=$f;
                }
            }
            return 
    $files;
            @
    closedir($handle);
            
        }
        else
        {
            return 
    false;
        }
     }
     
     
     
    //طريقة الاستخدام
    $dir "temp";
    $p=scandirs($dir);
    print_r($p); 






    __________________
    ســـــــبحان الله وبـــــــــحمده *سبـــــــــــحان الله العظيم
    لطلب البرمجة فقط
    helal-egypt@hotmail.com

صفحة 1 من 2 12 الأخيرةالأخيرة




ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  
0
أضف موقعك هنا