0

我正在创建一个非常简单的应用程序,它允许(潜在员工的)推荐人上传他们自己的推荐信。以下是它的工作原理:

  • 申请人提交参考电子邮件
  • 参考收到一封自动生成的包含唯一URL 的电子邮件(出于安全原因)
  • 参考跟随链接,回答安全问题(如果他希望多次访问该站点)
  • 上传信

我被困在如何生成一个完全(好的,好的,准会做的)随机 URL 上。更重要的是:我如何确保点击链接会将引用指向正确的页面?每次发送随机 URL 时,我是否必须创建一个包含下拉框的新页面?

感谢您提供有关如何解决此问题的任何建议:)

4

4 回答 4

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 在数据库中查找它。就您的目的而言,这似乎是迄今为止最简单的方法。

于 2012-08-08T13:14:24.720 回答
1

您可以尝试使用从文件内容生成唯一式校验和的哈希算法。通常(例如使用md5())原始内容中的一个字节更改会导致完全不同的哈希值。(注意: md5 有一些碰撞漏洞。)

如果您使用哈希的文件名存储上传的文件,您将能够在以后检索它,但对于更复杂的系统,应该建立一个数据库来建立随机 URL 和存储内容之间的关系.

如果您不想散列,下面的代码片段可能有助于生成随机 URL(但请确保如果 URL 已被使用,则可以防止意外覆盖):

md5( sha1( time() + rand(0, time()) ) );
于 2012-08-08T13:06:15.280 回答
0

您还可以创建数字和字符的随机排列,以便

hash($previous) // is unique

基本思想是“哈希”函数仅依赖于先前的值,从而创建一个新的唯一值。例如'0' -> '1', '1' -> '2', '9' -> 'a', 'z' -> '10', 'z0' -> '11'。这样的算法相对容易设计

于 2012-08-08T14:11:49.007 回答
0

您可以根据当前时间戳的某种形式的哈希或引用的唯一凭据(例如用户名或其他内容)创建唯一字符串。然后,您可以为 dropbox 创建一个页面,该页面将接受 URL 中的唯一字符串,以用于页面上的脚本,该脚本将检索数据库中该字符串映射的相关数据。

于 2012-08-08T13:06:48.087 回答