PHP-md5和唯一的$\u文件名

PHP-md5和唯一的$\u文件名,php,Php,我有一个PHP函数,用于将图像上传到服务器 但我很困惑,我想给当前上传的文件一个唯一的md5名称。这是我的密码: if ((getimagesize($_FILES['user_image']['tmp_name']) >0) && $_FILES['user_image']['size'] > 0 && ($_FILES['user_image']['size'] < 1048576)){ $uploaddir = DIR.

我有一个PHP函数,用于将图像上传到服务器

但我很困惑,我想给当前上传的文件一个唯一的md5名称。这是我的密码:

if ((getimagesize($_FILES['user_image']['tmp_name']) >0) && $_FILES['user_image']['size'] > 0 && ($_FILES['user_image']['size'] < 1048576)){

        $uploaddir  = DIR.'/images/';
        $uploadfile = $uploaddir . basename($_FILES['user_image']['name']);
        move_uploaded_file($_FILES['user_image']['tmp_name'], $uploadfile);

        // check if user have already uploaded an image, then delete 
        //it before uploading new one

        $old_file = db_user_image($user, 'image');
        if (strlen($old_file)){ 
            $delete = $uploaddir.$old_file;
            if (file_exists($delete))  
                unlink ($delete); 
        }

        db_save_user_image($user, 'image', $_FILES['user_image']['name']) ;

}   
if((getimagesize($\u文件['user\u image']['tmp\u name']]>0)&&$\u文件['user\u image']['size']>0&($\u文件['user\u image']['size']<1048576)){
$uploaddir=DIR'/images/';
$uploadfile=$uploaddir.basename($_FILES['user\u image']['name']);
移动上传的文件($上传文件['user\u image']['tmp\u name'],$uploadfile);
//检查用户是否已上载图像,然后删除
//在上传新文件之前,请先删除它
$old_file=db_user_image($user,'image');
如果(strlen($old_file)){
$delete=$uploaddir.$old_文件;
如果(文件_存在($delete))
取消链接(删除);
}
db_save_user_image($user,'image',$_FILES['user_image']['name']);
}   

请告诉我如何为这些文件指定唯一的md5名称。

如果您只想为这些文件指定md5名称,则需要更改行

$uploadfile = $uploaddir . basename($_FILES['user_image']['name']);


如果您只想为文件指定md5名称,则需要更改行

$uploadfile = $uploaddir . basename($_FILES['user_image']['name']);


只需在
md5
上替换
basename


basename
返回路径的尾随名称组件

只需在
md5
上替换
basename


basename
返回路径的尾随名称组件

更改
$uploadfile
声明如下:

$ext = pathinfo( $_FILES['user_image']['name'], PATHINFO_EXTENSION);
$uploadfile = $uploaddir . md5(basename($_FILES['user_image']['name']) ).$ext;

更改
$uploadfile
声明如下:

$ext = pathinfo( $_FILES['user_image']['name'], PATHINFO_EXTENSION);
$uploadfile = $uploaddir . md5(basename($_FILES['user_image']['name']) ).$ext;

我添加了时间戳,并使用
md5()
对其进行了加密。它应该为文件生成一个唯一的名称

   $targetFile = md5(time()).$_FILES['user_image']['name'];
并使用
$targetFile
代替脚本中的
$\u文件['user\u image']['name']

//Code
if ((getimagesize($_FILES['user_image']['tmp_name']) >0) && $_FILES['user_image']['size'] > 0 && ($_FILES['user_image']['size'] < 1048576)){

    $uploaddir  = DIR.'/images/';
    $targetFile = md5(time()).$_FILES['user_image']['name'];
    $uploadfile = $uploaddir.$targetFile;
    move_uploaded_file($_FILES['user_image']['tmp_name'], $uploadfile);

    // check if user have already uploaded an image, then delete 
    //it before uploading new one

    $old_file = db_user_image($user, 'image');
    if (strlen($old_file)){ 
        $delete = $uploaddir.$old_file;
        if (file_exists($delete))  
            unlink ($delete); 
    }

    db_save_user_image($user, 'image', $targetFile) ;
//代码
如果((getimagesize($\u文件['user\u image']['tmp\u name']]>0)&&$\u文件['user\u image']['size']>0&($\u文件['user\u image']['size']<1048576)){
$uploaddir=DIR'/images/';
$targetFile=md5(time()).$\u文件['user\u image']['name'];
$uploadfile=$uploaddir.$targetFile;
移动上传的文件($上传文件['user\u image']['tmp\u name'],$uploadfile);
//检查用户是否已上载图像,然后删除
//在上传新文件之前,请先删除它
$old_file=db_user_image($user,'image');
如果(strlen($old_file)){
$delete=$uploaddir.$old_文件;
如果(文件_存在($delete))
取消链接(删除);
}
db_save_user_image($user,'image',$targetFile);

}

我添加了时间戳,并使用
md5()
对其进行了加密。它应该为文件生成一个唯一的名称

   $targetFile = md5(time()).$_FILES['user_image']['name'];
并使用
$targetFile
代替脚本中的
$\u文件['user\u image']['name']

//Code
if ((getimagesize($_FILES['user_image']['tmp_name']) >0) && $_FILES['user_image']['size'] > 0 && ($_FILES['user_image']['size'] < 1048576)){

    $uploaddir  = DIR.'/images/';
    $targetFile = md5(time()).$_FILES['user_image']['name'];
    $uploadfile = $uploaddir.$targetFile;
    move_uploaded_file($_FILES['user_image']['tmp_name'], $uploadfile);

    // check if user have already uploaded an image, then delete 
    //it before uploading new one

    $old_file = db_user_image($user, 'image');
    if (strlen($old_file)){ 
        $delete = $uploaddir.$old_file;
        if (file_exists($delete))  
            unlink ($delete); 
    }

    db_save_user_image($user, 'image', $targetFile) ;
//代码
如果((getimagesize($\u文件['user\u image']['tmp\u name']]>0)&&$\u文件['user\u image']['size']>0&($\u文件['user\u image']['size']<1048576)){
$uploaddir=DIR'/images/';
$targetFile=md5(time()).$\u文件['user\u image']['name'];
$uploadfile=$uploaddir.$targetFile;
移动上传的文件($上传文件['user\u image']['tmp\u name'],$uploadfile);
//检查用户是否已上载图像,然后删除
//在上传新文件之前,请先删除它
$old_file=db_user_image($user,'image');
如果(strlen($old_file)){
$delete=$uploaddir.$old_文件;
如果(文件_存在($delete))
取消链接(删除);
}
db_save_user_image($user,'image',$targetFile);


}

。。。然后呢?你有什么困惑吗?你卡在哪里了?如何给这个文件指定唯一的md5名称?这对我来说毫无意义。md5总和并不比原始文件名更唯一,或者换句话说,两个同名文件将导致相同的md5哈希。为什么首先是md5?SHA2是一个更好的散列算法。。。。然后呢?你有什么困惑吗?你卡在哪里了?如何给这个文件指定唯一的md5名称?这对我来说毫无意义。md5总和并不比原始文件名更唯一,或者换句话说,两个同名文件将导致相同的md5哈希。为什么首先是md5?SHA2是一种更好的散列算法。唯一名称是什么?因此,它不会覆盖任何文件md5是非常独特的,您必须生成许多md5哈希以获得名称冲突。好的,感谢您的澄清在这个答案中
md5
使用了两次,两个名称是否相同?是的,两个名称都相同。但是如果你想让它的名字只出现一次,你可以像这样保存它,
$md5name=md5(…)和唯一名称?因此,它不会覆盖任何文件md5是非常独特的,您必须生成许多md5哈希以获得名称冲突。好的,感谢您的澄清在这个答案中
md5
使用了两次,两个名称是否相同?是的,两个名称都相同。但是如果你想让它的名字只出现一次,你可以像这样保存它,
$md5name=md5(…)你好。阿马尔。md5/uniqid不会破坏扩展吗?@ShankarDamodaran:请看更新的答案:)酷吧;)+你好。阿马尔。md5/uniqid不会破坏扩展吗?@ShankarDamodaran:请看更新的答案:)酷吧;)+1md5是一个哈希函数,你不能用它“加密”任何东西。md5是一个哈希函数,你不能用它“加密”任何东西。