1. <output id="hzk7v"><pre id="hzk7v"><address id="hzk7v"></address></pre></output>
      <output id="hzk7v"></output>
    2. <nav id="hzk7v"><i id="hzk7v"><em id="hzk7v"></em></i></nav>
    3. <listing id="hzk7v"><delect id="hzk7v"><em id="hzk7v"></em></delect></listing>

      PHP生成随机码的思路与方法实例探索

       更新时间2019年04月11日 11:09:20   作者moTzxx   我要评论

      这篇文章主要介绍了PHP生成随机码的思路与方法,结合实例形式分析了php生成随机字符串的常见思路与相关操作技巧,需要的朋友可以参考下

      本文实例讲述了PHP生成随机码的思路与方法分享给大家供大家参考具体如下

      背景

      今天因为无?#27169;?#23567;伙伴让写一个生成5位随机码的函数要求可包含数字字母大小写代码尽量短

      解题思路

      (1) . 第一思路

      都是印象中匹配ASCII码进行随机读取的实现方法此处可提供一个方法作为参考

      function get_rand_ascii($pw_length = 5){
        $randpwd = '';
        for ($i = 0; $i < $pw_length; $i++) {
          $randpwd .= chr(mt_rand(33, 99));
        }
        return $randpwd;
      }
      
      

      (2) . 第二思路

      1.定义随机数组内含能够使用的所有字符

      function getRandomString($length=5) {
        //可?#25105;?#28155;加需要的字符
        $chars = array(
          "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
          "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
          "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
          "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
          "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2",
          "3", "4", "5", "6", "7", "8", "9"
        );
        $charsLen = count ( $chars ) - 1;
        shuffle ( $chars ); // 将数组打乱
        $output = "";
        for($i = 0; $i < $length; $i ++) {
          $output .= $chars [mt_rand ( 0, $charsLen )];
        }
        return $output;
      }
      
      

      提示此类的代码建议去除可能引起歧义的字符如1Il0oO9q.

      缺点5个字符没有重复

      2.比较上述 1 中的数组形式设计字符串形式参考如下

      function get_pass( $length = 8 ) {
        // 密码字符集可?#25105;?#28155;加你需要的字符
        $chars = '[email protected]#$%^&*()-_ []{}<>~`+=,.;:/?|';
        $password = '';
        for ( $i = 0; $i < $length; $i++ ) {
          // 这里提供两种字符获取方式
          // 第一种是使用 substr 截取$chars中的?#25105;?#19968;位字符
          // 第二种是取字符数组 $chars 的?#25105;?#20803;素
          // $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
          $password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
        }
        return $password;
      }
      
      

      (3) . 第三思路

      发现的新思路可使用?#29992;?#31639;法进行获取

      public function getRand(){
        $rand = rand(10000,100000);
        $str = substr(base64_encode($rand), 0, 5);
        return $str;
      }
      
      

      提示md5()函数只有数字和小写的字母

      发现base64_encode()可以满足要求

      拓展延伸

      针对于PHP设计一般的随机码可用于验证码分享码的生成着重注意位数的限制必要情况下保证该随机码的唯一性.

      password_hash 的使用PHP>5.5

      可用于用户的密码?#29992;?#23384;储不过有一点需注意如果数据库迁移对于java或.net语言将难以适用.

      $password = 'password1232456';//前端 获取的原始密码
      //数据库存放的 使用BCRYPT算法?#29992;?#30340;密码
      //此处仅为测试实际应用时应从数据表中查询获得
      //$db_pass = '$2y$10$2vJJC.rb/swAUnTfc9B94.l/ix75kiZHvOZFpu0Dd8uzp07YWlj4q';
      $db_pass = password_hash($password, PASSWORD_BCRYPT);
      if (password_verify($password , $db_pass)){
        echo "密码匹配";
      }else{
        echo "密码错误";
      }
      
      

      参考文章

      http://www.4101676.com/article/71635.htm

      PS这里再为大家提供两款功能类似的在线工具供大家参考

      在线随机数字/字符串生成工具
      http://tools.jb51.net/aideddesign/suijishu

      在线随机字符/随机密码生成工具
      http://tools.jb51.net/aideddesign/rnd_password

      更多关于PHP相关内容?#34892;?#36259;的读者可查看本站专题PHP数学运算技巧总结php字符串(string)用法总结PHP数据结构与算法教程php程序设计算法总结PHP数组(Array)操作技巧大全php常见数据库操作技巧汇总

      希望本文所述?#28304;?#23478;PHP程序设计有所帮助

      相关文章

      • php使用date和strtotime函数输出指定日期的方法

        php使用date和strtotime函数输出指定日期的方法

        这篇文章主要介绍了php使用date和strtotime函数输出指定日期的方法,实例汇总了生成各种日期格式的方法,非常具有实用价值,需要的朋友可以参考下
        2014-11-11
      • PHP设?#23186;?#24230;条的方法

        PHP设?#23186;?#24230;条的方法

        这篇文章主要介绍了PHP设?#23186;?#24230;条的方法,实例分析了php实现进度条显示进度状态的相关技巧,非常简单实用,需要的朋友可以参考下
        2015-07-07
      • PHP中COOKIES使用示例

        PHP中COOKIES使用示例

        这篇文章主要介绍了PHP中COOKIES使用示例的相关资料,需要的朋友可以参考下
        2015-07-07
      • php?#22987;?#20043;常用文件操作

        php?#22987;?#20043;常用文件操作

        php文件操作是phper必须掌握的 虽然用到的机会比较少现在整理一下学习的?#22987;?#20195;码有详细的注释 看起来应该没问题的
        2010-10-10
      • php 用checkbox一次性删除多条记录的方法

        php 用checkbox一次性删除多条记录的方法

        一次性删除多条记录对于比较多的信息如果没?#20449;可?#38500;功能是非常麻烦的这样就方便多了
        2010-02-02
      • PHP flush 函数使用注意事项

        PHP flush 函数使用注意事项

        ob_flush/flush在手册中的描述, 都是刷新输出缓冲区, 并?#19968;?#38656;要配套使用, 所以会导致很多人迷惑其实, 他们俩的操作对象不同, ?#34892;?#24773;况下, flush根本不做什?#35789;?#24773;
        2016-08-08
      • php 无限级缓存的类的扩展

        php 无限级缓存的类的扩展

        根据条件建立分类缓存减少类别使用
        2009-03-03
      • 推荐十款免费 WordPress 插件

        推荐十款免费 WordPress 插件

        本文给大家介绍的是今年必备的10款WordPress插件非常的实用包含WordPress SEO By YoastAkismetW3 Total CacheDisqus Comment SystemGoogle Sitemap GeneratorJetpackLimit Login AttemptsContact Form 7Yet Another Related Posts Plugin等
        2015-03-03
      • 教你在PHPStorm中配置Xdebug

        教你在PHPStorm中配置Xdebug

        这篇文章主要介绍了教你在PHPStorm中配置Xdebug的相关资料,需要的朋友可以参考下
        2015-07-07
      • php创建桌面快捷方式实现方法

        php创建桌面快捷方式实现方法

        这篇文章主要介绍了php创建桌面快捷方式实现方法
        2015-12-12

      最新评论

      3dԻв

        1. <output id="hzk7v"><pre id="hzk7v"><address id="hzk7v"></address></pre></output>
          <output id="hzk7v"></output>
        2. <nav id="hzk7v"><i id="hzk7v"><em id="hzk7v"></em></i></nav>
        3. <listing id="hzk7v"><delect id="hzk7v"><em id="hzk7v"></em></delect></listing>

            1. <output id="hzk7v"><pre id="hzk7v"><address id="hzk7v"></address></pre></output>
              <output id="hzk7v"></output>
            2. <nav id="hzk7v"><i id="hzk7v"><em id="hzk7v"></em></i></nav>
            3. <listing id="hzk7v"><delect id="hzk7v"><em id="hzk7v"></em></delect></listing>