Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.10.2012, 18:28
Golovorot вне форума Посмотреть профиль Отправить личное сообщение для Golovorot Найти все сообщения от Golovorot
  № 1  
Ответить с цитированием
Golovorot

Регистрация: Sep 2012
Сообщений: 101
По умолчанию Проблема с кодировкой php>flash

У меня есть php файл
PHP код:
<?php
header
('Content-type: text/xml; charset=utf-8');
echo 
'<?xml version="1.0" encoding="UTF-8"?>';
//получаем данные
$hash=htmlspecialchars($_GET['hash']); //хеш строка
$login=htmlspecialchars($_GET['ln']); //логин
$password=htmlspecialchars($_GET['psw']); //пароль
$action=htmlspecialchars($_GET['an']); //действие
$points=htmlspecialchars($_GET['ps']); //очки
$otherinfo=htmlspecialchars($_GET['oi']); //прочая инф
//свои переменные
$hash_string='secreKey';
$sql_server='server;
$sql_password='
pass';
$sql_user='
user';
$sql_dbname='
1234';
echo '
<result>';
//проверка на входные параметры параметры
if ($hash==md5($hash_string.$action.date("d")))
{
    //соединение с БД
    $db = mysql_connect($sql_server, $sql_user, $sql_password);
    mysql_select_db($sql_dbname);
    mysql_query("SET NAMES utf8");
    switch($action)
    {
        case "add_user":
            if ($login!="" && $password!="")
            {
                //проверка, не существует ли такого пользователя
                $query_adduser=mysql_query('
SELECT FROM game_users WHERE login="'.$login.'"');
                $count_adduser=mysql_num_rows($query_adduser);
                if ($count_adduser==0)
                {
                    //загрузка аватарки, если передана
                    if ($_FILES['
image']['error']==0 && $_FILES['image']!='')
                    {
                        //Генерация нового имени для файла
                        $arr = array('
q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l',
                            '
z', 'x', 'c', 'v', 'b', 'n', 'm', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0');
                        for ($i=0; $i<=8; $i++)
                        {
                            $newname.=$arr[rand(0,35)];
                        }
                        $newname=md5($newname).'
.jpg';
                        $uploaddir='
../assets/components/game/img/';
                        $uploadfile=$uploaddir.$newname;
                        copy($_FILES['
image']['tmp_name'], $uploadfile);
                    }
                    $datetime = date("c");
                    //создание нового пользователя
                    $query_adduser=mysql_query('
INSERT INTO game_users SET login="'.$login.'"password="'.md5($password).'"other_info="'.$otherinfo.'"count_game="0"points="0"date_time="'.$datetime.'"image="'.$newname.'"');
                    echo '
<sttus>OK</sttus>';
                    echo '
<message>Зарегистрирован успешно</message>';
                } else
                {
                    echo '
<sttus>ERROR</sttus>';
                    echo '
<message>Пользователя с таким логином не существует</message>';
                }


            }

            break;
        case "get_user":
            if ($login!="")
            {
                $query_user=mysql_query('
SELECT FROM game_users WHERE login="'.$login.'" LIMIT 1');
                $count=mysql_num_rows($query_user);
                if ($count==0)
                {
                    echo '
<sttus>ERROR</sttus>';
                    echo '
<message>Пользователь не найден</message>';
                } else
                {
                    $user_data=mysql_fetch_assoc($query_user);
                    $xml = new DOMDocument('
1.0', 'UTF-8');
                    echo '
<sttus>OK</sttus>';
                    echo '
<login>'.$user_data['login'].'</login>';
                    echo '
<other_info>'.$user_data['other_info'].'</other_info>';
                    echo '
<count_games>'.$user_data['count_game'].'</count_games>';
                    echo '
<points>'.$user_data['points'].'</points>';           
                    if ($user_data['
image']!="")
                    {
                        echo '
<image>../assets/components/game/img/'.$user_data['image'].'</image>';                        
                    }
                    echo '
<date_reg>'.$user_data['date_reg'].'</date_reg>';                    
                }
            }  else
            {
                echo '
<sttus>ERROR</sttus>';
                echo '
<message>Не все необходимые параметры переданы</message>';
            }

            break;
        case "login":
            $query_login=mysql_query('
SELECT FROM game_users WHERE login="'.$login.'" AND password="'.md5($password).'" LIMIT 1');
            $count=mysql_num_rows($query_login);
            if ($count==0)
            {
                echo '
<sttus>ERROR</sttus>';
                echo '
<message>Пользователя с таким логином и паролем не существует</message>';
            } else
            {
                echo '
<sttus>OK</sttus>';
                echo '
<message>Аутентифицирован</message>';
            }
            break;
        case "game":
            if ($login!="" && $points!="")
            {
                //получение инфы о играх и баллах пользователя
                $query_game=mysql_query('
SELECT FROM game_users WHERE login="'.$login.'" LIMIT 1');
                $data=mysql_fetch_assoc($query_game);
                $points_data=$data['
points'];
                $count_games_data=$data['
count_game'];
                //обновление инфы
                $query_game=mysql_query('
UPDATE game_users SET points="'.($points_data+$points).'"count_game="'.($count_games_data+1).'" WHERE login="'.$login.'"');
                //добавление проведеной игры в бд
                $query_game=mysql_query('
INSERT INTO game_games SET user="'.$data['id'].'"datetime="'.date('c').'"points="'.$points.'"');
                echo '
<sttus>OK</sttus>';
                echo '
<message>Данные успешно обновленны</message>';
            }
            else
            {
                echo '
<sttus>ERROR</sttus>';
                echo '
<message>Ошибка обновления данных</message>';
            }
            break;
        case "delete":
            if ($login!="" && $password!="")
            {
                $query_del=mysql_query('
SELECT FROM game_users WHERE login="'.$login.'" AND password="'.md5($password).'" LIMIT 1');
                $count_del=mysql_num_rows($query_del);
                $del_data=mysql_fetch_assoc($query_del);
                if ($count_del!=0)
                {
                    mysql_query('
DELETE FROM game_users WHERE id="'.$del_data['id'].'"');
                    mysql_query('
DELETE FROM game_games WHERE user="'.$del_data['id'].'"');
                    echo '
<sttus>OK</sttus>';
                    echo '
<message>Пользователь удален и его данные о играх очищенны</message>';
                }
                else
                {
                    echo '
<sttus>ERROR</sttus>';
                    echo '
<message>Логин и пароль не совпадают</message>';
                }
            }
            else
            {
                echo '
<sttus>ERROR</sttus>';
                echo '
<message>Логин и пароль не отправлен</message>';
            }
            break;
        case "top10":
            $query_page=mysql_query('
SELECT FROM game_users ORDER BY points DESC LIMIT 10');
            $xml = new DOMDocument('
1.0', 'UTF-8');
            echo '
<sttus>OK</sttus>';
            $k=1;
            while ($data=mysql_fetch_assoc($query_page))
            {
                echo '
<pos'.$k.'>';
                echo '
<login>'.$data['login'].'</login>';
                echo '
<points>'.$data['points'].'</points>';
                echo '
</pos'.$k.'>';
                $k++;
            }            
            break;
        default:
            echo '
<sttus>ERROR</sttus>';
            echo '
<message>Неизвестное действие</message>';
            break;
    }
    mysql_close($db);
} else
{
    echo '
<sttus>ERROR</sttus>';
    echo '
<message>Неправильная строка hash</message>';
}
echo '
</result>';
?>
И ещё у меня есть флешка, ее код
Код AS1/AS2:
import md5;
var curDate:Date = new Date();
var d = curDate.getDate();
if(d < 10) {
	d = "0" + d;
}
var sender:LoadVars = new LoadVars();
sndr.onPress = function () {
	var m:md5 = new md5();
	sender.hash = m.hash(String("secretKey"+"add_user"+d).toLowerCase());
	sender.ln = login.text;
	sender.psw = pass.text;
	sender.sendAndLoad("ttt.ru" + "?" + "an=add_user" + "&" + "hash=" + m.hash(String("secretKey"+"add_user"+d).toLowerCase()) + "&" + "ln=" + login.text + "&" + "psw=" + pass.text, sender, "GET");
	my_xml = new XML();
	sender.onLoad = function(success) {
		trace(sender);
	}
}
Но при посылке данных в php, мне возвращается xml в виде
Код:
%3C%3Fxml%20version=%221%2E0%22%20encoding%3D%22UTF%2D8%22%3F%3E%3Cresult%3E%3Csttus%3EERROR%3C%2Fsttus%3E%3Cmessage%3E%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F%20%D1%81%20%D1%82%D0%B0%D0%BA%D0%B8%D0%BC%20%D0%BB%D0%BE%D0%B3%D0%B8%D0%BD%D0%BE%D0%BC%20%D0%BD%D0%B5%20%D1%81%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D1%83%D0%B5%D1%82%3C%2Fmessage%3E%3C%2Fresult%3E&onLoad=%5Btype%20Function%5D&psw=test&ln=test&hash=bd0fd690abced3c0500f5c0b5bcde7be
А должны в виде дерев xml, что не так в php скрипте?

Старый 23.10.2012, 19:22
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 2  
Ответить с цитированием
Krusty

Регистрация: Jul 2007
Сообщений: 393
Оно и возвращает, только заэнкоденное.
Я на память не помню, нужно что-то вроде
http://www.php.net/manual/en/functio...ars-decode.php
http://php.net/manual/en/function.ht...ity-decode.php
Не помню, что конкретно там

Старый 23.10.2012, 20:51
Golovorot вне форума Посмотреть профиль Отправить личное сообщение для Golovorot Найти все сообщения от Golovorot
  № 3  
Ответить с цитированием
Golovorot

Регистрация: Sep 2012
Сообщений: 101
Cпасибо большое

Добавлено через 43 часа 32 минуты
Не помогло

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:15.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 16:15.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.