仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 802|回复: 19
打印 上一主题 下一主题

[学习教程] PHP网页设计PHP开辟使用法式:生成随机字符串的办法...

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:38:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
熟悉了PHP和MYSQL开发的要领之后,再回头看你写的那个留言本,你也许会怀疑那真的是你写的吗?当然,如果屋里还有鬼的话,也许是它写的-_-   </p> 利用PHP开辟使用法式,特别是网站法式,经常需求生成随秘密码,如用户注册生成随秘密码,用户重置暗码也需求生成一个随机的暗码。随秘密码也就是一串固定长度的字符串,这里我搜集收拾整顿了几种生成随机字符串的办法,以供人人参考。
办法一
1、在 33 &ndash; 126 中生成一个随机整数,如 35,
2、将 35 转换成对应的ASCII码字符,如 35 对应 #
3、反复以上 1、2 步调 n 次,毗连成 n 位的暗码
该算法次要用到了两个函数,mt_rand ( int $min , int $max )函数用于生成随机整数,个中 $min &ndash; $max 为 ASCII 码的局限,这里取 33 -126 ,可以依据需求调剂局限,如ASCII码表中 97 &ndash; 122 位对应 a &ndash; z 的英文字母,详细可参考 ASCII码表; chr ( int $ascii )函数用于将对应整数 $ascii 转换成对应的字符。
  function create_password($pw_length = 8)
{
    $randpwd = '';
    for ($i = 0; $i < $pw_length; $i++)
    {
        $randpwd .= chr(mt_rand(33, 126));
    }
    return $randpwd;
}
// 挪用该函数,传递长度参数$pw_length = 6
echo create_password(6);

办法二
1、预置一个的字符串 $chars ,包含 a &ndash; z,A &ndash; Z,0 &ndash; 9,和一些特别字符
2、在 $chars 字符串中随机取一个字符
3、反复第二步 n 次,可得长度为 n 的暗码
  function generate_password( $length = 8 ) {
    // 暗码字符集,可恣意添加你需求的字符
    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?';
     $password = '';
    for ( $i = 0; $i < $length; $i++ )
    {
        // 这里供应两种字符获得体例
        // 第一种是利用 substr 截取$chars中的恣意一名字符;
        // 第二种是取字符数组 $chars 的恣意元素
        // $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
        $password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
    }
     return $password;
}

function generate_password( $length = 8 ) {
    // 暗码字符集,可恣意添加你需求的字符
    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?';
     $password = '';
    for ( $i = 0; $i < $length; $i++ )
    {
        // 这里供应两种字符获得体例
        // 第一种是利用 substr 截取$chars中的恣意一名字符;
        // 第二种是取字符数组 $chars 的恣意元素
        // $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
        $password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
    }
     return $password;
}
  function make_password( $length = 8 )
{
    // 暗码字符集,可恣意添加你需求的字符
    $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', '!',
    '@','#', '$', '%', '^', '&', '*', '(', ')', '-', '_',
    '[', ']', '{', '}', '<', '>', '~', '`', '+', '=', ',',
    '.', ';', ':', '/', '?', '');
     // 在 $chars 中随机取 $length 个数组元素键名
    $keys = ($chars, $length);
     $password = '';
    for($i = 0; $i < $length; $i++)
    {
        // 将 $length 个数组元素毗连成字符串
        $password .= $chars[$keys[$i]];
    }
     return $password;
}

工夫效力对照
咱们利用以下PHP代码,盘算下面的 3 个随秘密码生成函数生成 6 位暗码的运转工夫,进而对他们的工夫效力停止一个复杂的对照。
  <?php
function getmicrotime()
{
    list($usec, $sec) = explode(" ",microtime());
    return ((float)$usec + (float)$sec);
}

// 纪录入手下手工夫
$time_start = getmicrotime();
   
// 这里放要履行的PHP代码,如:
// echo create_password(6);

// 纪录停止工夫
$time_end = getmicrotime();
$time = $time_end - $time_start;
  // 输入运转总工夫
echo "履行工夫 $time seconds";
?>

终究得出的了局是
办法一:9.8943710327148E-5 秒
办法二:9.6797943115234E-5 秒
办法三:0.00017499923706055 秒
可以看出办法一和办法二的履行工夫都差不多,而办法三的运转工夫略微长了点。
原文:http://www.ludou.org/how-to-create-a-password-generator-using-php.html
在一个团队之中或者说是在一个公司的工作岗位上,需要注重团队之间的交流合作;在学习或工作上都要端正自己的态度,要以认真的态度来对每件事,这样才能让自己更快的投入、更快的学习,而不至于浪费自己的时间。
不帅 该用户已被删除
沙发
发表于 2015-2-4 04:40:42 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
透明 该用户已被删除
板凳
发表于 2015-2-4 15:59:09 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
小妖女 该用户已被删除
地板
发表于 2015-2-10 03:46:07 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
山那边是海 该用户已被删除
5#
发表于 2015-2-28 18:49:28 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
变相怪杰 该用户已被删除
6#
发表于 2015-3-1 20:03:23 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
再见西城 该用户已被删除
7#
发表于 2015-3-3 03:09:13 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
简单生活 该用户已被删除
8#
发表于 2015-3-11 09:01:22 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
莫相离 该用户已被删除
9#
发表于 2015-3-13 07:37:47 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
精灵巫婆 该用户已被删除
10#
发表于 2015-3-15 05:02:53 | 只看该作者
当然这种网站的会员费就几十块钱。
柔情似水 该用户已被删除
11#
发表于 2015-3-17 04:10:04 | 只看该作者
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
飘飘悠悠 该用户已被删除
12#
发表于 2015-3-23 18:21:33 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
若天明 该用户已被删除
13#
发表于 2015-3-26 13:37:02 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
活着的死人 该用户已被删除
14#
发表于 2015-4-11 15:10:27 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
若相依 该用户已被删除
15#
发表于 2015-4-13 22:02:48 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
冷月葬花魂 该用户已被删除
16#
发表于 2015-4-16 17:40:24 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
再现理想 该用户已被删除
17#
发表于 2015-4-23 11:06:44 | 只看该作者
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
老尸 该用户已被删除
18#
 楼主| 发表于 2015-5-1 05:10:24 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
海妖 该用户已被删除
19#
发表于 2015-5-6 18:41:05 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
20#
发表于 2015-6-5 19:10:25 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-21 00:47

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表