|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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的确相当的简单,但是如果你之前什么都没学过,那么阿弥陀佛,硬着头皮琢磨吧。 |
|