مشکل دیتا بیس فارسی

سلام دوستان.

من دارم یک سیستم هاستینگ برای خودم تحت php می نویسم و در یک قسمت برنامه نویسی با یک مشکل عجیب بر خوردم. یک فانکشن نوشتم که تاریخ میلادی را به یک رشته ی فارسی تبدیل می کنه و در دیتا بیس ذخیره می کنه اما وقتی اونو در پنل کاربران بازیابی می کنم تاریخ بصورت ؟؟؟؟؟ از بانک اطلاعاتی بیرون میاد. وقتی یکم باهاش ور رفتم و بجای easyphp به گفته یکی از دوستان xampp رو نصب کردم بازهم همین مشکل بود تنها با این تفاوت که می دیدم فرمت فیلد ها در بانک اطلاعاتی latin1-swidish است. حالا به نظرتون من چیکار باید بکنم و راه حل چیه؟ ( یکم تازه کارم ببخشید اگه ساده است جوابش. )
 

mosi20

Active Member
وقتی وصل شدی به دیتابیس بعدش این کوئری را اجرا کن
mysql_query("SET NAMES 'UTF8'") or die(mysql_error());
بعدشم توی phpmyadmin برو و تمامی فیلدهای که latin1-swidish رو به utf8_persian_ci تغییر بده.
در ضمن منم یه سیستم هاستینگ نوشتم.
hostiran.net کار منه .
اگه سوالی داشتی برام پیام خصوصی بفرست
 

ziXet

مدیر انجمن PHP/MYSQL
وقتی وصل شدی به دیتابیس بعدش این کوئری را اجرا کن
mysql_query("SET NAMES 'UTF8'") or die(mysql_error());
بعدشم توی phpmyadmin برو و تمامی فیلدهای که latin1-swidish رو به utf8_persian_ci تغییر بده.
در ضمن منم یه سیستم هاستینگ نوشتم.
hostiran.net کار منه .
اگه سوالی داشتی برام پیام خصوصی بفرست
فکر نکنم به این ربطی داشته باشه!
اولا از collection فارسی استفاده کن
دوما صفحه ای که کوئری توش هست رو با utf-8 سیو کن.
احتمال دومی بیشتره
 

md5

Member
راست میگه اشکال باید از صفحاتت باشه یا اونی که اطلاعات رو ذخیره میکنه یا اونی که نمایش میده
 
محسن داوری عزیز متشکرم، قسمت اول حرف شما رو هنوز انجام ندادم و الان تست می کنم. shahkey و md5 عزیز هم روی utf 8 اتفاق نظر داشتید که مطمئنا رعایت کردم. اما در مورد پرمیشن باید بگم تحت ویندوز با سرور لوکال امتحان کردم و پرمیشن مجاز رو داره به گمانم. به نظرتون دیگه از چی می تونه باشه؟
 

ziXet

مدیر انجمن PHP/MYSQL
محسن داوری عزیز متشکرم، قسمت اول حرف شما رو هنوز انجام ندادم و الان تست می کنم. shahkey و md5 عزیز هم روی utf 8 اتفاق نظر داشتید که مطمئنا رعایت کردم. اما در مورد پرمیشن باید بگم تحت ویندوز با سرور لوکال امتحان کردم و پرمیشن مجاز رو داره به گمانم. به نظرتون دیگه از چی می تونه باشه؟
برو توی phpmyadmin ببین چجوریه اون تو!
اگه اونجا هم ؟؟؟؟ بود معلوم میشه مشکلت از insert هست وگرنه مشکل خوندن داری که احتمال 99 درصد مشکل ایزرت داری.
برای مشکل اینزرت هم معمولا با اشتباه اینکودینگ صفحه این مشکل به وجود میاد. شما یبار دیگه اون صفحه ای که توش دستورات اینزرت هست رو انکودینگشو چک کن
 

md5

Member
اوه این 2 تا تاپیک آخر منو نادیده بگیرید چون اونو یه جا دیگه پست کردم نمیدونم چرا از اینجا سر در آورد
 
