将数据添加到另一个文件中的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);
}
这不是正确写入数据。每当我改变一些东西出现错误。有人能指引我朝着正确的方向吗?
答
假设您想要从管理页面收集数据并将其作为数组写入到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文件的命令)。
实际上你想要做什么?你想在$ site中推送一些数据然后想要访问它们吗?或者你想改变sitesdb.php的内容? – 2013-03-25 21:33:47
我想更改sitesdb.php的内容。它需要将admin.php提交的信息添加到它的数组中。 – ndm13 2013-03-26 01:12:13
我不确定这个问题被认为“不具有建设性”。我不知道如何将PHP代码写入文件,我被告知要查看'var-export',并且在犯了一个愚蠢的错误之后,我最终解决了它。桥下的水,因为它已经有了答案,但仍然。 – ndm13 2017-07-09 20:26:40