PDA

Просмотр полной версии : Flash или php - в чём проблема???


bems
15.12.2009, 15:51
Уважаемые знатоки флэша и серверных технологий, помогите мне, я в полном отчаянии!
Делаю игру с использованием сервера и их местного API для одного флэш-портала. Перешёл к самому последнему - созданию скрипта для обновления таблиц в БД. И вот, значит в чём трабл. Если все нужные переменные в качестве теста указать в php-файле, то он всё обновляет нормально:

<?
$uid = "1";
$key = "key";
$message = "ывывавава";
include("connect.php");
if ($key == "key" and $uid != "undefined"){
$c = mysql_query('SET NAMES cp1251');
$n = mysql_query(первая комманда обновления);
if($n){
вторая комманда обновления (там ряд комманд);
echo "result=1";
}
else{
echo "result=0";
}
}
else{
echo "result=0";
}
?>

В этом случае php выдаёт мне result=1 то есть как и надо - после завершения нужных комманд. Но как только я делаю версию php файла для принятия данных из флэша, то бишь меняю

$uid = "1";
$key = "key";
$message = "ывывавава";

на

$uid = $_POST['user_id'];
$key = $_POST['key'];
$message = $_POST['mess'];

то во флэш он мне возвращает result=0, причём не в том месте, где if ($key == "key" and $uid != "undefined"){, а в месте if($n){, тоесть я так понимаю он первую mysql комманду не выполняет. Но в чём же дело??? Ведь если установить переменные в самом php, то всё работает!!! Вот код функции отправки данных:

function new_king() {
sender = new LoadVars();
loader = new LoadVars();
sender.user_id = "1"
sender.mess = "ыыыыыы"
sedner.key = "key"
sedner.sendAndLoad(adress, loader, "POST");
loader.onLoad = function(sucsess){
if(sucsess){
result = loader.result
if(result == "1"){
trace("daaaaaaa!!!!");
}
else{
trace("fuuuuuck!!!!!");
}
}
}
}

Очень прошу, помогите, я просто уже не знаю, что делать! :(

udaaff
15.12.2009, 16:23
А запрос к БД какой?

bems
15.12.2009, 16:25
$n = mysql_query("UPDATE sms_users SET sms_total=sms_total+1,last_text='$message' WHERE user_id=$uid");

udaaff
15.12.2009, 16:50
Как я понимаю, блок else выполнится в том случае, если запрос будет выполнен с ошибкой, поэтому логично узнать, что за ошибка.
Также необходимо экранировать входящие данные, которые в запросе используются.

bems
15.12.2009, 16:57
Насчёт экранизирования входящих данных! Чтобы во флэш вернуло три переменные, которые я послал и посмотреть, что там с ними, правильные или нет, я пытался писать вместо
else{
echo "result=0";
}
так
else{
echo "result=$uid_$key_$message";
}

Но был поражён ещё больше! Флэш вернул result пустым!!! Даже "_" не было!

leofit
16.12.2009, 11:35
Предлагаю проверить, получает ли php переменные из флеша

<?
$uid = $_POST['user_id'];
$key = $_POST['key'];
$message = $_POST['mess'];

//add_me
$f = fopen("t.txt", "w");
fwrite($f, $_POST['user_id']);
fwrite($f, $_POST['key']);
fwrite($f, $_POST['mess']);
fclose($f);
//
include("connect.php");
if ($key == "key" and $uid != "undefined"){
$c = mysql_query('SET NAMES cp1251');
$n = mysql_query(первая комманда обновления);
if($n){
вторая комманда обновления (там ряд комманд);
echo "result=1";
}
else{
echo "result=0";
}
}
else{
echo "result=0";
}
?>

выполнить этот код, появится в папке со скриптом файл t.txt, открыть и посмотреть

bems
16.12.2009, 16:22
Всем спасибо за помощь, но каким-то боком заново переписал функцию во флэше и всё заработало :) Так до сих пор и не понял, что ему там не нравилось...