النتائج 1 إلى 13 من 13

الموضوع: Undefined index & Undefined variable

  1. #1

    [مجابة] Undefined index & Undefined variable



    لدي سكريبت سجل الزوار كان يعمل بشكل جيد وقبل ايام نقل موقعي الى سرفر جديد يبدو انه يستخدم الاصدار الاخير من php فظهرت لي هذه المشاكل:

    Notice: Undefined index: ADMIN in /var/www/vhosts/bakkali-nagham.com/httpdocs/gb.php on line 960


    Notice: Undefined variable: PHP_SELF in /var/www/vhosts/bakkali-nagham.com/httpdocs/gb.php on line 752

    مع ان السكريبت مازال يعمل ... هل من حل لاخفاء هذه الاخطاء و ايجاد حل للمشكل؟؟





    التعديل الأخير تم بواسطة النبع الصافي ; 01-08-2008 الساعة 03:35 PM سبب آخر: اضافة [مجابة] الى العنوان دلالة على الوصول الى الحل


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


    كود PHP:
    error_reporting(E_ALL E_NOTICE); 
    في بداية الصفحات، أو في بداية صفحة الإعدادات Configuration أو أي صفحة يتم تضمينها في كل الصفحات ..

    أو يفضّل أن تذهب إلى تلك الأسطر ، وتقوم بتعديل كلمة ADMIN إلى:
    كود PHP:
    'ADMIN' 
    كتابة علامات التنصيص تفيد في تحديد أن هذا الشيء هو بيان نصي وليس ثابت لذلك لن تظهر المشكلة إن شاء الله تعالى ..

    بالنسبة لـ PHP_SELF ، أعتقد أنك تستخدم:
    كود PHP:
    $PHP_SELF 
    قم بتعديلها إلى:
    كود PHP:
    $_SERVER['PHP_SELF'
    حيث أن الأول هو أحد أنماط الـ register_globals والتي ستزول نهائياً في PHP 6 ، وقد تم تعطيلها بشكل افتراضي في إحدى إصدارات PHP 4 ..

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





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

  3. #3


    بورك فيك أخي
    بالنسبة لـ $PHP_SELF فلم يعد المشكل يظهر بعد تعويضها بـ $_SERVER['PHP_SELF'] لكن المشكل الذي حصل بعدها هو انه لم تعد تعمل ارقام الانتقال بين الصفحات...

    غير أني عندما قمت بكتابة error_reporting(E_ALL ^ E_NOTICE); كما أشرت في اول الصفحة من دون تعديل $PHP_SELF لم تظهر رسائل الاخطاء و اصبح السكربت يعمل بشكل جيد

    ملاحظة : ADMIN اصلا توجد بين علامات التنصيص

    بارك الله فيك أخي الكريم و جعل الله عملك خالصا لوجهه الكريم و رزقك الله الجنة رفقة الحبيب المصطفى عليه أزكى الصلاة و السلام






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


    هل يمكنك إذاً أن تضع لنا الشيفرة المصدرية لمواضع الخطأ ؟





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

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


    ملاحظة : ADMIN اصلا توجد بين علامات التنصيص
    عفواً، لم ألحظ هذا .. المشكلة في عدم وجود Key في المصفوفة التي تتعامل معها باسم ADMIN تأكد من أنك قمت بتعريف القيمة قبل التعامل معها سواء إضافة شيء لها وما إلى ذلك ..

    بالنسبة للمشكلة الأولى أتمنى أن تضع لنا شيفرة حتى نتمكن من مساعدتك ..

    أطيب التحيات،





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

  6. #6


    تفضل أخي

    كود PHP:
    if(!isset($_POST['Submit']) AND !$_GET['ADMIN'])
    $Rec count(@file("GB.txt"));
      
    $All = ($ReplyPerPage!=0) ? ceil($Rec/$ReplyPerPage) : 1;
      if(isset(
    $_POST['Go_To']))
      { 
    $Page $_POST['D1'];
        
    $from = ($Page 1) * $ReplyPerPage;
        
    $to   $from + ($ReplyPerPage 1);
      }
      else
      { 
    $Page 1;
        
    $from = ($Page 1) * $ReplyPerPage;
        
    $to   $from + ($ReplyPerPage 1);
      } 

    كود PHP:
    function Add_Sign()
    { global 
    $lang;
      echo 
    '<form method="POST" action="'.$PHP_SELF.'" style="margin: 0px; padding: 0px; border: 0px;">
            <input type="submit" value="'
    .$lang['main']['add_sign'].'" name="B1" style="font-family: Tahoma; font-size: 8pt; border: 1px solid #000000; background-image: url(images/option.gif); background-position: center">
            <input type="hidden" value="Add_New" name="Submit">
            </form>'
    ;


    كود PHP:
    function GoTo($Page,$All)
    { global 
    $lang;
      echo 
    '<form method="POST" action="'.$PHP_SELF.'" style="margin: 0px; padding: 0px; border: 0px;">
            <table border="1" width="100%" dir="'
    .$lang['main']['dir'].'" cellspacing="1" cellpadding="4" style="border: 1px solid #347DBF" bordercolor="#347DBF" id="table49">
            <tr>
                    <td style="font-family: Tahoma; font-size: 10pt; border: 1px solid #E1E1E1; background-image: url(images/cellpic1.gif); background-repeat: repeat; background-attachment: scroll; background-position: center" height="27">
                    <p align="left">
                    <input type="submit" value="'
    .$lang['main']['go'].'" name="B12" style="font-family: Tahoma; font-size: 8pt; border: 1px solid #000000; background-image: url(images/option.gif); background-position: center; float:left">'.$lang['main']['goto'].'
                    <select size="1" name="D1" style="font-family: Tahoma; font-size: 10pt">'
    ;
      for(
    $i=0;$i<$All;$i++)
      { echo 
    '<option value="'.($i+1).'"'; if($Page == ($i+1)) echo ' selected'; echo'>'.($i+1).'</option>';
      }
      echo 
    '</select></td>
            </tr>
            </table><input type="hidden" value="Go_To" name="Go_To">
            </form>'
    ;
      
    Close_Table();

    علما انه كما سبق وأن قلت أخي انه ومع وجود هذه الاخطاء يعمل السكريبت بشكل جيد و عند اضافة
    كود PHP:
    error_reporting(E_ALL E_NOTICE); 
    اول الصفحة لم تعد تظهر الأخطاء و صار كل شيء يعمل بشكل جيد






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


    جرب استبدال:
    كود PHP:
    !$_GET['ADMIN'
    بـ:
    كود PHP:
    !isset($_GET['ADMIN']) 
    و $PHP_SELF بـ:
    كود PHP:
    $_SERVER['REQUEST_URI'
    تحياتي، أشرف السمهوري





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

  8. #8


    فعلا لأخي كان الحل الناجع ... تم حل المشاكل..
    بارك الله فيك أخي الكريم

    اتمنى لو لم يكن لديك مانع .. ان توضح لي حتى استفيد من هذه الاخطاء ...طبعا ان كان لديك متسع من الوقت






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


    لا مشكلة عزيزي ما فتئت الفائدة فيها ..

    بالنسبة لـ GET['ADMIN'] فأنت بهذه العبارة تجزم للمترجم بأن هناك متغير مرسل في عنوان الصفحة باسم ADMIN ، لكنك تريد أن تكون قيمته False ، فإن لم يكن موجود ذاك المتغير، فإن رسالة الملاحظة NOTICE ستظهر لك كي تكون دقيقاً فيما تريد ، ولمعالجة بعض الأخطاء غير المنطقية التي قد تحدث أثناء برمجتك ..

    لذلك استخدمنا دالة isset لنقولَ له : إذا كان المتغير ككل غير معّرف قم بكذا وكذا .. أتمنى أن تكون قد وصلت الفكرة ..

    بالنسبة لـ PHP_SELF و REQUEST_URI ، فـ PHP_SELF تقوم بجلب اسم الصفحة فقط، مثلاً:
    كود PHP:
    /folder/file.php 
    أما REQUEST_URI فتقوم بجلب اسم الصفحة وما بعدها من متغيرات:
    كود PHP:
    /folder/file.php?var1=val1&var2=val2 
    لذلك، في الحالة الثانية حافظنا على المتغيرات الموجودة في هذه الصفحة وأرسلناها إلى الصفحة الثانية ، فلن تحدث المشاكل التي تغيب عن بالنا بخصوص هذا الموضوع ..

    يمكنك كذلك تجاهل الخاصية action في وسم form كي تعمل عمل REQUEST_URI ، فهو مباشرة سيقوم بإرسال البيانات إلى نفس الصفحة بعنوانها الكامل ..

    لماذا كانت تعمل معك سابقاً؟
    PHP_SELF$ في إصدارة الـ PHP التي تستخدمها لم يعد متغيراً محجوزاً ، بسبب وضع register_globals = off ، وهذا يعني أن قيمته بعد إظهار رسالة التنبيه ستكون فارغة، وبما أن قيمته فارغة فلن يتم طباعة شيء داخل خاصية action ، أي:
    كود:
    action=""
    ستتم معالجتها بهذا الشكل، وكما ذكرت لك إذا تجاهلنا الخاصية action فسيكون عندها الأمر على ما يرام .. وعليه قِس ..

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





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

  10. #10
    عضو نشيط
    تاريخ التسجيل
    May 2008
    المشاركات
    151


    هذي الأخطاء تظهر عندما يكون في وضع E_STRICT
    والحل أعطوك اياه الاخوان





    __________________
    Google
    Firefox

  11. #11


    لا يسعني إلا أشكرك جزيل الشكر أخي الحبيب على دعمك و مساعدتك ... بورك فيك جزاك الله خيرا و جعله في ميزان حسناتك






  12. #12


    اخي ظهر مشكل آخر في سكريبت اتصل بنا

    تظهر لي رسالة الخطأ التالية:

    Notice: Undefined index: HTTP_REFERER in /var/www/vhosts/bakkali-nagham.com/httpdocs/contactus.php on line 72

    كود PHP:
    $where $_SERVER["HTTP_REFERER"]; 







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


    هذا العنصر في مصفوفة _SERVER لا يكون معرفاً دائماً ..

    يمكنك استخدام دالة isset لمعرفة ما إذا كان معرفاً أم لا :
    كود PHP:
    $where = (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''); 
    تحياتي، أشرف السمهوري





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





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

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

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض