我正在创建一个非常简单的应用程序,允许(潜在员工)的引用上传他们自己的引用字母。以下是它的工作原理:
我一直坚持如何生成一个完全(好的,好的,准的)随机URL。更重要的是:我如何确保在链接后将引用引导到正确的页面?每次发送随机网址时,是否必须创建包含投递箱的新页面?
感谢您提出如何解决这个问题的建议:)
答案 0 :(得分:1)
您可以尝试使用hash算法,该算法根据文件内容生成唯一的校验和。通常(例如使用md5()
)原始内容中的一个字节更改会导致完全不同的哈希值。 (注意: md5有一些collision vulnerabilities。)
如果您使用散列的文件名存储上传的文件,您将能够在以后检索它,但是对于更复杂的系统,应该建立一个数据库来建立随机URL和存储的内容。
如果你不想哈希,下面的代码片段可以帮助生成随机URL(但要确保如果已经使用了URL,则可以防止意外覆盖):
md5( sha1( time() + rand(0, time()) ) );
答案 1 :(得分:1)
我认为当你说你想要生成一个随机URL时,你实际上是要求生成一个随机字符串。这可能非常简单;这是一些伪代码:
for i = 1 to stringLength
randomString[i] = floor(random() * 26) + 'a'
end
换句话说,生成0到25之间的随机数,并将其添加到字符“a”的ASCII值中。这将生成一个随机字符串的小写字母,我认为这应该足以完成您的任务。在PHP中,您将使用rand函数。建议使用srand函数为随机数生成器播种当前时间,如给定链接末尾的示例。
第二部分;我建议你简化一些事情;而不是生成带有随机URL的实际页面,为什么不简单地将随机字符串传递给查询字符串,例如:
www.mydomain.com/uploadReference.php?id=xxxxxxx
其中xxxxxxx是您的随机字符串。然后,您可以使用PHP验证字符串并在数据库中查找它。对于您的目的,这似乎是迄今为止最简单的方法。
答案 2 :(得分:0)
您可以根据当前时间戳的某种形式的哈希值或引用的唯一凭据(例如用户名或其他内容)创建唯一字符串。然后,您可以为Dropbox创建一个页面,该页面将接受URL中用于页面上脚本的唯一字符串,该脚本将检索数据库中该字符串映射的相关数据。
答案 3 :(得分:0)
您还可以创建数字和字符的随机排列,以便
hash($previous) // is unique
基本思想是'hash'函数仅依赖于前一个值,创建一个新的唯一值。例如,使'0' - > '1','1' - > '2','9' - > 'a','z' - > '10','z0' - > '11'。这种算法相对容易设计