PDA

View Full Version : بازم فارسی و MySQL.



امیـرحسین
سه شنبه 03 شهریور 1388, 18:15 عصر
سلام
این تیپ سوال خیلی پرسیده شده. من سرچ کردم ولی چیزی که شبیه مشکلم باشه رو پیدا نکردم.
من یه سایت فارسی دارم که تا حالا خیلی خوشحال کار می کرد ولی دو روزه که اطلاعات فارسی رو بصورت علامت سوال ذخیره می کنه (و طبیعتا همینوجوری هم نمایش میده). Collation جداول و ستونها و دیتابیس utf8_unicode_ci هست.

من وارد cPanel شدم و در قسمت awstat. یه چیز عجیب دیدم که یه نفر با یه آیدی ناشناس وارد شده و این برنامه ورودش رو ثبت کرده. به هاستینگ زالو گفتم، گفت مشکل MySQL با خودته، اون یارو هم که وارد شده هیچی نیست!!! :متعجب:

دوستان تجربه تراوش کنید که من تو این زمینه تجربه ای ندارم...


ممنون
AHHP

narsic
سه شنبه 03 شهریور 1388, 22:35 عصر
با سلام
از مدیر سرور بپرسید که آیا نسخه MYSQL رو تغییر ندادن ؟؟
این شخصی که آمارش ثبت شده آیا ورود غیر مجاز داشته در صورتی که پاسختون مثبته بررسی کنید که آیا صفحات شما با utf-8 یونیکد شده اند و یا خیر ؟(شاید هکر کد جدیدی به صفحات شما اضافه کرده باشد که باعث تغییر یونیکد صفحات شده است (هکر های چینی) ).
موفق باشید

امیـرحسین
سه شنبه 03 شهریور 1388, 23:34 عصر
نه سرور اگه تغییری داده بود می گفت. این یارو که وارد شده ایرانیه! دقیقا دو هفته پیش. البته من نمی دونم که کجا وارد شده. یه بخشی داشت با عنوان Authenticated users که فقط آیدی اون بود.
صفحات رو چک کردم. مشکل از دیتابیسه. تست کردم دیدم علامت سوال ذخیره میشه....

narsic
چهارشنبه 04 شهریور 1388, 00:07 صبح
یه فایل جدید ایجاد کنید یک بانک جدید ایجاد کنید فایل را با بانک ارتباط دهید ببینید باز هم این مشکل بر میخورید و یا خیر .

امیـرحسین
چهارشنبه 04 شهریور 1388, 17:29 عصر
من یه فایل جدید ساختم با این کدها:
$conn = mysql_pconnect(*******);
mysql_select_db('db', $conn);
mysql_query("SET CHARACTER SET utf8", $conn);

$id = mysql_query("INSERT INTO tbl (`uparent`, `content`) VALUES('100', 'سلام')");
if(is_numeric($id))
{
$select = mysql_query("SELECT content FROM tbl WHERE id=$id");
$row = mysql_fetch_row($select);
echo "<div style='border:2px solid #323232'>". $row[0] ."</div>";
}
else
echo "<br />" . mysql_error($conn);
اطلاعات بصورت علامت سوال ذخیره شد. وقتی این سطر رو با phpmyadmin اضافه کردم. سالم بود. یه چیز دیگه. دستور "SET CHARACTER SET utf8" چیکار می کنه؟ این جزو کدهای اتصال سیستمم هست و باید باشه...

اعظم
چهارشنبه 04 شهریور 1388, 19:27 عصر
if (!headers_sent()){
header("Content-Type: text/html; charset=utf-8");
}

کد فوق رو اول صفحه اضافه کن و یک تستی بکن. :متفکر:

azade.kazemi33
چهارشنبه 04 شهریور 1388, 21:00 عصر
بعد از کد انتخاب دیتابیس این کئها رو اضافه کنید



mysql_query("SET NAMES utf8" );
mysql_query("SET CHARACHTER_SET utf8");

narsic
پنج شنبه 05 شهریور 1388, 01:09 صبح
SET CHARACTER SET utf8

برای تعیین نوع کارکتر های ارسالی و دریافتی از دیتابیس هست .
امیدوارم با کمک دوستان مشکلتون رفع شده باشه .

امیـرحسین
پنج شنبه 05 شهریور 1388, 16:03 عصر
SET NAMES utf8 رو توی اسکریپت گذاشتم و فارسی رو خیلی خوب ذخیره و نشون داد. با خوشحالی و سوت سوت کنان رفتم توی سیستمم هم این تغییر رو دادم. پدر و مادر و فرزند و نوه ی سایت رو علامت سوال کرد! سرم گیج رفت! :گیج:
سیستم رو با SET NAMES utf8 دوباره نصب کردم. حل شد. خدا پدر و مادر تیم مادایکس رو بیامرزه که توی بخش نصب، یه قسمتی برای reinstall کردن با collation های جدید داره :چشمک:
ولی من آخر هم نفهمیدم که چرا یهو اینجوری شد!

از همه دوستان گرانبها که لطف کردند و همفکری فرمودند، ممنونم.
موفق و مانا باشید