PDA

View Full Version : مشکل با فارسی در Mysql



tolinolin
جمعه 20 تیر 1393, 14:54 عصر
سلام
میدونم این سوال را هزاران بار پرسیدند، اما باور بفرمایید من الان دو سه ساعته دارم تو سایت های ایرانی و خارجی میگردم و هرکاری کردم نتیجه نگرفتم، مشکل من از این قراره که:
عبارات فارسی به اینصورت در phpmyadmin قابل مشاهده هستند، مثلا اینجوری:

عÙ
بعد از بازیابی (خواندن) هم مشکل دارند. نکته قابل توجه اینکه من در لوکال هاست مشکلی ندارم ولی وقتی میبرم رو هاست این مشکل رو دارم، ضمنا از mysqli هم استفاده میکنم. Collation جداول و فیلدها و دیتابیس هم درسته روی utf8_general_ci

خواهش میکنم کمک کنید

H:Shojaei
جمعه 20 تیر 1393, 15:12 عصر
سلام...
تو این تاپیک کامل توضیح داده شده:
http://barnamenevis.org/showthread.php?356992-%D9%BE%D8%B1%D8%B3%D8%B4%D9%87%D8%A7%DB%8C-%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1%DB%8C&p=1576424&viewfull=1#post1576424

MMSHFE
جمعه 20 تیر 1393, 15:21 عصر
کدتون رو بگذارین ببینیم چطور ذخیره میکنید و چطور میخونید.

tolinolin
جمعه 20 تیر 1393, 15:30 عصر
کدتون رو بگذارین ببینیم چطور ذخیره میکنید و چطور میخونید.

ذخیره:

$name = $_POST["name"];
$con = mysqli_connect('localhost','root','','dbname');
$name = stripslashes($name);
$name = mysqli_real_escape_string($con,$name);
$name = htmlentities($name);
$name = strip_tags($name);
$sql = "INSERT INTO `users`(`id`, `name`) VALUES (NULL,'$name')";
$q = mysqli_query($con,$sql);

tolinolin
جمعه 20 تیر 1393, 15:32 عصر
خواندن:


$con = mysqli_connect('localhost','root','','dbname');
$sql = "SELECT * FROM users";
$q = mysqli_query($con,$sql);
$x = mysqli_fetch_assoc($q);
$name = $x["name"];

MMSHFE
جمعه 20 تیر 1393, 16:23 عصر
htmlentities رو حذف کنید یا اینکه موقع نمایش با html_entity_decode کدها رو به حالت عادی برگردونید. خودتون دارین محتوای HTML رو موقع ذخیره کردن خنثی میکنید. نباید انتظار داشته باشین عادی ذخیره بشه. به جاش موقع نمایش، با htmlentities کدهای مخرب HTML رو خنثی کنید.

tolinolin
جمعه 20 تیر 1393, 16:36 عصر
htmlentities رو حذف کنید یا اینکه موقع نمایش با html_entity_decode کدها رو به حالت عادی برگردونید. خودتون دارین محتوای HTML رو موقع ذخیره کردن خنثی میکنید. نباید انتظار داشته باشین عادی ذخیره بشه. به جاش موقع نمایش، با htmlentities کدهای مخرب HTML رو خنثی کنید.

ممنون، یعنی از نظر امنیتی موقع ذخیره نیازی به تابع htmlentities نیست؟

MMSHFE
جمعه 20 تیر 1393, 16:45 عصر
نه موقع ذخیره توی دیتابیس فقط باید جلوی SQL Injection رو بگیرین. موقع نمایش توی صفحه جلوی JS Injection و...

tolinolin
جمعه 20 تیر 1393, 16:49 عصر
نه موقع ذخیره توی دیتابیس فقط باید جلوی SQL Injection رو بگیرین. موقع نمایش توی صفحه جلوی JS Injection و...

سپاس فراوان