جمعه ۳۰ آبان ۱۳۹۳ ساعت ۱۴:۰۳ ب.ظ
(آخرین تغییر در ارسال: جمعه ۳۰ آبان ۱۳۹۳ ساعت ۱۴:۰۷ ب.ظ توسط زاکر.)
اکثر کاربران در نصب جوملا 3 با magic quotes gpc دچار مشکل میشوند که در اینترنت راه حل های زیادی در رابطه با این موضوع انتشار یافته است اما متاسفانه این راه حل ها در همه سرورها و هاستینگ ها عملی نیستند.
در این پست روشی ارائه میشود که در تمامی سرورها و هاستینگ ها قابل استفاده است و مشکل magic quotes gpc را ریشه کن میکند.
مرحله اول: جوملا 3 را دانلود کرده در هاست خود آپلود کنید و استخراج کنید.(فک کنم همه این کار رو انجام دادن)
مرحله دوم: در مکانی که جوملا 3 را استخراج کرده اید وارد آدرس زیر شوید.
installation/models
وفایل setup.php را ویرایش کنید.
مرحله سوم:
با استفاده ار اسکرول کدهای زیر را پیدا کنید.(در جوملا فارسی سطر 237 و در جوملا انگلیسی 234)
Check for magic quotes gpc.//
$option = new stdClass;
$option->label = JText::_('INSTL_MAGIC_QUOTES_GPC');
$option->state = (ini_get('magic_quotes_gpc') == false);
$option->notice = null;
$options[] = $option;
$option = new stdClass;
$option->label = JText::_('INSTL_MAGIC_QUOTES_GPC');
$option->state = (ini_get('magic_quotes_gpc') == false);
$option->notice = null;
$options[] = $option;
مرحله چهارم: کدهای فوق را حذف کنید و خیره کنید.
مرحله پنجم: حالا جوملا 3 را نصب کنید.
ولی نکته مهمی که در رابطه با این روش وجود داره اینه که احتمال میرود با این کار در ایجاد و ویرایش محتوا مشکل بوجود آید (البته این مشکل برای من پیش نیامد و احتمالش خیلی کمه)
راه حل این مورد:
مرحله اول: وارد آدرس libraries/joomla/filter در روت بشین و فایل input.php شده را بصورت زیر ویرایش کنید.
مرحله دوم: به کمک اسکرول بار سطر در نزدیکی های سطر 261 تابع clean را پیدا کنید و اعمال زیر را در آن اعمال کنید.
public function clean($source, $type = 'string')
{
// Handle the type constraint
switch (strtoupper($type))
{...در این قسمت کدهای زیایی وجود دارد که کاری با آنها نداریم
}
if(get_magic_quotes_gpc()) $result = self::_stripSlashesRecursive($result);
}
{
// Handle the type constraint
switch (strtoupper($type))
{...در این قسمت کدهای زیایی وجود دارد که کاری با آنها نداریم
}
if(get_magic_quotes_gpc()) $result = self::_stripSlashesRecursive($result);
}
تابع فوق طولانیتر از چیزی هست که من نوشتم، در قسمت قرمز رنک کدهای زیادی است که ما کاری با آنها نداریم ما فقق یکه شرط بعد ار آهن کدها به تابع اضافه میکنیم که با رنک آبی نشان داده شده. (تصویر راهنما)
مرحله سوم: اضافه کردن یک تابع برای این فایل(در دستور شرطی فوق یک تابع فراخوانی کردیم که بایذ آن تابع را به فایل اضافه کنیم). حالا باید یک تابع به این فایل اضافه کنیم که در هنگام فعال بودن یا نبودن Magic Quotes GPC مشکلی پیش نیاد چون ما تابع قبلی را برپایه فعال نبودن Magic Quotes GPC برنامه ریزی کردیم و این تابع را فراخوانی کردیم. برای این کار به سطر 755 (تقریبا آخر فایل) مراجعه کنید و تابع stripSlashesRecursive را بصورت زیر اضافه کنید.
}
protected static function _stripSlashesRecursive($value)
{
$value = is_array($value) ? array_map(array('JFilterInput', '_stripSlashesRecursive'), $value) : stripslashes($value);
return $value;
}
}
قسمت آبی رنگ (تابع) به کدها اضافه شده است اگه دقت کنید تابع دقیقا قبل از آخرین ( { بسته ) قرار گرفته است. (تصویر راهنما)