PHP更改外部PHP数组文件中的数组值

时间:2014-01-23 13:48:43

标签: php

这是一个代码挑战,而不是我正在进行的特定项目。

基本上,第一个文件'source.php'包含10个数组,用于存储用户名,密码和电子邮件,具有以下结构

<?php
$user['userOne'] = array(
'username' = > 'userone',
'password' => '12345abcdef',
'email' = > '123@xyz.com',
);

$user['userTwo'] = array(
....
?>

然后我有另一个php文件,它基本上包含一个带有电子邮件和密码输入文本框的HTML表单。

到目前为止我所管理的是在需要创建用户时创建数组。

现在我要做的是让用户在'source.php'中更改他们的电子邮件和密码,基本上完全替换现有的数组或修改更改的字段,即密码或电子邮件。

我现在想要将MySQL用作仅10个用户。我已经设法让用户使用他们的用户名和密码登录,我希望他们能够修改电子邮件和密码。

2 个答案:

答案 0 :(得分:3)

  

我不想将MySQL用作仅10个用户

这很遗憾,因为外部数据持久性可能就是你想要的。如果您不想使用数据库,可以将数据存储在文件中,这很好。但那不是你现在正在做的事情。

您目前正在做的是将数据存储在代码中。要修改它,您有两种选择:

  • 在执行脚本中包含代码并修改值。这可能不是您想要的,因为原始值保留在实际的源代码中,因此修改不会在一个请求之外保留。
  • 使用PHP中的文件编辑功能(就像编辑文本文件一样)来修改源代码文件,然后将其包含在执行脚本中。您 绝对 不想这样做。首先,这是不必要的困难。 (您将源代码解析为文本以查找值,这并不容易。)其次,它将是 巨大的安全风险 ,因为用户可以提交数据您将其写入源代码文件并将作为代码执行。基本上,您将对服务器端代码注入持开放态度。

无论用户有多少,源代码和持久数据都需要保持独立。它可能似乎就像你想要将它们组合成小项目一样,但你真的真的不希望这样做。

MySQL很简单。如果您不希望在计算机上运行数据库服务的开销,则可以store the values in a text file

答案 1 :(得分:1)

php文件是文本。你本质上是在询问如何使用php编写文本文件。基本文档会告诉你。对计算机程序结构的基本了解将告诉您,您需要迭代保存数据的结构并将其作为文本写入文件。

我真的不知道你在答案中找到了什么,没有人为你挑战。

其中一条评论中给出的最佳建议是:只是因为你可以做到,并不意味着它应该完成。想一想以下内容:

  1. 如果你的写操作被中断并且你留下一个空的或半写的无效php文件会怎么样?

    您需要了解哪些原子文件原语运行代码提供的特定平台。 php是跨平台的事实在这里没有用,除非你找到一些提供这种原子(事务)文件修改的API或模块。

    您还需要了解任何其他数据存储方式的原子/事务性质。如果您使用数据库,则不能在不阅读有关应如何使用的细则的情况下使用它,以便实际上提供您认为它提供的保证。

  2. 密码是明文 - 这是一个很大的,发臭的安全禁忌,所以忘记它现在

  3. 您不希望可逆地加密密码。如果你可以解密密码,那么攻击你网站的人也会解密它们。

    大多数人在任何地方都使用相同的密码。您网站上的违规行为将泄露其银行和Facebook密码。

  4. 您不希望存储密码的未加盐的哈希值 - 相当于公共密码的可逆加密。

  5. 您不希望使用与所有密码相同的固定盐值。

  6. 所有这些都必须得到解决,任何人都应该认为你的挑战解决方案不是标准的。