在 CodeIgniter 3 中生成用于电子邮件验证的令牌


Generate a token for email verification in CodeIgniter 3

我正在CI3中构建一个登录/注册系统,我有一个疑问。代替使用:

$key=md5(uniqid());

用于发送电子邮件激活密钥...我可以使用其他方法吗?我不知道,使用数据库(mysql)?也许是带有 SHA1 的哈希值?我不想要最安全的方式,只需要一个不像uniqid()那样虚假的解决方案。'因为我知道 uniqid() 生成的 id 并不是真正的随机,所以没有理由简单地散列到 md5 是......笨。

提前谢谢你。

实际上电子邮件验证/密码生成应该是

  1. 易于理解
  2. 容易回来

这意味着如果您发送md5发生的事情是用户获得的字长为 32。这是非常糟糕的迹象。

MD5示例

8b1a9953c4611296a827abf8c47804d7

我建议你是

在代码点火器中有一个帮助程序调用String。使用它。

有5种不同的选择供您选择

  1. 阿尔法
  2. 阿尔纳姆
  3. 基本
  4. 数值的

如何使用这个?

控制器中的加载帮助程序

$this->load->helper('string');

然后只需添加这个

random_string([$type [, $len]]) ;

例:

random_string('alnum', 8);

这些如何相互区别??

假设 : 在这些场景中,长度为 8。

阿尔法

这将只打印大写
字符串 AKTHDOGK

阿尔纳姆

这将打印大写和小写
的字符串 JdKsPeeU

基本

这将在 php 中使用 mt_rand() 打印随机数
12756079

数值的

这将打印数字字符串
01234567(未使用。所以不确定)

这将打印和编号。但没有零 12345678(未使用。所以不确定)


仅供参考:我从未使用过数字零。所以我对这个例子一无所知。但是我使用了所有其他功能。