防止文件覆盖php

时间:2018-11-02 10:25:26

标签: php

im创建一个有两个文本框的网站。一个用于文件名,另一个用于内容。当您单击“提交”时,它将根据您编写的内容在特定文件夹中创建文件。这一切都很好,但是如果您写入相同的文件名和不同的内容,它将覆盖该文件。我只希望提交后关闭该文件以进行写入,因此没有人可以与其他文件混淆。这是我的php代码:

hh:mm

3 个答案:

答案 0 :(得分:0)

添加一个条件,使用file_exists()检查文件是否已经存在:

<?php
$filnavn = $_POST["filnavn"];
$innhold = $_POST["innhold"];
$path = dirname(__FILE__) . "/lekser/" . $filnavn . ".txt";

if ($filnavn != "" && file_exists($path))
{
    $myfile = fopen($path, "w") or die("Feil! Klarer ikke å skrive filen. Prøv igjen.");
    fwrite($myfile, $innhold);
    fclose($myfile);
}

?>

答案 1 :(得分:0)

我不确定预期的结果是什么,所以我给出了完全不同的答案:

如果您使用fopen($path, "a")而不是fopen($path, "w"),则会将内容附加到现有文件中,而不是替换它。

答案 2 :(得分:0)

尝试一下::

$filnavn = $_POST["filnavn"];
$innhold = $_POST["innhold"];
$path = dirname(__FILE__) . "/lekser/" . $filnavn . ".txt";

如果文件不存在,则创建一个新文件:

if ($filnavn != "" && !file_exists($path))
{
    $myfile = fopen($path, "w") or die("Feil! Klarer ikke å skrive filen. Prøv igjen.");
    fwrite($myfile, $innhold);
    fclose($myfile);
}

如果文件存在,则在现有文件内容的底部追加新内容:

if ($filnavn != "" && file_exists($path))
    {
        $myfile = fopen($path, "a") or die("Feil! Klarer ikke å skrive filen. Prøv igjen.");
        fwrite($myfile, $innhold);
        fclose($myfile);
    }

如果不想在现有文件中进行任何更改,请创建一个新文件,并在文件名中添加数字

  if ($filnavn != "" && file_exists($path))
            {   // just add number with file name, for versioning
               $path = dirname(__FILE__) . "/lekser/" . $filnavn . "1.txt";
                $myfile = fopen($path, "w") or die("Feil! Klarer ikke å skrive filen. Prøv igjen.");
                fwrite($myfile, $innhold);
                fclose($myfile);
            }