将数据添加到另一个文件中的PHP数组

问题描述:

我设置的是一个主页面(输出基于具有PHP数组的require_once() PHP文件的表格)和管理页面(应该将数据写入上述PHP数组文件)以及包含数组的PHP文件。管理页面是问题。我已经尝试了fread和txt文件的不同解决方案,这些文件真的很麻烦。将数据添加到另一个文件中的PHP数组

我不擅长PHP。我如何从我的管理页面编辑这个数组?

代码:

主页

<?php 
    require_once("sitesdb.php"); 
?> 
<html> 
<body style="text-align:center"> 
<div style="width:500px;background-color:ddd;padding:10px"> 
    <table width="100%"> 
    <tr bgcolor="gray"> 
     <td>Domain Host</td> 
     <td>Prefix</td> 
     <td>Suffix</td> 
    </tr> 
    <? foreach ($sites as $row) : ?> 
    <tr bgcolor="white"> 
     <td><? echo $row[0]; ?></td> 
     <td><? echo $row[1]; ?></td> 
     <td><? echo $row[2]; ?></td> 
    </tr> 
    <? endforeach; ?> 
    </table> 
</div> 
</body> 
</html> 

阵列文件

<?php 
$sites = array(
    array("POPNIC.COM",  "uk", "pn"), 
    array("POPNIC.COM",  "co.uk", "pn"), 
    ... 
    array("SUBDOMAIN.COM", "aa6", "de"), 
    array("SUBDOMAIN.COM", "aa8", "de"), 
); 
?> 

管理页面

<?php 
if (!isset($_SERVER['PHP_AUTH_USER'])) { 
    header('WWW-Authenticate: Basic realm="Administration"'); 
    header('HTTP/1.0 401 Unauthorized'); 
    echo '404 - Unauthorized! Sorry about that.'; 
    exit; 
} else { 
if ($_SERVER['PHP_AUTH_USER'] = "*****" && $_SERVER['PHP_AUTH_PW'] = "*****"){ 

if ($_POST['host'] && $_POST['prefix'] && $_POST['suffix']){ 


    ?????????????? 


} 
?> 
<html> 
<head> 
    <title>Administration</title> 
</head> 
<body> 
    <h1>Administration</h1> 
    <h2>Add a Value</h2> 
    <form method="post" action=""> 
     <label for="host">Domain Host: </label><br /> 
     <input name="host" id="host" type="text" /><br /> 
     <label for="prefix">Prefix: </label><br /> 
     <input name="prefix" id="prefix" type="text" /><br /> 
     <label for="suffix">Suffix: </label><br /> 
     <input name="suffix" id="suffix" type="text" /><br /> 
     <input type="submit" value="Add Value" /><br /> 
    </form> 
</body> 
<?php 
} 
} 
?> 

UPDATE

我想我已经差不多了。这是我的新代码:

if ($_POST['host'] && $_POST['prefix'] && $_POST['suffix']){ 
    $ins_host = $_POST['host']; 
    $ins_prefix = $_POST['prefix']; 
    $ins_suffix = $_POST['suffix']; 

    include_once("sitesdb.php"); 
    array_push($sites, array($ins_host, $ins_prefix, $ins_suffix)); 

    $file = fopen("sitesdb.php", "w"); 
    $newdata = "<?php " . var_export($sites) . "?>"; 
    fwrite($file, $newdata); 
    fclose($file); 
} 

这不是正确写入数据。每当我改变一些东西出现错误。有人能指引我朝着正确的方向吗?

+0

实际上你想要做什么?你想在$ site中推送一些数据然后想要访问它们吗?或者你想改变sitesdb.php的内容? – 2013-03-25 21:33:47

+0

我想更改sitesdb.php的内容。它需要将admin.php提交的信息添加到它的数组中。 – ndm13 2013-03-26 01:12:13

+0

我不确定这个问题被认为“不具有建设性”。我不知道如何将PHP代码写入文件,我被告知要查看'var-export',并且在犯了一个愚蠢的错误之后,我最终解决了它。桥下的水,因为它已经有了答案,但仍然。 – ndm13 2017-07-09 20:26:40

假设您想要从管理页面收集数据并将其作为数组写入到sitesdb.php,请签出var-export function

在您的管理脚本,你检查你的形式使用

if($_SERVER['REQUEST_METHOD'] == 'POST') { 
    // your logic to read the posted data and save it to a file 
    // goes here 
} 

我找了一个简单的,没有过期的,非傻在网络上的教程提交的,不那么容易找到。大多数人现在都使用Laravel,Symfony2,Silex或Slim等框架(例如为了避免安全问题)。最终你会发现this one有帮助。

更新:注意var_export的附加参数,这将在一个变量返回的结果,而不是打印出来

更新2:我不想阻挠你,但这种做法实在是不安全的。想象一下有人在你的表单中写下邪恶的PHP东西。你将它写入sitesdb.php文件中,并在下次读取sitesdb.php时执行它。最好查看一下ini文件(parse_ini_file是在PHP中读取ini文件的命令)。

+0

谢谢!帮了很多。我仍然有点困惑,我已经更新了我的问题。 – ndm13 2013-03-26 01:56:09

+0

更新了我的答案。 – herrjeh42 2013-03-26 06:34:26

+0

在我使用PHP的这一点上,安全性不是一个大问题。唯一使用管理页面的是我自己,如果有必要,我可以把它放在与我的项目完全不同的服务器上。整个事情都有密码保护,所以我没有看到一个大问题。那,我有备份。我不认为即使有人做了破解,他们可能会造成太大的损失。 – ndm13 2013-03-26 13:25:40