PDA

Просмотр полной версии : Не передает множество знаков в php...


deman455
20.02.2010, 18:38
Такая вот проблема. Флеш, отсылает 15 строк (в каждой строке по 100 символов) , в php , с названием "p1,p2,p3...p15". На такой запрос пхп не отреагировала, а если послать только с p1-p7 php реагирует, и создает (записывает эти строки в xml ).
Проблема в том что мне надо отослать все 15 строк, почему оно не записывает ? вот флеш:
Stage.showMenu=false;
var sender:LoadVars=new LoadVars();
var receiver:LoadVars=new LoadVars();
for (i=1;i<=15;i++){ // 15 строк
sender["p"+i]=_root["stroka"+i]; //sender1,sender2,sender3... str1,str2,str3
}
sender.sendAndLoad("test.php",receiver,"GET"); //посылаем все строки в php

Код с верху НЕ работает, то есть php не реагирует на запрос, и даже не создает xml.
А вот этот код с низу работает, только может переслать всего 7 строк.
Stage.showMenu=false;
var sender:LoadVars=new LoadVars();
var receiver:LoadVars=new LoadVars();
for (i=1;i<=7;i++){ // 7 строк
sender["p"+i]=_root["stroka"+i]; //sender1,sender2,sender3... str1,str2,str3
}
sender.sendAndLoad("test.php",receiver,"GET"); //посылаем все строки в php

если больше 7-ми строк, то не какой реакции...
Помогите кто то пожалуйста!!!

если надо, вот php (в php все правильно 100%):
<?php
$send = $_GET['send'];
$items = $_GET['items'];
$ima = $_GET['ima'];\
$p1 = $_GET['p1'];
.......//просто все не вписывал.
$p15 = $_GET['p15'];
$dom = new DOMDocument('1.0','utf-8');

//создаем элементы all, name и predmet
$all = $dom->createElement('all');
$name = $dom->createElement('name');
$predmet = $dom->createElement('predmet');

//добавляем в документ корневой элемент all
$dom->appendChild($all);

//получаем корневой элемент, называем его $root
$root = $dom->getElementsByTagName('all')->item(0);

//здесь двигаемся уже относительно корневого элемента all, а не от документа $dom и записываем в теги all теги name
$root->appendChild($name);

//получаем первый элемент name корневого элемента
$nameElement = $root->getElementsByTagName('name')->item(0);

for ($i = 0; $i < 15; $i++) :

//в цикле создаем 3 раза элементы и 3 раза добавляем их, куда надо
$txt = $dom->createTextNode($p.$i);//записывает строки в <predmet></predmet>
$predmet = $dom->createElement('predmet');
$nameElement->appendChild($predmet)->appendChild($txt);

endfor;

$dom->save('testing.xml');
$str = $dom->saveXML();
?>

mooncar
20.02.2010, 19:29
Вот накидал для проверки у себя пример, все работает нормально, как и должно:
for (i = 1; i <= 15; i++){ // 15 строк
_root['stroka' + i] = i; //sender1,sender2,sender3... str1,str2,str3
}

var sender:LoadVars = new LoadVars();
var receiver:LoadVars = new LoadVars();
for (i = 1; i <= 15; i++){ // 15 строк
sender['p' + i] = _root['stroka' + i]; //sender1,sender2,sender3... str1,str2,str3
}
sender.sendAndLoad('http://www.mysite.ru/test.php', receiver, 'GET'); //посылаем все строки в php

receiver.onLoad = function (success) {
if (success) {

for (i in this) {
trace(i + '=' + this[i]);
}

}
};

<?php
$str = '';

for ($i = 1; $i <= 15; $i++) {
$val = $_GET['p'.$i];
$str .= 'p'.$i.'='.$val.'&';
}

echo ($str);

?>

Приходит нормальный ответ, trace выводит:
p15=15
p14=14
p13=13
p12=12
p11=11
p10=10
p9=9
p8=8
p7=7
p6=6
p5=5
p4=4
p3=3
p2=2
p1=1
onLoad=[type Function]

deman455
20.02.2010, 20:44
Возвращать возможно php и будет, но записывать в xml не получается. Вот пример (http://dump.ru/file/4340675) . Всего у меня 11 текстов, в которых , в каждом больше чем 100 символов. В результате php не реагирует. А вот пример (только swf) (http://dump.ru/file/4340698) с малым количеством символов, отлично выводит в xml !

mooncar
20.02.2010, 21:10
Попробуйте вместо метода GET метод POST, GET-ом действительно тяжело передавать большие объемы данных.

deman455
20.02.2010, 21:35
Спосибо ! mooncar Вот нашел (http://webpeppers.ru/46.html)
GET отправляет всю информацию в заголовке запроса, длинна которого ограничена. Если вам нужно отправить какое-то слово на сервер - не проблема, оно будет всего несколько букв. Но что делать, если нужно отправить объемный тескт с 2000-3000 символов? Будут проблемы.