PDA

View Full Version : سوال: کار این کد چیست؟



Sadbar7
دوشنبه 14 آذر 1390, 14:03 عصر
سلام
کد زیر کارش چیه یعنی چیکار میکنه ؟
میخوام توضیح کاملی بدین خط به خطش رو ...

function safe($value){
if( get_magic_quotes_gpc() ){
$value = stripslashes( $value );
}
if( function_exists( "mysql_real_escape_string" ) ){
$value = mysql_real_escape_string( $value );
}else{
$value = addslashes( $value );
}
return $value;
}
با تشکر

pejman_view
دوشنبه 14 آذر 1390, 18:32 عصر
سلام

خط به خط این کد این است که:
اول یک متغیر می گیره که ممکن است دارای نقل قول باشد که این نقل قول باعث ایجاد باگ در کدتان هنگام برقرار ارتباط با دیتابیس می شود،
اولین شرط میاد چک می کنه که ببینه Magic Qoutes که یک روش قدیمی در PHP4 به قبل است فعال است یا خیر اگر بود که از همین تابع استفاده می کند اگر نبود از تابع جدیدتر mysql_real_escape_string استفاده می کند اما اول چک می کند ببیند این تابع فعال است یا نه چون این تابع از PHP4 به بعد اضافه شده است. در آخر اگر هیچ کدام وجود نداشت از تابع addslashes استفاده می کند که در اغلب PHP ها وجود دارد و عمومیت بیشتری دارد.

با آرزوی موفقیت

Sadbar7
دوشنبه 14 آذر 1390, 18:41 عصر
ممنون از شما دوست عزیز
حالا میخوام بدونم این کد به چه دردی میخوره ؟ یعنی کجا کاربرد داره ؟

MMSHFE
دوشنبه 14 آذر 1390, 19:03 عصر
با سلام، این کد برای مباحث امنیتی کاربرد داره و اصطلاحاً گیومه های نقل قول رو Escape میکنه یعنی اونها رو به کارکترهای بی خطر تبدیل میکنه تا از طریق اونها نشه کدهای مخرب رو روی دیتابیس اجرا کرد. درواقع تاحدودی امنیت اطلاعاتی که از کاربر دریافت میکنید رو با ارسال اونها به این تابع، بالاتر میبرین. مثلاً اگه کاربر توی فرم عبارت "this is "a text رو وارد کنه و شما این کد رو اجرا کنید:


$text = safe($_POST['text']);

متغیر text$ شما حاوی مقدار "\this is \"a text خواهد بود که تقریباً میشه گفت یک رشته بی خطر برای ذخیره توی دیتابیس هست.
موفق باشید.