如何使用PHP创建表单来更新文件?

时间:2011-09-05 18:43:16

标签: php string file

我编写了一个PHP脚本,允许我修改和更新网页上的文件,但该脚本现在可以在文本区域中显示文件的全部内容。我想从文件中提取字符串,并在表单文本字段(而不是文本区域)中预填充它。

以下是我需要更新的两个文件。我想更新IP地址。因此,表格理想情况下会显示mail.helloworld.com当前映射到“208.164.222.2”并在表单文本字段中填充该IP地址。 /etc/postfix/main.cf文件的想法相同,如下所示。

的/ etc /主机

IPAddress主机名别名            127.0.0.1 localhost deep.openna.com            邮件208.164.222.2 mail.helloworld.com            208.164.222.3 web.helloworld.com web

/etc/postfix/main.cf中

relayhost = 192.168.1.10

===

使用textarea的当前工作脚本:

<form action="<?php echo $PHP_SELF;?>" method="post">
<textarea rows="13" cols="110" name="content">
<?
$fn = "/etc/postfix/main.cf";
print htmlspecialchars(implode("",file($fn)));

?> 
</textarea></br>
<input id= "relayhost_button" type="submit" value="Update"> 
</form> 



<?
$fn = "/etc/postfix/main.cf";
$content = stripslashes($_POST['content']);
$fp = fopen($fn,"w") or die ("Error opening file in write mode!");
fputs($fp,$content);
fclose($fp) or die ("Error closing file!");
echo "<meta http-equiv=\"refresh\" content=\"0; url=done.php\" />\n";
?>

以下是当前基于textarea的表格:

enter image description here

我想要的基于新文本字段的表单:

enter image description here 一如既往,谢谢大家!

1 个答案:

答案 0 :(得分:2)

解析文件,然后向用户显示想要的行。一旦他编辑了它,重新解析文件,并替换信息。 (而不是解析,你可以只跟踪它是哪个行号。)

除此之外,这个问题有点深入。你有什么具体问题吗?

另外,一些不相关的建议:

  • 用file_get_contents替换implode(file())。
  • 使用完整的开场标签('&lt;?php',没有空格)
  • 使用fwrite而不是fputs(这个没有实际的理由,我只是避免使用别名)
  • 很大一部分个人偏好,但我发现使用标题重定向比使用元标记更清晰。

例如:

header("Location: http://blah/done.php");