Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于SRC attibute的唯一文件名_Php_Md5_Unique - Fatal编程技术网

Php 基于SRC attibute的唯一文件名

Php 基于SRC attibute的唯一文件名,php,md5,unique,Php,Md5,Unique,在我的项目中,我有来自其他域的图像链接 <img src="http://www.somewhere.com/images/whatever-image.jpg"> 在这种情况下,我可以依赖md5()吗?如果没有,如何才能正确地做到这一点?我想你可以。碰撞仍然可能发生,但这种可能性非常小。尝试SHA1(),碰撞将小于MD5()。但是,除非您需要混淆URL,否则根本不需要使用这些哈希。只需将字符串保存到数据库中的文本字段中,如果需要,可以运行url\u encode()。通过这种方式

在我的项目中,我有来自其他域的图像链接

<img src="http://www.somewhere.com/images/whatever-image.jpg">

在这种情况下,我可以依赖md5()吗?如果没有,如何才能正确地做到这一点?

我想你可以。碰撞仍然可能发生,但这种可能性非常小。

尝试
SHA1()
,碰撞将小于
MD5()
。但是,除非您需要混淆URL,否则根本不需要使用这些哈希。只需将字符串保存到数据库中的文本字段中,如果需要,可以运行
url\u encode()
。通过这种方式,您可以无限扩展,而不必担心冲突。

将当前时间戳添加到路径。这将确保路径是唯一的。

MD5在这种情况下使用非常安全。快速的散列时间使得加密不安全,这实际上是一个额外的好处

关于碰撞概率,请阅读以下内容:

另一方面,出于您的目的,只需从源属性值中删除文件路径中不允许的字符就足够了。e

$localFileName=str_replace(数组(“/”,“:”),“$src)//可能还需要去除“&”..


通过这种方式,文件名更具可读性,并且在需要时更易于进一步处理

请参见Rob,是的,我知道md5()的问题。仍然在寻找使我的案例真正独一无二的可能性。好吧-如果我使用时间戳,我稍后无法根据src属性重新检查它,对吗?我想你会没事的-这些文件名可能会有一些不整洁,我无法使用数据库。这是一种动态检查文件是否已经存在。我将查找sha1()。如果我不知道该文件已保存的时间戳,我如何在以后检查该文件是否存在?
$src = "http://www.somewhere.com/images/whatever-image.jpg"
if (file_exists('local_path'.md5($src)) {
...
}