嘿,我正在尝试使用 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 的 FTP和 SFTP协议(protocol)包装器支持
unlink
,因此您可以根据需要使用它来代替相应的删除功能。 - 如果你的服务器真的支持WebDAV,你必须使用CURL extension和
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
通过 HTTP 删除文件。不要忘记进行身份验证! - 添加允许文件删除的服务器端脚本。确保进行身份验证(检查用户+密码)并且不允许 CSRF如果您选择基于 cookie 的身份验证,则会受到攻击。
关于php - 使用 PHP 删除网站上的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7200665/