لديك حساب بالفعل؟ دخول
دخول  سجل الأن 
محرر البي بي كود و أكواد يتم منعها - الماجيك كوتس
السلام عليكم
أنا أستعمل محرر بي بي كود
و أستعمل كذلك إضافة تلوين الأكواد syntaxhighlighter

و لكن المشكل للأسف المحرر يقوم بتحويل العلامات مثل
""
''
الى
\"\"
\'\'

هل إذا منعت تحويلها , هل سيأثر هذا على الحماية!
تاريخ البداية: 2 / يناير / 2012 الساعة 14:10 اخر نشاط: 2 / يناير / 2012 الساعة 17:43 ماجيك كوتس

العيب ليس فى كلاس تحويل الbbcode الى html العيب انك حفظت الاكواد فى قاعدة البيانات مضافة لها هذه الاضافات فعليك استخدام طريقة الاخ ملهم واعادة الكتابة مرة اخرى حتة تحفظ النص فى قاعدة البيانات دون \ وعند استدعائها مرة اخرى لن يكون بها اى شىء مثل \
2 / يناير / 2012 الساعة 16:3

وسبب حفظ النصوص هكذا فى قاعدة البيانات هى ان خاصية المجيك كوتس مفعلة ، فعليك اغلاقها كما موضح فى الطريقة وبعد ذلك عند كتابة "" ستمر على قاعدة البيانات عند تمريرها على دالة mysql_real_escape_string هكذا \"\" للامان ولكن عند حفظها فى قاعدة البيانات ستكون "" مثل اول مرة وبذلك عند احضارها ستكون "" ايضا وليس \"\"
2 / يناير / 2012 الساعة 16:6

أنا أعمل على السيرفر المحلي appserv هل هي مفعلة فيه ايضاً؟؟؟

Apache Web Server Version 2.2.8
PHP Script Language Version 5.2.6
MySQL Database Version 5.0.51b
phpMyAdmin Database Manager Version 2.10.3
2 / يناير / 2012 الساعة 16:13

نعم مفعلة لان كما ترى اصدار البى اتش بى لديك اقل من 5.3.0 وهذا الشرط فى كود الاخ ملهم if (get_magic_quotes_gpc()) { معناه ان فى حالة ان الدالة مفعلة فقط يتفذ هذا الكود
2 / يناير / 2012 الساعة 16:16

راح أجرب طريقة الأخ بس للعلم عندما يتم حفظ الكود " أو ' في قاعدة البيانات يتم حفظه كما هو بس المشكل هو في معاينة الموضوع قبل عرضه ساعتها تظهر \
2 / يناير / 2012 الساعة 16:33

اذن استخدم دالة الاخ علاء لحذف هذه الرموز عند العرض فقط
2 / يناير / 2012 الساعة 17:5

تم حل الأمر
أشكر الأخ ملهم و علاء و الاخ ماك اوس و كافة الأخوة بالموقع هنا على سرعة التفاعل و بارك الله فيكم
2 / يناير / 2012 الساعة 17:43

3 إجابات
المشكل عندي أنه علامة \ تظهر فقط في معاينة الموضوع

هكذا


<?php
$_POST['text'] = $text;
if(isset($_POST['preview'])){
    echo"".$text."";
    }

?>



<form method="post" action="">
<input name="text" type="text"/> 
<input type="submit" name="preview" value="preview"/>
</form>
أما عند حفظه في قاعدة البيانات يبقى الرمز كما هو بدون مشاكل نهائي للعلم الماجيك كوتس لم تعد شغالة لانني أطفئتها في السيرفر المحلي
; Magic quotes
;

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off

أتمنى أن أجد حل

بواسطة: Imad
منذ: 2 / يناير / 2012 الساعة 17:3

معنى انها تظهر بالمعاينة انها مفعلة ، لا ادرى كيف وانت اغلقتها .. ضع الكود فى اول الاسكربت او استخدم دالة الاخ علاء لحذف اى من هذه الرموز لاى شىء
2 / يناير / 2012 الساعة 17:6

وبالمناسبة لماذا تفعل هذا echo"".$text.""; الصحيح هو echo $text;
2 / يناير / 2012 الساعة 17:8

فقط تعودت على الامر :)
المهم بعدما رفعت الملف الى موقع لي على استضافة التمساح رأيت أنه لا تظهر \ مما يأكد أنه الماجيك كوتس غير مفعل في الاستضافة لذلك أظن المشكل من السيرفر المحلي سأعيد تشغيل الجهاز و أنظر
2 / يناير / 2012 الساعة 17:31

