1 ضمیمه
مشکل در ارسال اطلاعات فارسی به دیتابیس mysql
با سلام ;
بنده در حال توسعه ی یک اسکریپت هستم ، تا به الان هم موردی نبوده الا یک مشکل که وقتم رو گرفته ،
مشکل در ازسال اطلاعات فارسی به دیتابیس هست ، بدین صورت که وقتی کسی ثبت نام میکند در صورتی که نام را فارسی بزند اطلاعات تغییر کد میدهند و در دیتابیس قرار میگیرند ، مثلا نام : احسان -> Ù تبدیل میشه ، اما اگه در خود دیتابیس نام را دوباره به احسان تغییر بدم در سایت درست نمایش داده میشه ، مطمئنم هستم که مشکل از انکودینگ نیست ، فایل فانکشن اصلی انکودش ANSI (with out BOM) هست و همچنین بقیه ی فایل ها .... ، ضمنا دیتابیس هم ـutf-8 ـه و فیلد ها نیز همینطور ....
از دستورات مختلف مانند : SET NAMES 'utf-8' (اگه اشتباه نکنم!) و امثالهم هم استفاده کردم ، ولی لا فائده !
من خودم احساس میکنم مشکل از فانکشن زیر باشه که همه ی رشته ها رو عوض میکنه ، اما با فارسی کار نمی کنه :
// more advanced cleaning mysql function.
function mysqlScapeStr($str)
{
if(!get_magic_quotes_gpc())
{
$str = strip_tags($str);
$str = htmlentities($str);
return mysql_real_escape_string($str);
}
$str = stripslashes($str);
$str = strip_tags($str);
$str = htmlentities($str);
return mysql_real_escape_string($str);
}
مثلا متغیر $username
$username = mysqlScapeStr($username);
این هم فانکشن ارسال:
// insert values in the database $data must be an array
function inserData($data)
{
global $dataBaseTable;
$true = false;
if(is_array($data))
{
$values = array_map('mysqlScapeStr', array_values($data));
$keys = array_map('mysqlScapeStr',array_keys($data));
# Set character_set_client and character_set_connection
$query = mysql_query('INSERT INTO `'.$dataBaseTable.'` (`'.implode('`,`', $keys).'`) VALUES (\''.implode('\',\'', $values).'\')');
if($query !== false && mysql_affected_rows())$true = true;
}
return $true;
}
فایل فانکشنز رو هم + فایل رجیستر رو ضمیمه می کنم که احتمالا مشکل از همون فانکشنز هست .
پیشاپیش هم از دوستانی که کمک می کنند تشکر میکنم :قلب:
نقل قول: مشکل در ارسال اطلاعات فارسی به دیتابیس mysql
دوست عزیز تنها موقع فرستادن اطلاعات با انکد utf8 کفاف نمیده باید سمت سرور پایگاه دادت رو هم که میسازی برای قسمت هایی که میدونی قراره اطلاعات فارسی داخلش ذخیره بشه باید روی utf8-persian ci تنظیم کنی وگرنه اطلاعاتت به همون صورتی که فرمودید ذخیره میشه.
موفق باشید.
نقل قول: مشکل در ارسال اطلاعات فارسی به دیتابیس mysql
نقل قول:
نوشته شده توسط
khanlo.javid
دوست عزیز تنها موقع فرستادن اطلاعات با انکد utf8 کفاف نمیده باید سمت سرور پایگاه دادت رو هم که میسازی برای قسمت هایی که میدونی قراره اطلاعات فارسی داخلش ذخیره بشه باید روی utf8-persian ci تنظیم کنی وگرنه اطلاعاتت به همون صورتی که فرمودید ذخیره میشه.
موفق باشید.
ممنون از توجهتون ،
این تصویر رو بنگرید :
http://www.jokfa.ir/image/uploads/13...okfa.ir---.jpg
و
http://www.jokfa.ir/image/uploads/13...okfa.ir---.jpg
خود دیتابیس هم utf-8 هست
از چی میتونه باشه بنظرتون ؟ از دوستانی که با این مشکل برخورد کردند تقاضا دارم راهنمایی کنند
نقل قول: مشکل در ارسال اطلاعات فارسی به دیتابیس mysql
htmlentities رو اینجوری استفاده کن
$value = htmlentities( $value, ENT_QUOTES, 'utf-8' );
نقل قول: مشکل در ارسال اطلاعات فارسی به دیتابیس mysql
از این تابع استفاده کنید:
// more advanced cleaning mysql function.
function mysqlScapeStr($str) {
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
$str = strip_tags($str);
$str = htmlentities($str, ENT_QUOTES, 'utf-8');
mysql_set_charset('utf-8');
return mysql_real_escape_string($str);
}
موفق باشید.
نقل قول: مشکل در ارسال اطلاعات فارسی به دیتابیس mysql
نقل قول:
نوشته شده توسط
plague
htmlentities رو اینجوری استفاده کن
$value = htmlentities( $value, ENT_QUOTES, 'utf-8' );
نقل قول:
نوشته شده توسط
MMSHFE
از این تابع استفاده کنید:
// more advanced cleaning mysql function.
function mysqlScapeStr($str) {
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
$str = strip_tags($str);
$str = htmlentities($str, ENT_QUOTES, 'utf-8');
mysql_set_charset('utf-8');
return mysql_real_escape_string($str);
}
موفق باشید.
اوکی شد ...
شکرا جزیلا :قلب: