سلام
اگر فرصت ندارید مطلب رو از بخش "نتیجه نهایی" بخونید.
این مطلب نتیجه مسئله ای هست که که تقریبا نصف امروز من رو گرفت، و به همین دلیل ترجیح دادم اون رو به عنوان یک تجربه بنویسم تا اگر شما هم با این مشکل مواجه شدید، دیگه زمانتون رو از دست ندید :)
و خب برای انتشارش هم خیلی به جایی به غیر از سکان آکادمی فکر نکردم، چون به نظرم مناسبترین گزینه برای اشتراک این تجربه بود.
داستان اینجوری هست که من برای یکی از پروژه ها مشغول دیتاانتری هستم و شب گذشته 50 مطلب رو به همراه جزییات آپلود کردم، امروز صبح که سایت رو باز کردم (پروژه وردپرس هست و برای هوستینگ هم از یکی از شرکت های معمولی ایرانی استفاده می کنم، خوشبختانه عادت به نسخه بک آپ دارم وگرنه هرچند وقت هوست مشکل امنیتی داره :) )، خب داشتم می گفتم سایت رو که باز کردم بعد از چند ثانیه ریدایرکت می شد به یک سایت اسپم، طبق تجربه اکثرا یک اسکریپت در فایل های index.php یا header.php یا مثلا htaccess دلیل این اتفاق هست، ولی این بار هرچقدر فایل ها رو سرچ کردم چیزی پیدا نکردم، به واسطه نسخه بک آپی که روز قبلتر گرفته بودم و چندبار آپلود و دانلود فهمیدم مشکل از دیتا بیس هست، و بعد از تست جدول ها به wp_posts رسیدم (تقریبا از صبح تا ظهر به اینجا رسیدم). یک راه حل آپلود دوباره 50 مطلب آخر بود که خب قبول کردنش ساده نبود :)
پس ادامه دادم تا به این نتیجه رسیدم که به تمام رکوردهای این جدول یک خط اسکریپت اضافه شده که باعث میشه تا چه صفحه اصلی سایت و چه هر کدوم از مطالب رو باز می کنم ریدایرکت می شه به اون سایت اسپم.
<script s r c = 'https://sample.com/ad.js?port=5' type='text/javascript'></script>
من بک اند دولوپر نیستم و تخصصی در php و mysql ندارم
پس به دوستان خوب گوگل و استک اورفلو سر زدم با این مضمون که چگونه یک کوئری بنویسم تا بتونم از مقادیر یک ستون، یک مقدار استرینگ رو پیدا کنه و مثلا با فضای خالی جایگزینش کنه یا به عبارت دیگه حذفش کنه.
از اینجا با آزمون خطای کوئری ها و چندبار مجدد آپلود بک آپ اون جدول تقریبا فکر کنم یک ساعت و نیم شد تا دیگه کامل مسئله حل شد. و این شد کوئری برای کسب نتیجه نهایی.
"نتییجه نهایی"
UPDATE `wp_posts` SET `post_content`= replace(`post_content`, "<s c ri p t s r c='https://sample .com/ad.js?port=5' type='text/javascript'></script>", '');
توضیحات کد:
نوع کوئری آپدیت هست برای تغییر یک مقدار، wp_posts اسم جدول و post_content اسم ستون مورد نظر، در ادامه داخل پرانتز مجدد اسم ستون و سپس داخل " " اون مقداری که می خواستم پیدا بشه و در ادامه داخل '' اون مقداری که می خواستم باهاش جایگزین بشه، در این مورد چون هدف حذف کردن بود، مقدار آخر رو خالی گذاشتم.
این مطلب کاملا به عنوان یک تجربه به اشتراک گذاشته شده، و ممکن هست به لحاظ فنی، نگارشی و... ایراداتی داشته باشه، اما امیدوارم براتون مفید باشه و در زمانتون صرفه جویی کنه.
خوب و خوش باشید
علی فلاحی