分享
 
 
 

php生成SessionID和图片校验码的思路和实现

王朝php·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

做一个后台登陆需要用到校验码,前台的用户跟踪需要用到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()函数的时候,必须在一个单独的文件里,因为输出文件头的时候输出的格式是图像格式,夹杂其他内容,会导致图片无法显示。另外,图片成生函数,你是可以更改的,比如你想改颜色,那么你就把前景色和背景色的生成位置换一下,那么颜色就不一样了,同时也要把校验码的颜色换了,不然背景和校验码都是黑色就显示不出来了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有