PHP在读取文件后取消链接
我读取文件夹中的文件 现在我想让每个文件都有一个“编辑”、“开始”和“删除”按钮 问题是,当我单击“删除”时,PHP将删除最后读取的文件,而不是单击“删除”的文件 我知道这是While循环,它没有给unlink函数提供任何信息,但是我没有正确理解它 谢谢你的帮助!:)PHP在读取文件后取消链接,php,file,delete-file,unlink,Php,File,Delete File,Unlink,我读取文件夹中的文件 现在我想让每个文件都有一个“编辑”、“开始”和“删除”按钮 问题是,当我单击“删除”时,PHP将删除最后读取的文件,而不是单击“删除”的文件 我知道这是While循环,它没有给unlink函数提供任何信息,但是我没有正确理解它 谢谢你的帮助!:) 忽略上面代码中的一些语法错误,您可以将文件名($replacer)放入delete submit按钮的值中,如下所示: <input type='submit' name='delete' value='" . $repla
忽略上面代码中的一些语法错误,您可以将文件名($replacer)放入delete submit按钮的值中,如下所示:
<input type='submit' name='delete' value='" . $replacer . "'/>
这会将$replacer的值发送到您想要的位置
但是,理想情况下,将一个隐藏的表单字段和名称放在其中会更有意义,如下所示:
'<input type="hidden" name="filename" value="' . $replacer . '"/>'
“”
并将表单处理器改为查找$\u POST['filename'] 那么,根据您的编码风格,您必须按照以下方式进行编码:
<?php
if(isset($_POST['delete'])) {
$replacer = $_POST['delete'];
echo "
<div class='warning'>";
echo $replacer;
echo "Do you really want to delete?>
<form method='post'>
<input type='submit' name='really_delete' value='$replacer'/>
</form>
<form method='post'>
<input type='submit' name='not_delete' value='cancel'/>
</form></div>";
}
if(isset($_POST['really_delete'])) {
$replacer = $_POST['really_delete'];
unlink("rezepte/".$replacer.".txt");
}
if(isset($_POST['not_delete'])) {
}
if ($handle = opendir('rezepte/')) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
#Entfernt der Datei das ".txt"
$replacer = str_replace(".txt","",$entry);
echo "
<div class='eintrag'>$replacer</div><br>
<a href='$replacer.txt'>edit</a>
<a href='$replacer'> start</a>
<form method='post'>
<input type='submit' name='delete' value='$replacer'/>
</form>";
}
}
closedir($handle);
}
感谢您的快速响应,但这只是更改按钮名称,不会影响删除顺序。如果我现在按下按钮,readwhile循环的最后一个文件将被删除。例如,我得到了5个文件,如1、2、3、4、5,我按下了3上的按钮,文件“5”被删除。请查看我编辑的回复(对不起,我在火车上移动,有时很难正确获取这些文件)。我还想指出您的代码存在安全问题。考虑用户可以提交任意值的HTTP请求,用于<代码> $* POST [删除] <代码> >代码> $POST [ RealyDele] ] < /代码>。如果工作目录是/var/www
,那么的真的删除值
。/../some/important/file
将调用取消与/var/www/rezepte/../some/important/file.txt的链接。您需要对从删除
和真正删除
中读取的内容进行清理。e、 g.如果您只期望整数值,如果其中包含其他字符,则失败。还有,你允许任何用户删除任何文件吗?哦,你说得对,你。我只编写了一个小的php/html/css webapp来调用我的raspberry pi上的python函数。所以只有我作为一个用户。无论如何,谢谢你:)
<?php
if(isset($_POST['delete'])) {
$replacer = $_POST['delete'];
echo "
<div class='warning'>";
echo $replacer;
echo "Do you really want to delete?>
<form method='post'>
<input type='submit' name='really_delete' value='$replacer'/>
</form>
<form method='post'>
<input type='submit' name='not_delete' value='cancel'/>
</form></div>";
}
if(isset($_POST['really_delete'])) {
$replacer = $_POST['really_delete'];
unlink("rezepte/".$replacer.".txt");
}
if(isset($_POST['not_delete'])) {
}
if ($handle = opendir('rezepte/')) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
#Entfernt der Datei das ".txt"
$replacer = str_replace(".txt","",$entry);
echo "
<div class='eintrag'>$replacer</div><br>
<a href='$replacer.txt'>edit</a>
<a href='$replacer'> start</a>
<form method='post'>
<input type='submit' name='delete' value='$replacer'/>
</form>";
}
}
closedir($handle);
}