فیلتر کردن مقادیر ورودی(GET) برای استفاده در دستورات SQL
سلام دوستان
یه مقدار دارم که توسط GET باید ارسال بشه و داخل صفحه ای که دریافتش میکنم یه کوئری اجرا میشه
"`profi` LIKE %" . quote_smart($_GET['text']) . "%)"
و تابعی که استفاده میکنم این هستش
function quote_smart($value){ if(!is_numeric($value)) { if(get_magic_quotes_gpc()) $value = stripslashes($value); return "'" .mysql_real_escape_string($value) . "'"; } else return $value; }
خروجی مثل زیر میشه که اشکال داره
%'salam'%
حالا سوال من اینه که وقتی که دارم از LIKE در دستورات SQL استفاده میکنم و در کد نویسی دو طرف مقدار ورودی % اضافه میکنم نیازی هست که از تابع quote_smart استفاده کنم یا نه
برای امنیت مشکلی پیش نمیاد
نقل قول: فیلتر کردن مقادیر ورودی(GET) برای استفاده در دستورات SQL
سوالت گنگ/نا مفهوم هستش، اصلاحش کن...
او کوئری رو هم کاملتر/بیشتر بزار تا بهتر درکش کنیم.
بعدم اون تابع رو میتونی اینطوری بنویسی، که کمی بهینه تره:
function quote_smart($value)
{
if(!is_numeric($value))
{
if(get_magic_quotes_gpc()) $value = stripslashes($value);
if (function_exists('mysql_real_escape_string')) return mysql_real_escape_string($value);
else return mysqli_real_escape_string($value);
}
return $value;
}
نقل قول: فیلتر کردن مقادیر ورودی(GET) برای استفاده در دستورات SQL
تابع get_magic_quotes_gpc که خودش باگ داره و قابل دور زدن هست
از تابع htmlentities و strip_tags استفاده کنید
و برای امنیت بیشتر و منعطف تر از پروژه ی html purifier استفاده کنید
برای ذخیره در دیتابیس هم تابع mysql_real_escape_string که deprecated شده بجاش میتونید از mysqli یا از تابع فانکشن prepare در PDO استفاده کنید
برای اموزش هر کدومشونم سرچ کنید یا توی انجمن سوالتون رو مطرج کنید