این توضیحات مربوط به تابع UnEscape هست باید ببخشید زودتر فرصت نکردم بنویسم:
Magic Quotes کارش اسکیپ کردن اطلاعاتی هست که وارد اسکرپت php میشه. مثلاً اطلاعاتی که از طریق فرم به اسکرپت ارسال میشه.
این مجیک کوت توی تنظیمات php شامل سه تا دایرکتیو میشه که همشون به صورت خاموش یا روشن هستن.
1- magic_quotes_gpc
این دایرکتو در صورتی که مقدار on داشته باشه باعث میشه php همه اطلاعاتی رو که با متد GET و POST و همینطور کوکی به صفحه ارسال میشه اسکیپ کنه یعنی قبل از کاراکترهای سینگل کوت (') دابل کوت (") و بک اسلش (\) یه دونه بک اسلش اضافه میکنه تا اون کاراکترها دیگه خاصیت اجرایی نداشته باشن.
2- magic_quotes_runtime
این دایرکتیو اگر on باشه با عث میشه تا کوتیشنهای داده هایی که از منابع خارجی به جز بالا وارد اسکرپت میشه هم اسکیپ بشه. مثلاً اطلاعات گرفته شده از دیتابیس یا فایلهای متنی.
3- magic_quotes_sybase
کار این دایرکتوی هم شبیه دو تای قبلی هست ولی متد اسکیپ کردنش فرق میکنه
کمتر پیش میاد که توی یک سرور معمولی دایرکتیو های 2 و 3 رو روشن کنن. اونی که ما بیشتر از همه باهاش کار داریم magic_quotes_gpc هست.
تابع get_magic_quotes_gpc میاد مقدار تنظیم شده برای دایرکتیو magic_quotes_gpc رو به صورت بولی یعنی true یا false بر میگردونه
پس ما میتونیم از این تابع برای اینکه بفهمیم داده های ارسال شده به اسکرپت به صورت خام هستن یا اینکه اسکیپ شدن استفاده کنیم
دیگه فکر میکنم تابعی که با نام UnEscape توی کدهای قبلی داشتیم نیاز به توضیح زیادی نداشته باشه
ما اسکرپتمونو با این فرض نوشتیم که داده ها به صورت خام به اسکرپت ارسال شده تا بتونیم برای خنثی کردنشون از تابع mysql_real_escape_string استفاده کنیم.
حالا اگر داده ها به صورت خام نباشه و اسکیپ شده باشه تابع mysql_real_escape_string فقط بک اسلشهای اضافه شده به داده ها رو اسکیپ میکنه و ریسک ارسال کوئری خطرناک به دیتابیس به وجود میاد.
برای اینکه از این خطر جلوگیری کنیم توی تابع UnEscape میایم چک میکنیم اگه مجیک کوت داده های ما رو اسکیپ کرده باشه با استفاده از تابع stripslashes داده ها رو به صورت خام در میاریم و اگر داده ها اسکیپ نیشده باشه اونا رو به حال خودشون رها میکنیم.
اگه بد توضیح دارم ببخشید دیگه چیزی به ذهنم نمیرسه