我有 PHP脚本,您可以在其中上传文件。这些文件将被列出,并转换为下载链接。我需要的最后一件事是每个列表项的删除按钮。像这样
(大X应该是删除按钮)。
到目前为止,这是我的代码。
<?php
if(isset($_FILES['file_array'])){
$name_array = $_FILES['file_array']['name'];
$tmp_name_array = $_FILES['file_array']['tmp_name'];
$type_array = $_FILES['file_array']['type'];
$size_array = $_FILES['file_array']['size'];
$error_array = $_FILES['file_array']['error'];
for($i = 0; $i < count($tmp_name_array); $i++){
if(move_uploaded_file($tmp_name_array[$i], "uploads/".$name_array[$i])){
} else {
echo "move_uploaded_file function failed for ".$name_array[$i]."<br>";
}
}
}
$thelist = "";
if ($handle = opendir('uploads')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$thelist .= '<li><a download="'.$file.'"href="uploads/'.$file.'">'.$file.'</a></li>';
}
}
closedir($handle);
}
?>
<h1>List:</h1>
<ul><?php echo $thelist; ?></ul>
我是PHP的新手,所以我希望有人能用简单的语言解释它是如何工作的。
答案 0 :(得分:1)
我需要的最后一件事是每个列表项的删除按钮
通过表格发布价值:
<form method="post" action="delete.php">
<button type="submit" name="file_id" value="some_value">×</button>
</form>
然后在delete.php
中,引用$_POST['file_id']
。
另一种方法是将while
循环包装在表单中:
<form method="post" action="delete.php">
<?php while(...): ?>
<button type="submit" name="file_id" value="some_value">×</button>
<?php endwhile; ?>
</form>
答案 1 :(得分:0)
您可以添加 X 链接以引用要删除的文件,即
$thelist .= '<li><a download="'.$file.'"href="uploads/'.$file.'">'.$file.' </a> <a href="delete.php?item='.$file.'"> X </a></li>';
然后,在删除页面上,您可以添加取消链接代码以删除文件
$file = $_GET['item'];
if (!unlink($file))
{
echo ("Error deleting $file");
}
else
{
echo ("Deleted $file");
}
这是如何解决这个问题的基本思路。 但为了安全起见,您可以加密参数上的url文件名,即
base64_encode($file)
在删除页面上解码它
base64_decode($_GET["item"])
答案 2 :(得分:0)
为了创建删除项目的请求,您可以例如:
$localexception.Exception.GetType().FullName
System.Management.Automation.ItemNotFoundException
$remoteexception.Exception.SerializedRemoteException.GetType().FullName
System.Management.Automation.PSObject
#Get TypeName from psobject
$remoteexception.Exception.SerializedRemoteException.psobject.TypeNames[0]
Deserialized.System.Management.Automation.ItemNotFoundException
基本上<form action="delete.php" method="POST">
<input type="hidden" name="csrf_token" value="$csrf_token">
<input type="hidden" name="file" value="$file">
<button type="submit">X</button>
</form>
是一个安全随机令牌,它与会话相关联,服务器在处理删除请求之前应该验证该会话。
(关于CSRF安全问题的更新@PeeHaa提到。)
(如果您支持,可以使用方法DELETE。)