Что-то не так с этим PHP-кодом? - PullRequest
0 голосов
/ 20 марта 2010

1-й, я должен сказать, что ничего не знаю о php. На самом деле я делал свою гостевую книгу AS3, и через части учебников от Activetut мне удалось выпустить флеш-гостевую книгу. Таким образом, проблема, с которой я сейчас сталкиваюсь, заключается в том, что гостевая книга может вводить только 1 XML-данные, и она всегда удаляет старые 1, в то время как флэш-память все еще кэширует старые XML-файлы.

Я нашел несколько других учебных пособий (которые, на мой взгляд, довольно сложны, поскольку я ничего не знаю о php), и, по сравнению с используемым мной php-кодом, он кажется очень коротким. Я понятия не имею, что делает код, поэтому в настоящее время я не уверен, возникли ли проблемы из-за php или моего AS3.

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

и ниже - мой правильный формат XML:

<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>

Так кто-нибудь может объяснить, что делает этот php-код? потому что это заменить мой XML с:

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

Ответы [ 3 ]

2 голосов
/ 20 марта 2010

Код принимает значение $ GLOBALS ["HTTP_RAW_POST_DATA"] и записывает это в wish.xml, удаляя содержимое предыдущего файла.

0 голосов
/ 20 марта 2010

Как уже сказали Майкл и Нифл, код удаляет текущие записи в файле xml при сохранении новой записи. Чтобы преодолеть эту проблему и сделать то, что вы ожидали, измените код следующим образом:

<?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);
    }
?>
0 голосов
/ 20 марта 2010

Попробуйте "ab" вместо "wb" в fopen.

wb: открыт для записи. «B» обозначает двоичные данные.

ab: открыт для добавления. «B» обозначает двоичные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...