像megaupload这样的随机网址

时间:2010-11-23 04:33:22

标签: php mysql

我需要卖图片。我需要创建一个像系统一样的megaupload来创建ramdom url,如下所示:“http://download.server.com/7fdfug87g89f7g98fd7g/image.jpg”与会话和IP地址相关联。

我正在使用PHP,Apache或Nginx。

我怎样才能做到这一点?

任何想法?

4 个答案:

答案 0 :(得分:2)

使用.htaccess文件中的mod_rewrite将您定义的某些模式的请求重定向到php文件,或许是'index.php'。

这样,您可以将请求的字符串作为URL参数传递给页面。然后在脚本中,您可以使用该参数查找并返回相关图像。

它被称为“URL重写”,它是具有有意义的URL的网站的工作方式,就像stackoverflow的URL一样。

独特性;您可能需要保留数据库以将代码与文件进行映射,而不是裸哈希码。因此,它们可能是您希望的任意长度的完全随机代码,并且永远不会发生冲突,因为在分配期间,如果您刚刚创建的那个与DB中已有的另一个冲突,您将创建一个新的随机代码。您可以向DB记录添加明确的IP和会话信息。这也消除了对散列算法进行一些繁重计算的需要。

答案 1 :(得分:1)

像md5这样的东西是合理的。

$my_seed = "something random here";
$path = md5($my_seed . $_SESSION['something'] . $_SERVER['REMOTE_ADDR']);

echo "http://download.server.com/" . $path . "/" . $file;

这应该会给你一个非常独特的路径来放置文件,这很少会发生冲突。您仍应检查先前的哈希路径是否存在。

答案 2 :(得分:0)

使用一些流行的哈希函数,例如MD5。应该有一个PHP模块。

答案 3 :(得分:0)

我通常使用像sha1或md5这样的散列函数来生成一个十六进制数字的伪随机字符串,该字符串基于当前时间加上对于URL所特有的其他一些数据位。