Javascript 使用AJAX/PHP删除文件

Javascript 使用AJAX/PHP删除文件,javascript,php,ajax,delete-file,Javascript,Php,Ajax,Delete File,问题 我想用AJAX/PHP删除一个文件 但是php说我用AJAX发送的文件名不是文件,但是当我直接转到链接时,我可以删除这些文件。检查我当前的PHP,我已经输入了IF/ELSE语句来检查字符串是否是带有以下内容的文件:is\u file,结果是false 没有is_文件说明: 警告:取消链接(“image.jpg”)[function.unlink]:第8行的C:\wamp\www\images\users\delete.php中的参数无效 调用ajax的文件在文件夹中,我要删除的文件也在文

问题


我想用
AJAX/PHP
删除一个文件

但是php说我用AJAX发送的文件名不是文件,但是当我直接转到链接时,我可以删除这些文件。检查我当前的PHP,我已经输入了IF/ELSE语句来检查字符串是否是带有以下内容的文件:
is\u file
,结果是
false

没有
is_文件
说明:

警告:取消链接(“image.jpg”)[function.unlink]:第8行的C:\wamp\www\images\users\delete.php中的参数无效

调用ajax的文件在文件夹中,我要删除的文件也在文件夹中

PHP


  • 您需要提供is_文件的完整路径。像image.jpg这样的部分路径不会告诉它该文件的位置。如果它应该是相对于文档根的,则需要预先设置它

  • 这是我见过的最危险的剧本之一。您可以将任何文件传递到photo_id,只要web服务器具有正确的权限,它就会将其删除。您至少应该确保将其限制为仅删除特定目录中的文件


您的ajax请求中包含引号中的数据

//Bad
delete.php?photo_id="1234"

//Good
delete.php?photo_id=1234

//So use this:
xmlhttp.open("GET", "http://192.168.2.104/images/users/delete.php?photo_id="+photos+"&thumbnail_id="+thumbnails, true);

例如,您可能需要指定路径

file_exists( realpath('.') . '/' . $id ); 文件_存在(realpath('.')./'.$id);
(假设您的文件与脚本位于同一文件夹中)与其他人所说的一样,这是一个危险的脚本,除非有其他安全措施

尝试在帖子中使用trim或get variable,例如:

$photo_id=trim($_GET['blah..blah']);

在我的例子中,问题是
$photo\u id
没有返回任何文件名-它返回类似于这样的“\n文件名”,当它应该是“文件名”时,所以我添加了
trim
,它现在对我起作用了。

嘿,我已经将完整路径放在
is\u文件中了
,但我有相同的错误。谢谢你提出了安全问题,我稍后也会问一个问题。好的,我试过了,但还是出现了错误,还有其他提示吗?嗯,我已经用
is_file
删除了
IF/THEN
语句,有效:;,这很有趣,但有效:d当问题再次出现时:(尝试用这个:IF替换那一行)(file_exists('./'$id)){另外,使用getcwd()确保您的目录正确如果这是您的生产脚本,它有一个严重的安全漏洞:任何人都可以告诉脚本删除/取消服务器上任何可写文件的链接 file_exists( realpath('.') . '/' . $id );
$photo_id=trim($_GET['blah..blah']);