У меня действительно большая проблема с сохранением данных из 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("\"", """, $text);
$text = str_replace("'", "'", $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;
}
}
В результате я отправил строку "тест
" вместо "тест
".В PHP-файле я получил эту строку:
$text = html_entity_decode($_POST['etext'], ENT_NOQUOTES, 'UTF-8');
После этого я получил обычный кириллический (или любой другой) текст.
Есть надежда, что это кому-нибудь пригодится!