【问题标题】:I get an error with moving files to different folders将文件移动到不同文件夹时出错
【发布时间】:2011-01-04 17:44:56
【问题描述】:

我有这个脚本旨在将文件从一个文件夹移动到另一个文件夹,但出现错误:

    $photo= $_POST['camera']; // i.e. 45647.jpg

   //move file to userpics/ folder

    rename ("../uploads/$photo", "../userpics/$photo");

但我收到此错误:

Warning: rename(/uploads/1czcec43s.jpg\n,/userpics/1czcec43s.jpg\n) [function.rename]: No error in .. on line 24

【问题讨论】:

  • 发出通知后文件是否移动了?
  • 旁注:您的文件名中有一个换行符(在$photo 中)。删除它们可能会更好......

标签: php file directory rename move


【解决方案1】:

您的文件名包含换行符\n。这很可能是错误的根源。尝试拨打trim

$photo = trim($_POST['camera']); // i.e. 45647.jpg
rename ("../uploads/$photo", "../userpics/$photo");

另外,看在上帝的份上,为您的代码添加一些健全性检查。您的用户可以轻松地将web/index.php(例如)作为$_POST['camera'] 的内容并覆盖您的PHP 文件。

【讨论】:

  • 感谢它的工作 :)) 在我将 $photo 插入数据库之前,我还能逃脱它吗!!
  • 逃避它无济于事。您应该编写一个正则表达式来定义您接受的文件名。 /^\w\.jpg$/i 之类的就足够了——字母数字字符,没有空格,带下划线,后跟 .jpg,不区分大小写。
【解决方案2】:

在使用的 POST 参数的末尾有一个 \n(换行符)。你试过删除它吗?

注意:呈现的代码极易受到攻击。

【讨论】:

    猜你喜欢
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    相关资源
    最近更新 更多