отправка кириллического текста из flash as2 в базу данных - PullRequest
1 голос
/ 13 марта 2012

У меня действительно большая проблема с сохранением данных из Flash as2 в базу данных.Я попытался решить это сам, прочитал много тем на разных форумах, но безрезультатно.

У меня есть поле ввода текста (mess_txt) в проекте as2 и кнопка Отправить со следующим кодом:

on(release){
   var formData = new LoadVars();
   formData.etext = mess_txt.text;
   formData.sendAndLoad("sendmail.php", formData, "POST");

   formData.onLoad = function(){
       // receive actions...
   }
}

Код в sendmail.php:

include("connect.php");
$text = $_POST['etext'];

$text = str_replace("\r", "<br/>", trim(strip_tags($text)));
$text = str_replace("\n", "", $text);
$text = str_replace("\"", "&quot;", $text);
$text = str_replace("'", "&#39;", $text);

$query = "insert into reviews (text, status) values ('".$text."', 'new')";
mysql_query($query) or die (mysql_error());

mail("mail@gmail.com", "Title!", "Message text: ".$text);

Когда я использую символы латинского алфавита, оба кода работают хорошо, но когда я ввожу символы кириллицы во входной текст, в коде PHP появляется пустая строка.Во входном тексте я использую _self шрифт и встраиваю все глифы.Но я думаю, что проблема заключается в отправке данных, потому что при отправке простой строки кириллицы вместо mess_txt.text у меня также есть пустая строка.

Интересно, что когда я использовал mb_detect_encoding($_POST['etext']) в коде PHP, я получил ASCII, а не UTF

Пожалуйста, помогите мне !!!!


РЕШЕНО !!!

Я нашел, как решить эту проблему!Может быть, это будет интересно кому-то еще ...

Перед отправкой данных из as2 в php я преобразовал их из текстовых в юникод-коды.Это моя функция в проекте as2:

on(release){
   var txt = getRealText(mess_txt.text);

   var formData = new LoadVars();
   formData.etext = txt;
   formData.sendAndLoad("sendmail.php", formData, "POST");

   formData.onLoad = function(){
       // receive actions...
   }

   function getRealText(str){
       var newStr = "";
       for(i=0, s=str.length; i<s; i++){
            newStr += "&#"+ord(str.charAt(i))+";";
       }
       return newStr;
   }
}

В результате я отправил строку "&#1090;&#1077;&#1089;&#1090;" вместо "тест".В PHP-файле я получил эту строку:

$text = html_entity_decode($_POST['etext'], ENT_NOQUOTES, 'UTF-8');

После этого я получил обычный кириллический (или любой другой) текст.

Есть надежда, что это кому-нибудь пригодится!

...