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

高洛峰
发布: 2016-12-02 10:22:11
原创
2023人浏览过
改图鸭AI图片生成
改图鸭AI图片生成

改图鸭AI图片生成

改图鸭AI图片生成30
查看详情 改图鸭AI图片生成

做一个后台登陆需要用到校验码,前台的用户跟踪需要用到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()p , rand()0 , $randcolor); 
}
// 输出图像
header("content-type: image/png"); 
imagepng($im); 
imagedestroy($im); 
}

这里我们要注意,引用create_check_image()函数的时候,必须在一个单独的文件里,因为输出文件头的时候输出的格式是图像格式,夹杂其他内容,会导致图片无法显示。另外,图片成生函数,你是可以更改的,比如你想改颜色,那么你就把前景色和背景色的生成位置换一下,那么颜色就不一样了,同时也要把校验码的颜色换了,不然背景和校验码都是黑色就显示不出来了。 转载请注明来源:php生成sessionid和图片校验码的思路和实现

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号