【问题标题】:PHP not saving with DOMDocumentPHP 不使用 DOMDocument 保存
【发布时间】:2011-10-19 00:58:01
【问题描述】:

我们将从代码开始:

PHP:

<?php
    $newJaCourse = $_POST["ja-new-course"];
    $newJaSide = $_POST["ja-new-side"];
    $newEnCourse = $_POST["en-new-course"];
    $newEnSide = $_POST["en-new-side"];

    $doc = new DOMDocument('1.0','utf-8');
    $doc->formatOutput=true;
    $doc->preserveWhiteSpace=false;
    echo $doc->load("../../xml/daily_lunch.xml") . "Loaded <br />";

    $japanese = $doc->getElementsByTagName("japanese")->item(0);
    $jacourse = $japanese->getElementsByTagName("course")->item(0);
    $jaside = $japanese->getElementsByTagName("side")->item(0);
    $english = $doc->getElementsByTagName("english")->item(0);
    $encourse = $english->getElementsByTagName("course")->item(0);
    $enside = $english->getElementsByTagName("side")->item(0);

    $jacourse->nodeValue = $newJaCourse;
    $jaside->nodeValue = $newJaSide;
    $encourse->nodeValue = $newEnCourse;
    $enside->nodeValue = $newEnSide;

    $japanese->replaceChild($jacourse,$jacourse);
    $japanese->replaceChild($jaside,$jaside);
    $english->replaceChild($encourse,$encourse);
    $english->replaceChild($enside,$enside);

    echo $doc->save("../../xml/daily_lunch.xml") . "Done!";
?>

我的精美 HTML 表单:

        <h4>Change Today's Lunch Menu:</h4>
        <form method="post" action="scripts/lunchupdate.php" name="changelunch">
            <table>
                <tr>
                    <th>Japanese: Course</th>
                    <td><input type="textbox" name="ja-new-course" /></td>      
                </tr>
                <tr>
                    <th>Japanese: Side</th>
                    <td><input type="textbox" name="ja-new-side" /></td>        
                </tr>
                <tr>
                    <th>English: Course</th>
                    <td><input type="textbox" name="en-new-course" /></td>      
                </tr>
                <tr>
                    <th>English: Side</th>
                    <td><input type="textbox" name="en-new-side" /></td>        
                </tr>
            </table>
            <a href="javascript:" onclick="writeNewLunch()">Set Menu</a> |
            <a href="javascript:" onclick="document.changelunch.reset()">Reset Input</a>
        </form>

我当前的 XML:

<?xml version="1.0" encoding="UTF-8"?>
<lunch featuredisabled="false">
    <japanese>
        <course>
            えびトマトクリームパスタ
        </course>
        <side>
            シーザーサラダ
        </side>
    </japanese>
    <english>
        <course>
            Shrimp and Tomato Cream Pasta
        </course>
        <side>
            Ceasar Side Salad
        </side>
    </english>
</lunch>

虽然您可能知道其目的,但它是更改 XML 文件中的项目。目标是双语餐厅的每日午餐更新。我美妙的 DOMDocument->save(filename) 虽然不做杰克。

什么都没有返回,我所有的变量和变化都会回显。我正在运行 PHP5。我查看了 phpinfo(),发现所有 XML 需求都在哪里配置、打开并且没有完成它们的工作。

这个脚本的唯一输出是:

Loaded

Done!

【问题讨论】:

    标签: php xml save domdocument


    【解决方案1】:

    文件名丢失。根据PHP documentation 你应该有

    $doc->save('myfile.xml');
    

    你有写入文件夹的权限吗?

    【讨论】:

    • 哦不!我向那些到目前为止回答的人道歉!我也有文件名!那是那里的试运行。我更新了帖子。你可以感谢我没有查看我的帖子。
    • 还有权限的宾果游戏!但是现在我改变了它,我通过......网页访问它......好吧,我们知道。我为每个人更改了对该文件夹的权限,并且妈妈可以访问它。目前在虚拟机上,没什么大不了的,但是当我把它放到网上时,它有多安全?
    • 我假设路径总是保持硬编码并且不能通过网页更改?如果是这样,我看不到安全问题,但我经常失明。
    • 是的,它不会无处可去。我们会把它留到另一天,因为我会把头发拉出来。我得让它长出来。
    • 我的意见:如果您可以访问数据库,请将您的午餐菜单保存到数据库中。它将更加安全,您可以拥有所有更改的历史记录。如果您没有任何数据库,那么保存到文件中可能是唯一的解决方案。保存到文件是安全的,如果用户不能直接访问它(它与您的网页位于不同的位置)。
    【解决方案2】:

    我认为 $doc->save() 需要传递文件名。所以将 $doc-save() 替换为 $doc->save("../../xml/daily_lunch.xml")

    http://php.net/manual/en/domdocument.save.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-04
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      相关资源
      最近更新 更多