使用PHP编辑文件

时间:2012-02-16 23:05:06

标签: php

好的,这就是我的目标。

我列出了目录的竞赛,因此我可以编辑和删除文件。

我正在使用的代码如下(其他然后编辑因为它不起作用)。

<?php
$directory = ("enctlfiles/");
$dir = opendir($directory);
$files = array();

while (($file = readdir($dir)) != false) {
  $files[] = $file;
}

closedir($dir);
sort($files);
print("<TABLE border=1 cellpadding=5 cellspacing=0 class=whitelinks>\n");
print("<TR><TH>File Name</TH><th>Modified Date</th><th>Entries In File</th><th>Delete | Edit</th></TR>\n");

foreach ($files as $file)
{
    if (strpos($file, '.jpg',1)||strpos($file, '.ctl',1) ){
      echo "<TR><TD><a href=$directory$file>$file</a></td>";
      echo "<td>";
      echo date("F d Y H:i:s",filemtime($directory. $file));
      echo "<td>";
      echo count(file($directory. $file));
      echo "<td>";
      echo "<a href=enctlfiles/dodelete.php?file=$file>Delete</a> | <a href=enctlfiles/editfile.php?file=$file>Edit</a>";

    }
}
?>

在一个漂亮的漂亮表中按顺序列出所有文件。删除功能有效。编辑不是那么多。这是由于我不知道我在做什么,我确信它。

以下是editfile.php

的内容
<form action="edit.php" method="post">
  <TEXTAREA NAME="save" COLS=150 ROWS=50 wrap="off">
  <?php
  $dir = ".";
  include($dir. '/' .$_GET['file']);
  ?>
  </textarea>
  <P><INPUT TYPE="SUBMIT" VALUE="Update File"><INPUT TYPE="RESET">
</FORM>

当您单击“编辑”链接时,会使用文件内容填充textarea。我不知道这是否是获取数据的正确方法,以便能够编辑文件。

以下是edit.php文件的内容:

<?php
//I have tried this but it give me that Unable to open file.
//$org = ($_GET['file']) or exit("Unable to open file!"); 

//This returns me to the prodsh.php page but does not edit the file.
$org = $_POST['save'] or exit("Unable to open file!"); 
$copy = $org . date("-m-d-Y-His");
copy($org,$copy);

$f = fopen($org, 'w');
fwrite($f, $_POST['save']);
fclose($f);

header('Location: http://somesite.com/GroveTuckey/itemsetup/prodsh.php');
?>

我认为editfile.php和edit.php文件已经搞砸了,但不知道在哪里。

我正在努力学习这个,当我对某些东西感到难过时,这个网站非常有用,所以我提前感谢你们提供的帮助。

我也知道通过网页编辑文件的危险。这不是公开的,也不是世界上可访问的服务器。现在我不想处理数据库。

我使用以下代码编辑了文件:

<form action="doedit.php" method="post">
  <TEXTAREA NAME="save" COLS=150 ROWS=50 wrap="off">
  <?php
  include('somefile.ctl');
  ?>
  </textarea>
  <P><INPUT TYPE="SUBMIT" VALUE="Update File"><INPUT TYPE="RESET">
</FORM> 

doedit.php的内容为:

<?php
$org = 'Somefile.ctl';// This is the name of the file in the form above
$copy = $org . date("-m-d-Y-His");
copy($org,$copy);

$f = fopen('somefile.ctl', 'w');//This is the name of said file also.
fwrite($f, $_POST['save']);
fclose($f);

header('Location: http://somesite.com/GroveTickey/editfile.php');
?>

但由于文件的名称可以是任何我不能在脚本中添加特定名称。

除了必须对文件名进行硬编码之外,这非常有用。

2 个答案:

答案 0 :(得分:2)

您没有将文件名传回edit.php。将表单的操作设置为edit.php?file=<?php echo $_GET['file']; ?>

答案 1 :(得分:0)

El codigo para editar lo hice asi:

---Inicio
<? php

$filename = isset($_GET['file']) ? $_GET['file'] : '';
$directory = ("C:\\Linux\\www\\contenido\\"); // Restrict to this directory...

$fn = $directory . $filename;

if (isset($_POST['content']))
{
    $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!");
}

?>

<form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post">
    <textarea rows="25" cols="100" name="content"><?php readfile($fn); ?></textarea>
    <hr />
    <input type="submit" value="Guardar">
</form>

<a href="####">back to list</a>

And work great