首 页 教育新闻课件中心论文中心教学教案试题中心语文专题综合下载技术教程公务员  
设为首页
加入收藏
联系我们
您当前的位置:中国教育资源网 -> 技术教程 -> 网站建设 -> 源码精华 -> 技术内容 退出登录 用户管理

用PHP计算身份证校验码源码精华教程

论文作者:佚名  论文来源:不详  论文发布时间:2006-6-20 2:39:13  论文发布人:chjchjchj

减小字体 增大字体

中国(大陆)公民身份证号码每一位所代表的意义,网上很多文章都有介绍,在此就不多说。其中身份证号码的最后一位是校验码,跟据前17位计算得到。算法大概是这样:把前17位的每一个数字和一串加权因子相乘,再计算这些乘积的和;把这些乘积的和模11得到的数字作为序号,最后在一个校验码串中提取出与序号相对应的字符。当然,网上也有不少的文章教大家计算这个校验码,下面我们将尝试用PHP语言来完成这一工作,也许可以用于PHP开发中,如校验用户的身份证号码是否正确。

  假设某中国(大陆)公民的身份证号码前17位是这个:44010221990101001(注:此人出生于2199年),那么我们跟据上面的算法尝试写几行PHP代码来完成校验码的计算。为了能让大家更容易理解,我使用了较简单的语句,请看代码:

<?php
//身份证号码前17位,可以从各种数据源中获得(如数据库、用户提交的表单等)
$body = '44010221990101001';

//加权因子
$wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);

//校验码串
$ai = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');

//按顺序循环处理前17位
for ($i = 0;$i < 17;$i++) {
//提取前17位的其中一位,并将变量类型转为实数
$b = (int) $body{$i};

//提取相应的加权因子
$w = $wi[$i];

//把从身份证号码中提取的一位数字和加权因子相乘,并累加
$sigma += $b * $w;
}

//计算序号
$number = $sigma % 11;

//按照序号从校验码串中提取相应的字符。
$check_number = $ai[$number];

//输出
echo $body.$check_number;
?>

  运行以上代码之后,可以算出该身份证的校验码为9。大家可以用自己身份证的前17位试试。

  如果你明白上面的例子的话,就可以把这段代码的一些语句合并,去除没必要的变量,优化得到如下代码:

<?php
$body = '44010221990101001';
$wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
$ai = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
for ($i = 0;$i < 17;$i++) {
$sigma += ((int) $body{$i}) * $wi[$i];
}
echo $body.$ai[($sigma % 11)];
?>

(出处:

[] [返回上一页] [打 印] [收 藏]  
 ∷相关技术评论  (评论内容只代表网友观点,与本站立场无关!) [查看发表评论...]
 
 中国教育资源网免费技术教程下载中心-站内广告 站内广告 中国教育资源网免费技术教程下载中心-站内广告 
 中国教育资源网站内搜索 站内搜索 中国教育资源网站内搜索 
 

   
 中国教育资源网免费技术教程下载中心-栏目导航 栏目导航 中国教育资源网免费技术教程下载中心-栏目导航 
· Dreamweaver · FrontPage
· CSSHTML · DOMJS
· Google排名 · 搜索研究
· 网络赚钱 · Alexa相关
· 建站交流 · 源码精华
· 经验技巧
 
中国教育资源网免费技术教程下载中心-相关教程  相关技术 中国教育资源网免费技术教程下载中心-相关教程
· 用php写的serv-u的w
· 用PHP实现完美的关键
· 用PHP实现自己的
· [图文] apache 限制某些目录
· 使用PHPDOM-XML创建
· 用PHP实现XML备份My
 中国教育资源网免费技术教程下载中心-本月热门教程 本月热门 中国教育资源网免费技术教程下载中心-本月热门教程 
 
 中国教育资源网免费技术教程下载中心-本日热门论文 本日热门 中国教育资源网免费技术教程下载中心-本日热门论文 
 
关于本站 - 网站帮助 - 免费课件 - 美容 - 绿色软件 - 软件下载 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 网站留言
浙ICP备06010405号 Email:cnkjz@163.com 技术支持:名流设计
版权所有 Copyright© 2002-2004 名流