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

做一个后台登陆需要用到校验码,前台的用户跟踪需要用到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()函数来获得

时间: 2024-11-03 22:07:54

php生成SessionID和图片校验码的思路和实现的相关文章

php生成SessionID和图片校验码的思路和实现代码_php技巧

/****** 产生Session ID ******/ 基本的思路: 是把当前微秒的时间获取, 然后产生以个随机数字, 把随机数字和当前时间相加后加密一下, 最后再截取需要的长度 /* 函数名称:create_sess_id() 函数作用:产生以个随机的会话ID 参 数:$len: 需要会话字符串的长度,默认为32位,不要低于16位 返 回 值:返回会话ID 函数作者:heiyeluren */ function create_sess_id($len=32) { // 校验提交的长度是否合法

列表-如何生成唯一校验码问题

问题描述 如何生成唯一校验码问题 我有一个列表,里面有n个不同的值,如何用这n个不同的值生成一个唯一的校验码 解决方案 把这n个数放到一个数组里,然后用随机数随机下标后取出该下标代表的值,组成一个校验码就可以了,最好随机两边,这样得到两个同样的校验码的概率几乎就为零了,但不保证就不出现两个一样的 解决方案二: 香农指出,你的编码元字符个数的乘积决定了你能用这种编码组合的最大数量.没有真正意义上的唯一,除非你的编码长度无限长.

模拟登录 网页-如何模拟登录网页,图片校验

问题描述 如何模拟登录网页,图片校验 现有1000个账号密码,想测试哪些密码仍然使用了初始密码,但由于本人无法直接看到后台数据库,所以想借助工具来快速知道结果.如果一个个人工试的话,花费的时间太多了. 说明:这个网页有个图片校验码. 希望:简单介绍下如何使用该工具. 解决方案 验证码简单的话,可以借助OCR识别,复杂的话,可以通过人工识别(有专门做这个业务的网站,并且提供调用接口).但是请注意,如果你不经过网站同意擅自以非法目的这么做,是要承担法律责任的.服务器对你来说是一个黑盒,在你操作它的时

mac java-java 生成MAC校验码问题

问题描述 java 生成MAC校验码问题 需求描述: 将16字节的摘要数据前8个字节后8个字节进行异或,接着再用工作密钥(MAC密钥)用des算法加密异或后的8个字节,最后生成MAC示例:1 请求报文的报文体串:200001|compcode|20120521125152|1205250957011|spot_code|abc123|01|1401978481|201205|20120512|2 对报文体串进行MAC字符选择处理构成MAB串.200001COMPCODE2012052112515

ASP.NET程序中实现校验码图像生成

asp.net|程序 在Web系统中很多时候需要用到校验码,例如我们经常遇到不少电子邮件.论坛的注册过程需要我们输入校验码,这是为了提高安全性.今天我们就来讲讲如何生成校验码. 使用ASP.NET来生成校验码图像很方便,网上也有不少教程与文章有介绍,但是都讲的太简单了,不够实用.我来介绍一点自己的思路,算是抛砖引玉吧. 首先我们来看看,生成校验码的一种常见方式: 1. 生成校验码的字符串 2. 将该字符串输出为图像 具体步骤 下面我们就开始简单的例子来介绍这个过程,首先打开VS.NET,新建一个

使用poi和jfreechart生成excel图表图片

最近项目在频繁的操作excel,里边涉及到很多和图表有关的东西.有时候需要使用java操作excel自带的图标,比较复杂的我们都是使用excel模板的形式实现. 除此之外,也有一些功能只需要生成对应的图标样式的图片就好,我们实现的时候主要用了两种方式,一种就是由前台生成图片base64码,然后后台解码生成图片插入到excel,但是这种方式有 一定的局限性,也就是当某些功能需要后台定时生成excel的时候,就无法获取这个图片. 于是我们采用了另一种方法,也就是是用jfreechart生成对应的图片

彩色校验码的制作方法

要读懂这些代码主要是要了解ASP中操作二进制数据的对象ADODB.Stream!本程序主要用的就是Adodb.Stream,如果你有这个基础,就可以进一步添加更多的功能如加入杂点,渐变底色,数字行列错位,笔画短点,提高被ocr识别的不可能.目前还没有好的识别引擎,昨天下载了个号称能识别图像验证码90%的,把4321识别成 89910,所以图像码还是比较安全的. 在网上看到有暴力破解的方法,如果我用图像附加码+禁止外部提交+10次密码错误封帐号 +50次密码错误琐死IP+10秒的防刷新间隔注册页,

使用ASP生成图片彩色校验码

使用ASP生成图片彩色校验码 49行代码,三个文件 Asp文件:Code.Asp 数据文件:body.Fix , Head.Fix 下载:下载打包文件 用法:<img src="code.asp"> <%Option ExplicitResponse.buffer=trueNumCodeFunction NumCode()    Response.Expires = -1    Response.AddHeader "Pragma","n

ASP彩色校验码的制作方法

要读懂这些代码主要是要了解ASP中操作二进制数据的对象ADODB.Stream!本程序主要用的就是Adodb.Stream,如果你有这个基础,就可以进一步添加更多的功能如加入杂点,渐变底色,数字行列错位,笔画短点,提高被ocr识别的不可能.目前还没有好的识别引擎,昨天下载了个号称能识别图像验证码90%的,把4321识别成 89910,所以图像码还是比较安全的. 在网上看到有暴力破解的方法,如果我用图像附加码+禁止外部提交+10次密码错误封帐号 +50次密码错误琐死IP+10秒的防刷新间隔注册页,