دوستان عزیز حل شد مشکل...
مشکل دو قسمتی بود ... قسمت اول ثبت تاریخ فارسی در دیتا بیس بود که با دستور:
mysql_query("SET NAMES 'UTF8'") or die(mysql_error());
که آقای داوری داده بودند حل شد.
قسمت دوم که بازیابی تاریخ بود که اشکال همانطور که دوستان دیگر گفتند از charset اشتباه فایل فانکشن هام بود که بایستی utf-8 میشد.

حالا به یک سوال دیگه برخوردم می دونید که در پی اچ پی نسخه ی جدید تابع session و تابع header با هم به دلایل امنیتی مشکل دارند شما چه راه حلی برای ریدایرکت به صفحات دیگر غیر از استفاده از کد جاوا پیشنهاد می کنید که با سشن ها هم مشکل نداشته باشد و آنها را بشناسد؟
البته پیشاپیش عذر خواهی می کنم که در یک پست جداگانه نپرسیدم.
 

md5

Member
یعنی اگه سشن تعریف کنی دیگه ریداریکت نمیشه؟ من که فکر نمیکنم اینطوری باشه
 

ziXet

مدیر انجمن PHP/MYSQL
فکر نمیکتن ربطی داشته باشه!
با همون هدر location تعریف کن! مشکل سشن هم نداری مخصوصا اگه سشنهاتو تو دیتابیس ریخته باشی
 
مشکلی که داره با session_cache_limiter است. و با گذاشتن @ به اول تابع session_start درست میشه. البته این اشکال در php 5 رخ میده و ما به قبل را که تست کردم اینطور نبوده. از ریفرنس یک مطالعه ای داشتم نوشته بود برای امنیت بیشتره تا حملات هکری نشه حالا به نظر شما راهی جز قرار دادن @ وجود داره؟ آخه می دونید که این اشکال رو نادیده میگیره و وجود اشکال رو نفی نمی کنه. shahkey عزیز فقط متوجه نشدم منظورتون از اینکه سشن رو تو دیتا بیس ریخته باشم یعنی چی؟ میشه یکم بیشتر توضیح بدهید چون من از سشن ها فقط الفبای اولیه اش را می دانم.
 
آخرین ویرایش:
الان دارم جستجو می کنم اما در مورد قسمت اول سوالم:
مشکلی که داره با session_cache_limiter است. و با گذاشتن @ به اول تابع session_start درست میشه. البته این اشکال در php 5 رخ میده و ما به قبل را که تست کردم اینطور نبوده. از ریفرنس یک مطالعه ای داشتم نوشته بود برای امنیت بیشتره تا حملات هکری نشه حالا به نظر شما راهی جز قرار دادن @ وجود داره؟ آخه می دونید که این اشکال رو نادیده میگیره و وجود اشکال رو نفی نمی کنه.
چیکار بایستی بکنم؟
 

ziXet

مدیر انجمن PHP/MYSQL
مشکلی که داره با session_cache_limiter است. و با گذاشتن @ به اول تابع session_start درست میشه. البته این اشکال در php 5 رخ میده و ما به قبل را که تست کردم اینطور نبوده. از ریفرنس یک مطالعه ای داشتم نوشته بود برای امنیت بیشتره تا حملات هکری نشه حالا به نظر شما راهی جز قرار دادن @ وجود داره؟ آخه می دونید که این اشکال رو نادیده میگیره و وجود اشکال رو نفی نمی کنه. shahkey عزیز فقط متوجه نشدم منظورتون از اینکه سشن رو تو دیتا بیس ریخته باشم یعنی چی؟ میشه یکم بیشتر توضیح بدهید چون من از سشن ها فقط الفبای اولیه اش را می دانم.
معمولا برای سیستمهایی که خیلی ترافیک دارن مثل سیستم فرومها سشن ها رو توی دیتابیس ذخیره میکنن که کنترلشون رو کاملا در دست بگیرن و به سرور هم فشار نیاره.
 

جدیدترین ارسال ها

بالا