PDA

View Full Version : مشکل با htmlspecialchars



masiha68
چهارشنبه 03 مهر 1392, 08:22 صبح
با سلام
من وقتی از htmlspecialchars استفاده می کنم کاراکترهای html رو توی صفحه نشون می ده یعنی مثلا </br> رو همون </br> نوشن می ده به جای اینکه بره به خط بعدی
به نظرتون مشکل از کجاست ... راستی از ادیتور nicedite استفاده می کنم و اینکه

$post= htmlspecialchars($_POST['post']);

ابوذر محمودی
چهارشنبه 03 مهر 1392, 08:33 صبح
خب تابع داره به این خوشکلی کار می کنه مشکلی هم نداره ،فقط ایراد کارتونو با مطالعه طرز کار این تابع، خودتون متوجه میشین :
htmlspecialchars (http://php.net/manual/en/function.htmlspecialchars.php)

شما وقتی تگ </br> رو ازین تابع عبور میدین این درواقع میاد کاراکترهای < , > رو با کاراکترهای ('&lt;' و '&gt;')جایگزین میکنه ، شما اگه بری تو سورس صفحه ، خودت متوجه میشی .
مثلا خط زیر رو اگه از فیلتر این تابع عبور بدیم :

<a href='test'>Test</a>
به این تبدیلش میکنه :

&lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;

masiha68
چهارشنبه 03 مهر 1392, 08:46 صبح
دوست عزیز من داده هایی رو که از ادیتور اومدن رو به این تابع میدم و اینجوری میشه وگرنه بلدم که این تابع چیکار میکنه
الانم اگه بدون htmlspecialchars داده ها رو ذخیره کنم و نمایش بدم مشکلی پیش نمیاد ولی همون داده ها رو با htmlspecialchars ایمن کنم مشکل پیش میاد ... به نظرتون اصلا لازمه داده های رد شده از ادیتور ور با htmlspecialchars ایمن کنم ... خودم که بررسی کردم دیدم نه

qartalonline
چهارشنبه 03 مهر 1392, 09:18 صبح
دوست عزیز من داده هایی رو که از ادیتور اومدن رو به این تابع میدم و اینجوری میشه وگرنه بلدم که این تابع چیکار میکنه
الانم اگه بدون htmlspecialchars داده ها رو ذخیره کنم و نمایش بدم مشکلی پیش نمیاد ولی همون داده ها رو با htmlspecialchars ایمن کنم مشکل پیش میاد ... به نظرتون اصلا لازمه داده های رد شده از ادیتور ور با htmlspecialchars ایمن کنم ... خودم که بررسی کردم دیدم نه

بستگی به خودتون داره.
برخی تگها رو باید فیلتر کرد مثل: <script>,<style>,<h1>,...

ابوذر محمودی
چهارشنبه 03 مهر 1392, 12:17 عصر
ببین اگه ادیتور اصلا هیچ محدودیتی اعمال نمیکنه ، حتماً خودتون ورودی ها رو برای لااقل تگ های Script و یا link و ازین دست فیلتر کنین.


الانم اگه بدون htmlspecialchars داده ها رو ذخیره کنم و نمایش بدم مشکلی پیش نمیاد ولی همون داده ها رو با htmlspecialchars ایمن کنم مشکل پیش میاد
خب شما اگه موقع استایل دهی به متن ،تو ادیتور کد تولید شده html اون رو ببینید می بینید که پره از تگ های html ، مثلا وقتی نوشته ای رو bold میکنی ، ادیتور اون نوشته رو بین تگ <b> قرار میده، وقتی هم میخای اینو تو صفحه نمایش بدی مرورگر میاد اون نوشته ای که تو این تگ هست رو ضخیم میکنه ، اما وقتی شما ورودی رو ازین تابع میگذرونید کل تگ ها روشون فیلتر اعمال میشه ، و کاراکترایی مثل <,> با کاراکترهای دیگه جایگزین میشن ، ازونجایی هم که وقتی جایگزین شدن ، تگ محسوب نمیشن مرورگر دیگه اون کاربرد تگ رو اعمال نمیکنه و مسلمه که موقع نمایش بهم میریزه ، اما همونطور که دوستمون گفتن بیان تگ های خاص رو روشون فیلتر اعمال کنین ، مثلا تو وردپرسم همینطوره ، یه سری از تگ ها رو شما نمیتونی استفاده کنی