仓酷云

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

[学习教程] PHP教程之php生成SessionID和图片校验码的思绪和...

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

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

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

x
完成一个功能齐全的动态站点session   做一个后台上岸需求用到校验码,前台的用户跟踪需求用到SessionID,固然,默许的PHP开启了Session今后就有了一个SessionID,然而我需求本人的,而且可以存储进数据库,那末我就测验考试了一下,机关了以下的函数。

/****** 发生Session ID ******/
根基的思绪:  是把以后微秒的工夫获得, 然后发生以个随机数字, 把随机数字和以后工夫相加后加密一下, 最初再截取需求的长度
/*
函数称号:create_sess_id()
函数感化:发生以个随机的会话ID
参    数:$len: 需求会话字符串的长度,默许为32位,不要低于16位
返 回 值:前往会话ID
函数作者:heiyeluren
*/
function create_sess_id($len=32)
{
// 校验提交的长度是不是正当
if( !is_numeric($len) || ($len>32) || ($len<16)) { return; }
// 获得以后工夫的微秒
list($u, $s) = explode(' ', microtime());
$time = (float)$u + (float)$s;
// 发生一个随机数
$rand_num = rand(100000, 999999);
$rand_num = rand($rand_num, $time);
mt_srand($rand_num);
$rand_num = mt_rand();
// 发生SessionID
$sess_id = md5( md5($time). md5($rand_num) );
// 截取指定需求长度的SessionID
$sess_id = substr($sess_id, 0, $len);
return $sess_id;
}


/****** 发生校验码 ******/
思绪: 这个思绪对照复杂,由于思索举世无双和随机性,咱们的校验码就Session ID外面截取一段字符串就能够了,由于咱们的SessionID是充实思索了举世无双的。

/*
函数称号:create_check_code()
函数感化:发生以个随机的校验码
参    数:$len: 需求校验码的长度, 请不要善于16位,缺省为4位
返 回 值:前往指定长度的校验码
函数作者:heiyeluren
*/
function create_check_code($len=4)
{
if ( !is_numeric($len) || ($len>6) || ($len<1)) { return; }
  
$check_code = substr(create_sess_id(), 16, $len );
return strtoupper($check_code);
}


/******  生成校验码的图片 ******/

这个就是一些对照复杂的PHP图象编程的器材了,我作的图片和复杂。

/*
函数称号:create_check_image()
函数感化:发生一个校验码的图片
参    数:$check_code: 校验码字符串,普通由create_check_code()函数来取得
返 回 值:前往该图片
函数作者:heiyeluren
*/
function create_check_image( $check_code )
{
// 发生一个图片
$im = imagecreate(65,22);
$black = ImageColorAllocate($im, 0,0,0);  // 后台色彩
$white = ImageColorAllocate($im, 255,255,255);  // 远景色彩
$gray = ImageColorAllocate($im, 200,200,200);
imagefill($im,68,30,$gray);

// 将四位整数验证码绘入图片
imagestring($im, 5, 8, 3, $check_code, $white);
// 到场搅扰象素
for($i=0;$i<200;$i++)
{
     $randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
     imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);
}
// 输入图象
Header("Content-type: image/PNG");  
ImagePNG($im);
ImageDestroy($im);  
}

这里咱们要注重,援用create_check_image()函数的时分,必需在一个独自的文件里,由于输入文件头的时分输入的格局是图象格局,同化其他内容,会招致图片没法显示。别的,图片成生函数,你是可以更改的,好比你想改色彩,那末你就把远景色和后台色的生成地位换一下,那末色彩就纷歧样了,同时也要把校验码的色彩换了,否则后台和校验码都是黑色就显示不出来了。PHP的理解是新手最难迈过的一道门槛,不过你应该感到幸运的是PHP已经最大极限的为了新手而努力了,如果你学过其他的语言,也许会觉得PHP的确相当的简单,但是如果你之前什么都没学过,那么阿弥陀佛,硬着头皮琢磨吧。
分手快乐 该用户已被删除
沙发
发表于 2015-2-4 07:10:32 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
若相依 该用户已被删除
板凳
发表于 2015-2-6 13:07:30 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
海妖 该用户已被删除
地板
发表于 2015-2-16 05:25:38 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
再现理想 该用户已被删除
5#
发表于 2015-3-5 00:07:20 | 只看该作者
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
小魔女 该用户已被删除
6#
发表于 2015-3-5 06:07:34 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
第二个灵魂 该用户已被删除
7#
发表于 2015-3-11 23:38:08 | 只看该作者
做为1门年轻的语言,php一直很努力。
爱飞 该用户已被删除
8#
发表于 2015-3-19 16:11:15 | 只看该作者
实践是检验自己会不会的真理。
莫相离 该用户已被删除
9#
发表于 2015-3-28 19:24:09 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
admin 该用户已被删除
10#
发表于 2015-4-16 15:10:45 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
不帅 该用户已被删除
11#
发表于 2015-4-26 05:11:56 | 只看该作者
兴趣是最好的老师,百度是最好的词典。
飘飘悠悠 该用户已被删除
12#
发表于 2015-5-9 17:45:20 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
透明 该用户已被删除
13#
发表于 2015-6-21 20:31:41 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
兰色精灵 该用户已被删除
14#
发表于 2015-6-23 02:24:04 | 只看该作者
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
愤怒的大鸟 该用户已被删除
15#
发表于 2015-6-30 21:08:08 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
16#
发表于 2015-7-1 08:13:55 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
再见西城 该用户已被删除
17#
发表于 2015-7-2 11:15:01 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
简单生活 该用户已被删除
18#
发表于 2015-7-13 06:00:37 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
飘灵儿 该用户已被删除
19#
发表于 2015-7-16 23:19:02 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
只想知道 该用户已被删除
20#
发表于 2015-9-22 18:33:01 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 21:19

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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