防止文件覆盖php

  • 本文关键字:php 覆盖 文件 php
  • 更新时间 :
  • 英文 :


im正在创建一个有两个文本框的网站。一个用于文件名,一个用于内容。当你点击提交时,它会根据你写的内容在特定文件夹中创建一个文件。这一切都很好,但如果你写相同的文件名和不同的内容,它会覆盖文件。我只想在提交后关闭文件进行写作,这样就不会有人破坏其他文件。这是我的php代码:

<?php
$filnavn=$_POST["filnavn"];
$innhold=$_POST["innhold"];
if($filnavn!=""){
$myfile = fopen(dirname(__FILE__)."/lekser/".$filnavn.".txt", "w") or die("Feil! Klarer ikke å skrive filen. Prøv igjen.");
fwrite($myfile, $innhold);
fclose($myfile);
}
?>

试试这个::

$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);
}

添加一个条件,使用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);
}
?>

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

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

最新更新