PDA

View Full Version : سوال: مشکل با addslashes



.fatemeh
پنج شنبه 15 آبان 1393, 15:51 عصر
سلام
توی قسمت ثبت محصول ، کاربر توضیحات محصول رو توی tinymce وارد می کنه.
یه بار توی توضیحات از علامت اینچ (") استفاده کرده بود با " در کد ها قاطی کده بود. توی نمایش مشکل پیش اومد
اومدم توضیحات رو با addslashes فیلتر کردم.
حالا هر قسمت که لینک بوده شده /"//""""//////// یا شبیه این.
همین باعث شده تمام لینک های موجود توی متن توضیحات به 404 بره.
با چی هم متن رو فیلتر کنم تا مشکل اول پیش نیاد و هم لینکها درست بشن؟؟؟؟؟
ممنون

abolfazl-z
پنج شنبه 15 آبان 1393, 16:21 عصر
ساختار لینک شما چیست ؟ از GET استفاده می کنید یا بصورت رشته ایی ؟

.fatemeh
پنج شنبه 15 آبان 1393, 16:31 عصر
توضیحات رو توی textarea وارد میکنه که متصل به ادیتور tinymce هست.
جاهایی که لازمه لینک بشه با استفاده از ادیتور لینک میکنه.
من زمان درج توی دیتابیس فیلترش کردم و موقع نمایش توی سایت اشتباه نمایش میده.

از GET استفاده می کنید یا بصورت رشته ایی ؟
منظورتون رو متوجه نشدم
اگر منظور شما زمان ثبت اطلاعات در قسمت درج محصول هست که با post کار کردم

abolfazl-z
پنج شنبه 15 آبان 1393, 16:52 عصر
با چی فیلتر می کنین ؟ addslashes ؟

خوب با stripslashes فیلتر را رفع کنید.

البته یک سری هم به http://php.net/manual/en/function.get-magic-quotes-gpc.php بزنید.

فیلتر شما برای سطح دسترسی ادمین هست ؟

.fatemeh
پنج شنبه 15 آبان 1393, 17:15 عصر
با addslashes دیگه.

abolfazl-z
پنج شنبه 15 آبان 1393, 17:32 عصر
نگاه کنید بستگی دارد کاراکتر double quotation (") در کجا استفاده شود !

اگر double quotation در یک attribute یا صفت html استفاده شود باید توسط تابع htmlspecialchars با ثابت EN_QUOTES فیلتر شود.

همچنین بهتر هست تمامی ورودی ها به دیتابیس را با این تابع فیلتر کنید. و برای دیکد کردن از htmlspecialchars_decode استفاده کنید.

.fatemeh
پنج شنبه 15 آبان 1393, 21:57 عصر
ممنون از پاسخ هاتون

فیلتر شما برای سطح دسترسی ادمین هست ؟
نمی شه گفت سطح دسترسی. فقط برای توضیحات محصول ورودی رو فیلتر کردم.

نگاه کنید بستگی دارد کاراکتر double quotation (") در کجا استفاده شود !


به صورت srting هست (خروجی tinymce)

$com=$_POST['com'];
$com=addslashes($com);
این رو در مدیریت هنگام insert نوشتم.
موقع نمایش هم داخل یه div نوشتم

echo $f[com];
f$ دستور fetch هست.

abolfazl-z
پنج شنبه 15 آبان 1393, 22:25 عصر
$com=$_POST['com'];
$com=htmlspecialchars($com,EN_QUOTES);


echo htmlspecialchars_decode($f[com],EN_QUOTES);

اگر امنیت لازم برقرار هست نیازی به این کار نیست و فقط اطلاعات را مستقیم وارد پایگاه کنید و اگر escape دیتابیس استفاده می کنید از تابع stripslashes در هنگام خروجی استفاده کنید.