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

الموضوع: استخدام دالة addslashes مع magic quotes

  1. #1
    عضو نشيط
    تاريخ التسجيل
    Apr 2004
    المشاركات
    87

    استخدام دالة addslashes مع magic quotes



    السلام عليكم...

    استخدم حالياً هذا الكود لمعالجة النصوص قبل إرسالها لقاعدة البيانات:
    كود PHP:
    function add_slashes($Str)
        {
            if (@
    get_magic_quotes_gpc()){
                if ( 
    is_array($Str) ){
                    foreach (
    $Str as $k => $v){
                        
    $Str[$k] = trim($v);
                    }
                }else{
                    
    $Str trim($Str);
                }
            }else{
                if ( 
    is_array($Str) )
                {
                    foreach (
    $Str as $k => $v)
                    {
                        
    $Str[$k] = addslashes(trim($v));
                    }
                }
                else
                {
                    
    $Str addslashes(trim($Str));
                }
            }
           return 
    $Str;
        } 
    الكود يعمل بشكل جيد اذا كانت الدالة magic_quotes_gpc مفعلة

    ولكن في حال الدالة magic_quotes_gpc معطلة تظهر رموز rn او r\n\ بدلاً من السطر الجديد...

    مثال (اذا قمت بكتابة سطرين):
    السطر الأول
    السطر الثاني

    النتيجة:
    السطر الأول rn السطر الثاني

    فكرت في عمل تعديل على الكود لعكس العملية بإستخدام stripslashes لضمان عدم تكرار addslashes ليصبح الكود هكذا:
    كود PHP:
        function add_slashes($Str)
        {
            if (
    get_magic_quotes_gpc()==1){
                if ( 
    is_array($Str) ){
                    foreach (
    $Str as $k => $v){
                        
    $Str[$k] = trim($v);
                    }
                }else{
                    
    $Str trim($Str);
                }
            }else{
                if ( 
    is_array($Str) )
                {
                    foreach (
    $Str as $k => $v)
                    {
                        
    $Str[$k] = stripslashes(trim($v));
                    }
                }
                else
                {
                    
    $Str addslashes(trim($Str));
                }
            }
           return 
    $Str;
        } 
    أعلم بأنه لا يجب استخدام addslashes في حال أن magic_quotes_gpc مفعلة لأنها تقوم بالعملية في php 5
    ولكن المشكلة أنها معطلة في بعض السيرفرات، وارغب في تعديل الكود ليعمل في الحالتين بشكل جيد...

    فهل أجد المساعدة في تعديل الكود...

    أطيب التحايا





    __________________
    على المرء أن يسعى وليس عليه إدراك النجاح


  2. #2
    عضو نشيط جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    597


    اتمنى ان تجد طلبك اخوي ..

    لكن هل لك ان تخبرنا عن عمل الدالة بالضبط ؟






  3. #3
    عضو نشيط
    تاريخ التسجيل
    Apr 2004
    المشاركات
    87


    لمعالجة النصوص قبل إرسالها لقاعدة البيانات

    أطيب التحايا





    __________________
    على المرء أن يسعى وليس عليه إدراك النجاح

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


    نصيحة خلي الداله مثل ما هي وعند العرض شيل السلاش بس





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

  5. #5


    ربما انت تستخدم addslashes بجانب mysql_real_escape_string
    و هو أمر غير مقبول لأنه يضيف خط مائل اضافي لأن الدالتين تأديان نفس الغرض

    موقع php.net يحذر من استخدام addslashes مع mysql_real_escape_string

    كود PHP:
    The PHP directive magic_quotes_gpc is on by default, and it essentially runs addslashes() on all GETPOST, and COOKIE data. Do not use addslashes() on strings that have already been escaped with magic_quotes_gpc as you'll then do double escaping. The function get_magic_quotes_gpc() may come in handy for checking this. 
    انسى موضوع adslashes حاول أستخدم الارسال العادي في حالة عدم تفعيل get_magic_quotes_gpc و استخدم stripslashes عند تفعيلها مع التركيز على استخدام mysql_real_escape_string دوماً عند ادراج بياناتك بقاعدة البيانات

    يعني ممكن تستبدل الكود بما يلي:
    كود PHP:
    function stripall(){
    if (
    get_magic_quotes_gpc()) {
        function 
    stripslashes_deep($value)
        {
            
    $value is_array($value) ?
                        
    array_map('stripslashes_deep'$value) :
                        
    stripslashes($value);
            return 
    $value;
        }
        
    $_POST array_map('stripslashes_deep'$_POST);
        
    $_GET array_map('stripslashes_deep'$_GET);
        
    $_COOKIE array_map('stripslashes_deep'$_COOKIE);
    }







    التعديل الأخير تم بواسطة مسدار ; 17-03-2009 الساعة 05:10 PM





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

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

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