versaPHP
شنبه 09 اردیبهشت 1391, 15:25 عصر
با سلام ;
بنده در حال توسعه ی یک اسکریپت هستم ، تا به الان هم موردی نبوده الا یک مشکل که وقتم رو گرفته ،
مشکل در ازسال اطلاعات فارسی به دیتابیس هست ، بدین صورت که وقتی کسی ثبت نام میکند در صورتی که نام را فارسی بزند اطلاعات تغییر کد میدهند و در دیتابیس قرار میگیرند ، مثلا نام : احسان -> Ù تبدیل میشه ، اما اگه در خود دیتابیس نام را دوباره به احسان تغییر بدم در سایت درست نمایش داده میشه ، مطمئنم هستم که مشکل از انکودینگ نیست ، فایل فانکشن اصلی انکودش 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;
}
فایل فانکشنز رو هم + فایل رجیستر رو ضمیمه می کنم که احتمالا مشکل از همون فانکشنز هست .
پیشاپیش هم از دوستانی که کمک می کنند تشکر میکنم :قلب:
بنده در حال توسعه ی یک اسکریپت هستم ، تا به الان هم موردی نبوده الا یک مشکل که وقتم رو گرفته ،
مشکل در ازسال اطلاعات فارسی به دیتابیس هست ، بدین صورت که وقتی کسی ثبت نام میکند در صورتی که نام را فارسی بزند اطلاعات تغییر کد میدهند و در دیتابیس قرار میگیرند ، مثلا نام : احسان -> Ù تبدیل میشه ، اما اگه در خود دیتابیس نام را دوباره به احسان تغییر بدم در سایت درست نمایش داده میشه ، مطمئنم هستم که مشکل از انکودینگ نیست ، فایل فانکشن اصلی انکودش 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;
}
فایل فانکشنز رو هم + فایل رجیستر رو ضمیمه می کنم که احتمالا مشکل از همون فانکشنز هست .
پیشاپیش هم از دوستانی که کمک می کنند تشکر میکنم :قلب: