老尸 发表于 2015-2-3 23:38:33

PHP网页设计PHP开辟使用法式:生成随机字符串的办法...

熟悉了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个空格是很有必要的

山那边是海 发表于 2015-2-28 18:49:28

说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。

变相怪杰 发表于 2015-3-1 20:03:23

写的比较杂,因为我也是个新手,不当至于大家多多指正。

再见西城 发表于 2015-3-3 03:09:13

其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。

简单生活 发表于 2015-3-11 09:01:22

个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。

莫相离 发表于 2015-3-13 07:37:47

刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。

精灵巫婆 发表于 2015-3-15 05:02:53

当然这种网站的会员费就几十块钱。

柔情似水 发表于 2015-3-17 04:10:04

如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,

飘飘悠悠 发表于 2015-3-23 18:21:33

再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。

若天明 发表于 2015-3-26 13:37:02

小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。

活着的死人 发表于 2015-4-11 15:10:27

本文当是我的笔记啦,遇到的问题随时填充

若相依 发表于 2015-4-13 22:02:48

开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。

冷月葬花魂 发表于 2015-4-16 17:40:24

有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。

再现理想 发表于 2015-4-23 11:06:44

Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81

老尸 发表于 2015-5-1 05:10:24

有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。

海妖 发表于 2015-5-6 18:41:05

先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。

仓酷云 发表于 2015-6-5 19:10:25

至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
页: [1]
查看完整版本: PHP网页设计PHP开辟使用法式:生成随机字符串的办法...