Bu php kodu ile yanlış bir şey?

3 Cevap php

1. Ben php butik şey biliyor söylemek zorundayım. Aslında benim AS3 konuk-kitap yaptığını ve Activetut gelen öğreticiler parçalar aracılığıyla, ben flash konuk-kitap çıkıp başardı. Yani şimdi ben bakan değilim sorun flaş hala eski XML dosyaları önbelleğe iken, misafir-kitap sadece 1 XML verilerini enjekte edebilir ve eski kapalı 1 açık her zaman olacaktır olduğunu.

(I php hakkında bir şey bilmiyorum çünkü ben onun oldukça sert düşünüyorum) diğer bazı öğreticiler bulduğu ve ben kullanıyorum php kodu karşılaştırarak, son derece kısa gibi görünüyor. Ben kodu ne hiçbir fikrim yok, bu yüzden şu anda ben sorunları php ya da benim AS3 geldi emin değilim.

 <?php
        if (isset($GLOBALS["HTTP_RAW_POST_DATA"])){
            $xml = $GLOBALS["HTTP_RAW_POST_DATA"];
            $file = fopen("wish.xml","wb");
            fwrite($file, $xml);
            fclose($file);
        }
    ?>

ve aşağıda benim doğru XML formatı:

<WISHES>
    <WISH>
        <NAME>Test</NAME>
        <EMAIL>test@tes.com</EMAIL>
        <DATENTIME>2/3/10</DATENTIME>
        <MESSAGE>Dummy Message</MESSAGE>
    </WISH>
<WISH>
        <NAME>Test</NAME>
        <EMAIL>test@tes.com</EMAIL>
        <DATENTIME>2/3/10</DATENTIME>
        <MESSAGE>Dummy Message</MESSAGE>
    </WISH>
</WISHES>

Yani bir çeşit herkes bu php kodu ne yapar açıklamak için? o benim XML yerine neden:

<WISH>
        <NAME>Test</NAME>
        <EMAIL>test@tes.com</EMAIL>
        <DATENTIME>2/3/10</DATENTIME>
        <MESSAGE>Dummy Message</MESSAGE>
    </WISH>

3 Cevap

Michael ve Nifle zaten belirtildiği gibi yeni bir giriş saklarken, kod xml dosyasında mevcut girdileri siler. Bu sorunu aşmak için ve sizin beklediğiniz, kodu bu şekilde düzeltebilirim:

<?php
    if (isset($GLOBALS["HTTP_RAW_POST_DATA"])){
        $xml = $GLOBALS["HTTP_RAW_POST_DATA"];

        // read in the old ontent of the file
        $oldXML = join('', file('wish.xml'));

        // replace the old file ending with the new entry and a new file ending
        $newXML = str_replace('</WISHES>', $xml."\n</WISHES>");

        // finally store the new data to the file
        $file = fopen("wish.xml","w");
        fwrite($file, $newXML);
        fclose($file);
    }
?>

Kod $ GLOBALS ["HTTP_RAW_POST_DATA"] değerini alır ve önceki dosya içeriğini silme, o wish.xml yazar.

Yerine fopen in "wb" nin "ab" deneyin.

wb: yazma için açılır. 'B' ikili verileri gösterir.

ab: ekleme için açın. 'B' ikili verileri gösterir.