PDA

View Full Version : ارسال پارامتر های دریافت شده از POST به تابع



moosavimaleki
دوشنبه 18 اسفند 1393, 21:00 عصر
سلام
من میخوام با یه API ارتباط برقرا کنم
منتها باید کاراکتر های فارسی رو به حالت کدینگ \UXXXX در بیارم
با اینش کار نداریم
هم با تابع json_encode میشه هم خودم یه تابع نوشتم که str_replace کنه


function convert_u($cap){
$cap = str_replace('ض','"\u0636"',$cap);
$cap = str_replace('ص','"\u0635"',$cap);
$cap = str_replace('ث','"\u062b"',$cap);
$cap = str_replace('ق','"\u0642"',$cap);
$cap = str_replace('ف','"\u0641"',$cap);
$cap = str_replace('غ','"\u063a"',$cap);
$cap = str_replace('ع','"\u0639"',$cap);
$cap = str_replace('ه','"\u0647"',$cap);
$cap = str_replace('خ','"\u062e"',$cap);
$cap = str_replace('ح','"\u062d"',$cap);
$cap = str_replace('ج','"\u062c"',$cap);
$cap = str_replace('چ','"\u0686"',$cap);
$cap = str_replace('ش','"\u0634"',$cap);
$cap = str_replace('س','"\u0633"',$cap);
$cap = str_replace('ی','"\u06cc"',$cap);
$cap = str_replace('ب','"\u0628"',$cap);
$cap = str_replace('ل','"\u0644"',$cap);
$cap = str_replace('ا','"\u0627"',$cap);
$cap = str_replace('ت','"\u062a"',$cap);
$cap = str_replace('ن','"\u0646"',$cap);
$cap = str_replace('م','"\u0645"',$cap);
$cap = str_replace('ک','"\u06a9"',$cap);
$cap = str_replace('گ','"\u06af"',$cap);
$cap = str_replace('ظ','"\u0638"',$cap);
$cap = str_replace('ط','"\u0637"',$cap);
$cap = str_replace('ز','"\u0632"',$cap);
$cap = str_replace('ر','"\u0631"',$cap);
$cap = str_replace('ذ','"\u0630"',$cap);
$cap = str_replace('د','"\u062f"',$cap);
$cap = str_replace('ئ','"\u0626"',$cap);
$cap = str_replace('و','"\u0648"',$cap);
$cap = str_replace('آ','"\u0622"',$cap);
$cap = str_replace('ء','"\u0621"',$cap);
$cap = str_replace('أ','"\u0623"',$cap);
$cap = str_replace('إ','"\u0625"',$cap);
$cap = str_replace('ؤ','"\u0624"',$cap);
$cap = str_replace('ژ','"\u0698"',$cap);
$cap = str_replace('ي','"\u064a"',$cap);
$cap = str_replace('ة','"\u0629"',$cap);
return $cap;
}


اما وقتی پارامتر رسیده از طرف POST یا GET رو براش میفرستم اصلا هیییچ تاثیری روش نداره!!!


$caption = $_GET['caption'];
echo convert_u($caption);
echo $caption;


یعنی خروجی دو دستوره پایین یکی هست!!!




در صورتی که وقتی از تابع به این صورت استفاده میکنم درسته و خرجی رو تبدیل میکنه

convert_u('حامد');
convert_u($parameter);

bagherok
دوشنبه 18 اسفند 1393, 21:37 عصر
اینو تست کنید.

echo convert_u(utf8_decode(urldecode($_GET['caption'])));

moosavimaleki
دوشنبه 18 اسفند 1393, 21:42 عصر
هر کار میکنم کد بالا رو اشتباه نشون میده!! معلوم نیست کجا دچار اشتباه شده

ببینید خروجی هر دو دستور چاپ زیر یکی میشه

$caption = $_GET['caption'];
echo convert_u($caption);
echo $caption;





در صورتی که اگه این کار رو بکنم یکی نمیشه

$caption = 'حامد';

echo convert_u($caption);

echo $caption;






فقط با چیزایی که POSt یا GET شده باشن مشکل داره !!! کلا روشون اثر نداره چرا ؟! به گلوبال بودن این ها ربطی داره؟!

moosavimaleki
دوشنبه 18 اسفند 1393, 21:44 عصر
اینو تست کنید.

echo convert_u(utf8_decode(urldecode($_GET['caption'])));

نه اینم جواب نداد!!
ربطی به تابع من نداره ها کلا هرچیزی که پست شده باشه رو بهش گیر میده

bagherok
دوشنبه 18 اسفند 1393, 21:47 عصر
کد بالا رو تست کردید!
شما قبل از ارسال
داده ها رو کد کنید.

http://php.net/manual/en/function.urldecode.php


خب احتمالا داده ها بصورت زیر هستند
یعنی ض بصورت ض در میاد.

moosavimaleki
دوشنبه 18 اسفند 1393, 21:59 عصر
کد بالا رو تست کردید!
شما قبل از ارسال
داده ها رو کد کنید.

http://php.net/manual/en/function.urldecode.php


خب احتمالا داده ها بصورت زیر هستند
یعنی ض بصورت ض در میاد.

بله تست کردم

شما تا حالا به این مشکل نخوردید که اطلاعات دریافتی از فرمتون رو نتونید کاری کنید!! یعنی بفرستید به تابع یا str_replace کنید..؟!؟؟!

نکنه مشکل از فرمه منه ؟!

این فرم من :




if (isset($_GET['username']) && isset($_GET['password'])){
$username = $_GET['username'];
$password = $_GET['password'];
$captione = $_GET['caption'];
echo $captione.'<br>';
echo convert_u(utf8_decode(urldecode($captione)));

}else{
loginForm();
}

function loginForm(){
echo '<form id = "myform" enctype="multipart/form-data" accept-charset="ISO-8859-1" action="test.php" method="GET">';
echo 'username: <input name="username" type="text" />';
echo 'password: <input name="password" type="password" />';
echo 'picture: <input name="pic" type="file" />';
echo 'caption: <textarea id="user_data" name="caption" type="text" ></textarea>';
echo '<input type="submit" value="Send File" />';
echo '</form>';

}

moosavimaleki
دوشنبه 18 اسفند 1393, 22:02 عصر
enctype="multipart/form-data" accept-charset="ISO-8859-1"
اینارم بردارم فرقی نمیکنه

bagherok
دوشنبه 18 اسفند 1393, 22:04 عصر
فعلا اینو هم تست کنید ببینید همون چیزی که پست میشه رو تو خروجی نشون میده
PHP]<?phpheader('Content-Type: text/html; charset=utf-8');
echo urldecode($_GET['caption']);
echo $_GET['caption'];


[/PHP]