Avatar billede Slettet bruger
12. december 2005 - 19:23 Der er 7 kommentarer og
1 løsning

Skrivning af XML fra Flash gennem PHP

Hej

Jeg har et XML-dokument, jeg ønsker at læse, ændre samt skrive tilbage til filen.
Læsning og ændring går fint. Jeg har - som der ses, et objekt ved navn "mitxml", der så rummer al den ændrede XML-kode.

mitxml = new XML();
mitxml.ignoreWhite = true;
mitxml.load("indhold.xml");
mitxml.onLoad = function() {
...osv...osv...

Der hvor kæden hopper af, er i skrivningsfasen.
For en ordens skyld er rettigheder 777 på indhold.xml - men når skrivningen påbegyndes, skriver den intet. Filen ændres blot til 0 bytes. Jeg har tilføjet "_blank" samt en echo i PHP-filen for at checke output - men intet sker...:-(

I mit Flash-dokument bruger jeg: _root.mitxml.send("http://www.mitwebsite.dk/job/xml-projekt/skrivxml.php", _root.mitxml, "POST", "_blank");

I mit PHP-script findes følgende:
<?php
  $filen = "indhold.xml";
  $xmlindhold = $_REQUEST['mitxml'];
 
  echo "Streng modtaget: ".$mitxml;
  $fp = fopen( $filen, "w" );
  fwrite( $fp, $xmlindhold, 9999999 );
  fclose( $fp );
?>

Er der nogle falkeøjne, der kan se problemet?

Mvh.
Avatar billede Slettet bruger
12. december 2005 - 19:25 #1
Nå ja, echo-strengen skal selvfølgelig referere til $xmlindhold - men problemet er stadig det samme
Avatar billede Slettet bruger
12. december 2005 - 20:16 #2
Terminerer dit script nogensinde?

Der er nemlig et par ting jeg ikke helt forstår.

fopen() med "w" starter pointeren i starten af filen, og trunkerer den til 0 bytes. Hvis du har "9999999" på som [length] i fwrite(), vil skrivningen først stoppe når den har nået denne længde.

Så kan det ikke skyldes at den med "w" starter en ny fil på 0 bytes, og så aldrig stopper med at skrive fordi filen aldrig når 9999999 bytes?

--
pacroon
Avatar billede -master-d- Nybegynder
12. december 2005 - 22:19 #3
Har du testet om scriptet virkede uden om flash??

<?php
  $filen = "indhold.xml";
  $xmlindhold = "Dette er noget tekst";

  echo "Streng modtaget: ".$mitxml;
  $fp = fopen( $filen, "w" );
  fwrite( $fp, $xmlindhold, 9999999 );
  fclose( $fp );
?>

Umiddelbart kan jeg heller ikke se hvorfor du har brug for at definere length i denne forbindelse, da denne jo er optional..

Prøv evt. fwrite( $fp, $xmlindhold); istedet...
Avatar billede Slettet bruger
13. december 2005 - 01:02 #4
master-d > Bare fordi et argument er optional, betyder det jo ikke at man ikke har brug for det :)

Men min point var bare at det måske var en lidt stor længde :P
Avatar billede -master-d- Nybegynder
13. december 2005 - 01:38 #5
pacroon >> det er jeg ganske vel klar over :P
men som sagt kan jeg ikke se hvorfor han helt præcist har brug for den..

Det skal dog også siges at jeg ikke er nogen php-nørd, og da slet ikke når det gælder flash. Desuden når vi nu snakker flash og server-side scripting såsom php, så kan jeg slet ikke se pointen i designet af protokollen, men det må vi tage en anden go' gang, jeg er nødt til at smutte i seng nu, jeg har en lang hård dag for mig imorgen.
Avatar billede Slettet bruger
13. december 2005 - 08:46 #6
:)
Avatar billede Slettet bruger
13. december 2005 - 13:10 #7
Hej igen.
Tak for tippene. Jeg har testet php-delen - og den virker sør'me.
Kalder jeg f.eks. skrivxml.php?mitxml=COOL, får jeg en fin, lille fil på 4 bytes - med eller uden de 999999 som parameter.
Nu ved vi i det mindste i hvilken del, problemet ligger :-)
-master-d-, smid et svar, så kan du få dine point...
Avatar billede -master-d- Nybegynder
13. december 2005 - 19:25 #8
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester