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

时间:2016-01-21 15:44:45

标签: php codeigniter authentication token

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

$key=md5(uniqid());

用于发送电子邮件激活密钥...我可以使用其他方法吗?我不知道,使用数据库(mysql)?用SHA1哈希可能吗? 我不想要最安全的方式,只是一个非虚假的解决方案,因为uniqid()是。因为我知道uniqid()生成的id不是真正随机的,所以没有理由哈希到md5只是...愚蠢。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

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

  1. 易于理解
  2. 轻松回来
  3. 这意味着如果您发送 md5 ,用户会获得字长32 。这是非常糟糕的迹象。

    MD5示例

    8b1a9953c4611296a827abf8c47804d7
    

    我建议你

    在codeigniter中有一个帮助电话String。使用它。

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

    1. 阿尔法
    2. alnum
    3. 基本
    4. 数字
    5. nozero
    6. 如何使用?

      在控制器中加载助手

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

      然后只需添加此

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

      示例:

      random_string('alnum', 8);
      

      这些如何相互区别??

        

      假设:在这些情况下长度为8。

      <强> 阿尔法

      这将只打印字符串与UPPER案例
      示例 AKTHDOGK

      <强> alnum

      这将打印带有UPPER和LOWER Case的字符串
      示例 JdKsPeeU

      <强> 基本

      这将使用php 中的mt_rand()打印随机数 示例 12756079

      <强>数字

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

      <强> nozero

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

        

      仅供参考:我从未使用数字 nozero 。所以我不知道这个例子。但是我使用了所有其他功能。