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

标签 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

我正在使用这段代码:

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

如果您能告诉我是否有不同的方式来删除文件或帮助我解决当前的问题,我将非常感激。

谢谢。

最佳答案

虽然你可以delete files通过 HTTP,php 的 HTTP protocol wrapper不支持它。没有身份验证,这无论如何都会是一个安全漏洞,因此大多数 HTTP 服务器不支持 DELETE (除了 WebDAV )。您应该执行以下操作之一:

  • 通过FTP删除文件或 SFTP .您必须配置服务器,但可能已经有一个 FTP 或 SFTP 帐户。 PHP 5 的 FTPSFTP协议(protocol)包装器支持 unlink,因此您可以根据需要使用它来代替相应的删除功能。
  • 如果你的服务器真的支持WebDAV,你必须使用CURL extensioncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); 通过 HTTP 删除文件。不要忘记进行身份验证!
  • 添加允许文件删除的服务器端脚本。确保进行身份验证(检查用户+密码)并且不允许 CSRF如果您选择基于 cookie 的身份验证,则会受到攻击。

关于php - 使用 PHP 删除网站上的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7200665/

相关文章:

php - 使用取消链接功能删除文件php

php - 使用 CodeIgniter(3) 删除服务器(非本地)上的文件

php - 这是检查文件是否存在的正确方法吗?

php - SQL 查询在 MySQL 中返回完整结果,在 PHP 中返回部分结果

php - 从 codeigniter 安装外部的外部 php 脚本访问 CodeIgniter super 对象

javascript - 使用ajax响应获取文本框中的值

php取消链接文件

php - 我可以使用 twig 模板引擎组件显示参数值($_POST、$_GET、$_SESSION、$_SESSION)吗

javascript - Facebook 登录 : Please make sure your redirect_uri is identical to the one you used in the OAuth dialog

linux - 取消链接(符号链接(symbolic link))目录到已安装的硬盘