使用PHP删除网站上的文件?

Dun*_*mer 2 php unlink

嘿我想让我的网站使用unlink()删除文件; 功能.但是当我尝试它时,我想到了这个:

Warning: unlink() [function.unlink]: cURL does not allow unlinking in /home/nzcraftn/public_html/filenz/user/delete.php on line 18

Warning: Cannot modify header information - headers already sent by (output started at /home/nzcraftn/public_html/filenz/user/delete.php:18) in /home/nzcraftn/public_html/filenz/user/delete.php on line 27
Run Code Online (Sandbox Code Playgroud)

我正在使用此代码:

if($_SESSION['user'] == $who) {
    $delete = unlink("http://www.filenz.nzcraft.net/$dl");

    if($delete) {
    $_SESSION['message'] = "<div style='color: #00FF00'>File deleted!</div>";
    header("Location: index.php");
    mysql_query("DELETE FROM fileinfos WHERE(`id`='$id')") or die(mysql_error());

} else {
    $_SESSION['message'] = "<div style='color: #FF0000'>Error while deleting!</div>";
    header("Location: index.php");
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你能告诉我是否有不同的方式删除文件或帮助我解决我当前的问题,我会非常认真.

谢谢.

phi*_*hag 6

虽然您可以通过HTTP 删除文件,但php的HTTP协议包装器不支持它.没有身份验证,无论如何它都是一个安全漏洞,因此大多数HTTP服务器不支持DELETE(除了WebDAV).您应该执行以下操作之一:

  • 通过FTPSFTP删除文件.您必须配置服务器,但可能已经有FTP或SFTP帐户.php 5的FTPSFTP协议包装器支持unlink,因此如果您愿意,可以使用它而不是相应的删除功能.
  • 如果您的服务器确实支持WebDAV,则必须使用CURL扩展curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');通过HTTP删除文件.不要忘记验证!
  • 添加允许删除文件的服务器端脚本.如果选择基于cookie的身份验证,请确保进行身份验证(检查用户+密码)并且不允许CSRF攻击.