عند التعديل فى ملف الـphp.ini لابد من عمل ريسترت للسيرفر المحلى
2 / يناير / 2012 الساعة 17:33

نعم اكيد عملت للسيرفر المحلي ريستارت بس ما نجح لغاية ما عملت اعادة تشغيل للجهاز باكمله و الحمد لله تم حل الامر, 3 أيام و الجهاز شغال بلا توقف لغاية ما عملت ريسترت شيء مضحك فعلاً, أشكر الأخ ملهم و علاء و الاخ ماك اوس و كافة الأخوة بالموقع هنا على سرعة التفاعل و بارك الله فيكم
2 / يناير / 2012 الساعة 17:42

لو اردت حل جزئى ، ولكنى انصح بحل الاخ ملهم لانه الحل الكامل للمشكلة فى جميع مراحلها

استخدم دالة stripslashes وهذه دالة مطورة منها تعمل على المصفوفات ايضا
function stripslashes_deep($value)
{
    $value = is_array($value) ?
                array_map('stripslashes_deep', $value) :
                stripslashes($value);

    return $value;
}
وهذا مثال لذلك ولحل مشكلتك
// Example
$array = array("f\\'oo", "b\\'ar", array("fo\\'o", "b\\'ar"));
$array = stripslashes_deep($array);

// Output
print_r($array);

بواسطة: علاء
منذ: 2 / يناير / 2012 الساعة 14:26

تعديل: علاء
منذ: 2 / يناير / 2012 الساعة 14:26

مشكور اخي
2 / يناير / 2012 الساعة 14:58

السلام عليكم
مشكلتك هى الـMagic Quotes التى تم الغائها تماما فى الاصداء 5.3.0 وعندهم حق صراحة
,
افضل حل لذلك هى قفلها والغائها عن طريق php.ini وان لم يكن لك التصريح يوجد حلول اخرى

اولا الغائها من الـphp.ini
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
او عن طريق الـ.htaccess
php_flag magic_quotes_gpc Off
او افضل طريقة بهم عن طريق هذا الكود تضعه فى اول الاكواد تنفيذا فى الاسكربت الخاص بك
if (get_magic_quotes_gpc()) {
    $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
    while (list($key, $val) = each($process)) {
        foreach ($val as $k => $v) {
            unset($process[$key][$k]);
            if (is_array($v)) {
                $process[$key][stripslashes($k)] = $v;
                $process[] = &$process[$key][stripslashes($k)];
            } else {
                $process[$key][stripslashes($k)] = stripslashes($v);
            }
        }
    }
    unset($process);
}
هذه راح تحل مشكلتك ولكن يبقى كيف يتم حماية المدخلات الى قاعدة البيانات ، وهذا يتم عن طريق تمرير المتغير غير الرقمى لدالة mysql_real_escape_string هذا مثال لاستعمالها فى الحماية
<?php
// الاتصال
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
    OR die(mysql_error());

// الاستعلام
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            mysql_real_escape_string($user),
            mysql_real_escape_string($password));
?>
وهذا مثال اختراق فى حالة عدم الحماية
<?php
// لم نقم بوضع الحماية اللازمة على $_POST
$_POST['username'] = 'aidan';
$_POST['password'] = "' OR ''='";

// والان نبحث عن تطابق بين المدخلات والجداول
$query = "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'";
mysql_query($query);

// وهذا معناه الاستعلام المرسل الى قاعدة البيانات سيمثل كارثة مثل
echo $query;
?>

بواسطة: molhm
منذ: 2 / يناير / 2012 الساعة 14:21

مشكور اخي بارك الله فيك
2 / يناير / 2012 الساعة 14:59

أنشر اجابتك

xهل تريد الاجابة عن هذا السؤال؟ من فضلك سجل دخول او اشترك لتتمكن من الاجابة