PDA

View Full Version : سوال: پردازش تگ های HTML بازیابی شده از دیتابیس



mahmood3d
چهارشنبه 20 خرداد 1388, 11:56 صبح
سلام خدیت اساتید محترم
من یک برنامه تحت وب با php نوشتم و به خاطر اینکه فیلدهای اضافی در دیتابیس ایجاد نکنم از یک ادیتور php استفاده کردم که تقریبا تمام مواردی که برای نشون دادن اطلاعات لازم دارم رو توی ادیتور وارد می کنم (از جمله عکس ها که آدرسش رو وارد می کنه و استایل های متن ها و ... که به صورت تگ های html وارد می شه) و عیناً چیزایی که در ادیتور وارد میشه رو توی بانک ذخیره می کنم.
حالا مشکلم اینه که وقتی اطلاعات رو بازیابی می کنم به جای اینکه تگ های html پردازش بشه و روی ظاهر صفحه تأثیر بزاره خود تگ html توی صفحه ظاهر میشه.
مثلا من از یک تصویر استفاده کردم ولی موقعی که اطلاعات رو بازیابی می کنم به جای نشون دادن عکس تگ img با خصوصیاتش نشون داده میشه.

برای رفع این مشکل چکار می تونم بکنم :افسرده::متفکر:

ahmadbadpey
چهارشنبه 20 خرداد 1388, 12:42 عصر
از توابع addslashes() برای ورود داده به دیتابیس و striptslashes() برای بازیابی اونها استفاده کرده اید ؟؟؟؟؟؟

mahmood3d
چهارشنبه 20 خرداد 1388, 12:52 عصر
نخیر استفاده نکردم. اگه میشه لطف کنید و نحوه استفاده از اونها رو توضیح بدید.
چون من تازه شروع به کار کردن با php کردم و بیشتر نکات رو نمی دونم.

mahmood3d
چهارشنبه 20 خرداد 1388, 13:12 عصر
البته اونجوری که از اسمش پیداست احتمالا روی اسلش ها کار می کنه که بیشتر مربوط میشه به رشته ها در php. ولی مشکل من پردازش نشدن تگ های html هست نه پردازش نشدن اسلش در php.

ahmadbadpey
چهارشنبه 20 خرداد 1388, 13:15 عصر
اگر داده هایی که قراره وارد دیتابیس شوند حاوی " یا ' باشند می بایست برای ذخیره سازی درست اونها در دیتابیس قبل از کاراکتر های مذکور \ قرار بگیرد .
شما گفتین از یک ادیتور برای ورود داده هاتون به دیتابیس استفاده می کنید . معمولا خروجی ادیتور های تگ های HTML هستند که تگ های HTML هم حاوی " یا ' .
حالا اگه ما بخوهیم خومون قبل از کاراکتر های فوق به صورت دستی یه \ بذاریم کار بیهوده ای است . این کار رو تابع addslashes انجام می ده . یعنی شما باید خروجی حاصل از ادیتور رواز تابع مذکور بگذرونید به شکل زیر :

$str=addslashes($output_editor)
این از ذخیره سازی توی دیتابیس .

اگه بخواهیم همون داده های همراه با تعداد زیادی \ رو (که از دیتابیس می گیریم) توی صفحه مستقیما نمایش بدیم احتمالا \ اضافی نمایش داده خواهد شد و این باعث میشه مرورگر ها کد های HTML رو نشناسن .
برای برداشتن \ ها باید از تابع striptslashes() به صورت زیر استفاده کنیم :

echo(striptslashes($output_db))

البته این کار ممکنه به صورت اتوماتیک انجام بشه و نیازی به استفاده از تابع دوم نباشه.

mahmood3d
چهارشنبه 20 خرداد 1388, 13:26 عصر
دوست عزیز مشکل من توی اسلش ها نبود و خروجی های ادیتور رو چک کردم حتی در مواردی هم که اسلش نداشتم باز هم مشکل پردازش تگ ها وجود داشت. توی سایت php.net گشتم و دیدم وقتی که از تابع htmlspecialchars_decode استفاده می کنم مشکل حل میشه.
البته اگه راهنمایی شما نبود این تابع رو هم پیدا نمی کردم. ممنون