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")
,则会将内容附加到现有文件中,而不是替换它。