在PHP中存储设置,以便稍后编辑

时间:2009-05-11 11:22:52

标签: php xml settings ini

我正在编写一个PHP应用程序,它可以通过Web界面编辑设置。我并不是指用户(实际上只有管理员)能够在文本编辑器中加载文件,而是使用表单进行更改,这将改变设置文件(做其他事情)。

在开发的这个阶段,设置存储在PHP文件中,例如:

define ('UPLOAD_DIR','uploads/');
define ('DISPLAY_NUM',true);
$names = array('a' => 'b','c'=>'d','e'=>'f');

然而,解析数组(并且它们比上面的更复杂(即多级嵌套))看起来并不那么有趣。并且因为可以添加和删除特定设置,读取整个文件,然后再次写出所有设置,看起来也不好玩。

使用以下格式有哪些优缺点? (以及我错过的任何其他人):

  • 自定义XML
  • INI(能够使用parse_ini_file)

(由于项目的要求,使用数据库不适合。我理解在许多情况下会优先使用数据库,而不是在这种情况下。)

如果您无法使用数据库,并且必须存储可以使用Web界面编辑的设置,您会怎么做?

(注意:这是this one的另一个问题,其中设置无法更改,它一直是PHP文件。是的,安装程序当前写出了一个具有正确设置的PHP文件。 )

7 个答案:

答案 0 :(得分:2)

如果您不致力于使用XML,您可以考虑YAML。我只使用Ruby,但快速Google表明有一些PHP支持选项。 TBF,其中包含一些arguments against使用YAML和PHP,但是YMMV。

答案 1 :(得分:1)

好的,我没有得到任何我想要的答案。这是我期待的那种事情。

<强> INI

  • 在INI文件中存储设置可能适合您希望用户手动编辑的简单设置。
  • 然而,创建复杂的数组并不容易,并且需要一些精神杂技才能理解哪个标题位于数组的哪个级别。
  • 保留字,不得在文件中的任何位置使用,包括:yes,no,true和false,这可能会有问题。
  • 可以在文件中使用常量。
  • 没有内置的写出INI文件的方法。

<强> XML

  • 可以使用SimpleXML Extension,它“提供了一个非常简单且易于使用的工具集”,将XML转换为可以使用常规方法处理的对象。
  • 允许使用非常复杂的数组。
  • 如果需要,可以手动编辑。
  • 可以使用外部工具验证文件的有效性。
  • 许多可用于PHP的XML处理器。

<强> YAML

记住:没有数据库。需要能够使用复杂的数组。

答案 2 :(得分:0)

我不喜欢有人直接访问设置的想法,因此提供一个充当缓冲区的接口,防止故意攻击并确保清洁输出非常重要。

考虑到这一点,服务器端格式的选择根本不重要,只要你能正确地与它接口,所有其他问题都可以解决。

答案 3 :(得分:0)

我建议使用自定义XML文件,这样您的配置就可以很好地扩展,并且您可以使用PHP XML库来访问它。

一个简单的例子:

<myconfig>
  <define>
    <name>UPLOAD_DIR</name>
    <value>uploads/</value>
  </define>
  <define>
    <name>DISPLAY_NUM</name>
    <value>true</value>
  </define>
  <array id="names">
    <value index="a">b</value>
    <value index="c">d</value>
    <value index="e">f</value>
  </array>
</myconfig>

答案 4 :(得分:0)

PHP内置了编辑和解析INI文件的功能,这些文件使用纯文本格式存储程序设置。

答案 5 :(得分:0)

我使用了两步法。变量及其名称存储在数据库中,其界面使用户能够更改它们。当他们更改文件时,文件会保存到服务器上,然后通过应用程序引用(更改将保存回数据库)。使更新变得简单并使备份变得简单 - 无需备份文件,只需备份数据库即可。生成的文件只是.inc文件,格式为$ variableName ='variablevalue';

答案 6 :(得分:0)

为什么不是普通的PHP?

配置-form.php的

表单method=POST action='configure.php'

输入字段ex。 name='upload' value='<?php echo UPLOAD; ?>'

configure.php文件:

$myfile = 'sets.php';
$fh = fopen( $myfile, 'w' );
$upload = '"/upload/"';
$txt = "define( UPLOAD, '" . $_POST['upload'] . "' );";
fwrite( $fh, $txt );
fclose( $fh );

你有它。简单的php为您创建配置文件。