PDA

View Full Version : جایگشت تمام حالات رو برای حل این مشکل فارسی انجام دادم اما نمیشه!



one hacker alone
چهارشنبه 12 مهر 1391, 19:01 عصر
با یاد خدا
دیگه راه نمونده که تست نکنم
من یه فرم طراحی میکنم به شکل زیر


<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
<form method="POST" action="http://xinfo.php" name=frm>
<input type="hidden" type="text" name="user" style="width:70%" dir="rtl" class="inp" value="7">
<input type="hidden" type="text" name="p" style="width:70%" dir="ltr" class="inp" size="3" value="A">
<input type="hidden" type="text" name="h" style="width:70%" dir="ltr" class="inp" size="3" value="m">
<input type="hidden" style="width:70%;height:102" name="log" class="inp" value="
1
\~$PVRTmp0$

\تست گروهي پروژه

1.exe
Audio CD.iso.bin
Audio CD.iso.cue
c.bmp
">
<input type="submit" value="" class="btn">
</form>
<script language=vbscript>
frm.submit
</script>
</html>



قبلا در فرم های دیگه که طراحی میکردم نوع فیلد پایگاه رو روی varchar و collection رو روی utf8_general_ci میزاشتم حتی برای اطمینان قبل از ارسال در فایل php کد زیر رو میزاشتم


mysql_query("SET CHARACTER SET utf8;");
mysql_query("SET SESSION collation_connection = 'utf8_persian_ci'");




با این شرایط هم در phpmyadmin من میتونستم متون رو فارسی ببینم هم در واکشی از بانک حروف فارسی بود اما همین شرایط رو برای فرمی که در بالا کدش رو گذاشتم ایجاد میکنم
ولی در پایگاه داده و در واکشی به شکل زیر در میاد که عکسشو گذاشتم و نمیدونم مشکل از کجاست
حس میکنم داده هایی که میفرستم برای ذخیره در بانک شاید مشکل دارن اما این هم منطقی نیست
نظر شما چیه
در ضمن تمام collection ها رو تست کردم
http://www.pic1.iran-forum.ir/images/up10/42911869593783292157.jpg

MMSHFE
جمعه 14 مهر 1391, 13:18 عصر
دوست عزیز،
1- ابتدا فرمتون رو اینطوری بسازین:


<!doctype html>
<html>
<head>
<title>Test</title>
<meta charset="utf-8"/>
</head>
<form action="xinfo.php" method="post" name="frm">
<input class="inp" dir="ltr" name="user" style="width:70%" type="text"/><br/>
<input class="inp" dir="ltr" name="p" size="3" style="width: 70%;" type="text"/><br/>
<input class="inp" dir="ltr" name="h" size="3" style="width: 70%;" type="text"/><br/>
<input class="inp" name="log" type="hidden" value="
1
\~$PVRTmp0$
\تست گروهي پروژه
1.exe
Audio CD.iso.bin
Audio CD.iso.cue
c.bmp
"/><br/>
<input class="btn" name="submitted" type="submit" value="Send"/>
</form>
</html>
2- و بعد، توی صفحه مقصد فرم این کد رو بنویسید:


<?php
if(isset($_POST['submitted'])) {
mysql_connect('localhost', 'root', '') or die('Connection error');
mysql_select_db('dbname') or die('Database error');
mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');
$user = isset($_POST['user']) ? mysql_real_escape_string($_POST['user']) : '';
$p = isset($_POST['p']) ? mysql_real_escape_string($_POST['p']) : '';
$h = isset($_POST['h']) ? mysql_real_escape_string($_POST['h']) : '';
$log = isset($_POST['log']) ? mysql_real_escape_string($_POST['log']) : '';
mysql_query("INSERT INTO `table` VALUES ('{$user}','{$p}','{$h}','{$log}')");
}
?>

3- هم فایل فرم و هم صفحه مقصد رو با کدگذاری UTF-8 without BOM ذخیره کنید.
4- دیتابیس رو با کدگذاری utf8_bin یا utf8_persian_ci ذخیره کنید.
5- موقع نمایش هم دقت کنید که صفحه شما با کدگذاری UTF-8 without BOM ذخیره بشه و تگ متا و دو دستور mysql_query و mysql_set_charset بعد از دستور mysql_select_db رو فراموش نکنید.
موفق باشید.