使用PHP重命名图像文件

时间:2012-08-08 18:49:59

标签: php joomla

我只是想确保我做对了。这是一个简单的上传课程。我需要更改下面的代码来重命名实际的图像文件,使用变量名称(Joomla用户ID并保留扩展名。当然,很容易获得登录的用户ID。所以我上传之前的图像文件名将是user(usersimagename.jpg)并将其更改为由joomla的用户变量填充的数字userid.ext(62.png)。

<?php

$uploaddir = $_REQUEST['path'];
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "success";
} else {
// WARNING! DO NOT USE "FALSE" STRING AS A RESPONSE!
// Otherwise onSubmit event will not be fired
echo "error";
 }

 ?>

2 个答案:

答案 0 :(得分:1)

如果我理解您的问题,您希望在更改存储的实际名称时保留文件扩展名。我不知道Joomla变量,但这样的东西应该可以工作

<?php
    $ext = strrchr($_FILES['userfile']['name'],".");

    $uploadfile = $uploaddir . $JOOMLAID . $ext;
?>

然后使用其余代码进行跟进。

您也可以将$ JOOMLAID替换为您能想到的任何生成名称。

答案 1 :(得分:0)

代码本身在操作上很好,但从逻辑上讲是一场噩梦。您允许用户为最终存储位置指定路径和文件名。考虑如果恶意用户进入您的网站会发生什么。它们可以简单地替换您的网络服务器的用户ID可以访问的服务器上的 ANY 文件。

e.g。

$_REQUEST['path'] = '/etc/';
$_FILES['userfile']['name'] = 'passwd';

$_REQUEST['path'] = 'c:\windows\system32\';
$_FILES['userfile']['name'] = 'ntoskrnl.exe';

虽然这些只是具有震撼价值的例子,并且不太可能被您的网络服务器修改,但它是一个示例,说明您的代码将如何轻松地允许某人完全使用您的服务器。