≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > PHP笔记

《php 5 in practice中文版》里提供的信用卡验证示例

人气:428 时间:2018-09-22

这篇文章主要为大家详细介绍了《php 5 in practice中文版》里提供的信用卡验证示例,具有一定的参考价值,可以用来参考一下。

对《php 5 in practice中文版》里提供的信用卡验证php代码感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!
商业站点需要处理信用卡号码。信用卡公司已经在卡号里建立了校验体系。在把信用卡号码标准化为不包含空格的数字字符串之后,可以进行两方面的检验。

首先,不同信用卡公司遵循特定的编号规则。
n visa:以4开头,共有13位或16位数字。
n mastercard:以51~56开头,共有16位数字。
n american express:以34或37开头,共有15位数字。
n discover:以6011开头,共有16位数字。

另外,所有卡号还要遵循称为“mod10”的算法,它可以用来判断某个号码是否属于有效的信用卡号码。它的工作方式是这样的:首先颠倒数字的次序,接着每隔一个数字把数字乘以2,然后把所有的数字加起来;但如果相乘结果大于等于10,就要把这个结果的个位和十位的数字加起来。例如数字7,乘以2以后是14,所以它对应的数字应该是1+4=5。在所有数字相加之后,其结果应该能够被10整除。上述这些规则都写入了程序清单11.5.1包含的函数里。

程序清单11.5.1信用卡号码函数库

/**
 * 《php 5 in practice中文版》里提供的信用卡验证php代码
 *
 * @param 
 * @arrange 512-笔记网: q1010.com
 **/
<?php
//afunctionthatwillacceptandcleanupccnumbers
functionstandardize_credit($num){
//removeallnon-digitsfromthestring
returnpreg_replace('/[^0-9]/','',$num);
}
//afunctiontocheckthevalidityofaccnumber
//itmustbeprovidedwiththenumberitself,aswellas
//acharacterspecifyingthetypeofcc:
//m=mastercard,v=visa,d=discover,a=americanexpress
functionvalidate_credit($num,$type){
//firstperformtheccspecifictests:
//storeafewevaluationswewillneedoften:
$len=strlen($num);
$d2=substr($num,0,2);
//ifvisamuststartwitha4,andbe13or16digitslong:
if((($type=='v')&&(($num{0}!=4)||
!(($len==13)||($len==16))))||
//ifmastercard,startwith51-56,andbe16digitslong:
(($type=='m')&&(($d2<51)||
($d2>56)||($len!=16)))||
//ifamericanexpress,startwith34or37,15digitslong:
(($type=='a')&&(!(($d2==34)||
($d2==37))||($len!=15)))||
//ifdiscover:startwith6011and16digitslong
(($type=='d')&&((substr($num,0,4)!=6011)||
($len!=16)))){
//invalidcard:
returnfalse;
}
//ifwearestillhere,thentimetomanipulateanddothemod10
//algorithm.firstbreakthenumberintoanarrayofcharacters:
$digits=str_split($num);
//nowreverseit:
$digits=array_reverse($digits);
//doubleeveryotherdigit:
foreach(range(1,count($digits)-1,2)as$x){
//doubleit
$digits[$x]*=2;
//ifthisisnowover10,goaheadandadditsdigits,easiersince
//thefirstdigitwillalwaysbe1
if($digits[$x]>9){
$digits[$x]=($digits[$x]-10)+1;
}
}
//now,addallthisvaluestogethertogetthechecksum
$checksum=array_sum($digits);
//ifthiswasdivisibleby10,thentrue,elseit'sinvalid
return(($checksum%10)==0)?true:false;
}
//checkvariouscreditcardnumbers:
$nums=array(
'344234534664577'=>'a','3794234534664577'=>'a',
'4938748398324'=>'v','4123-1234-5342'=>'v',
'5184729384567434'=>'m','5723x2345x2345x6161'=>'m',
'6011601160116011'=>'d','6012392563242423'=>'d',
);
foreach($numsas$num=>$type){
$st=standardize_credit($num);
$valid=validate_credit($st,$type);
$output=$valid?'valid':'invalid';
echo"<p>{$st}-{$type}={$output}</p>\n";
}
/***   来自四海网(www.q1010.com)   ***/

 

本文来自:http://www.q1010.com/173/847-0.html

注:关于《php 5 in practice中文版》里提供的信用卡验证示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:信用卡

您可能感兴趣的文章

  • php 信用卡识别和验证类用法示例
上一篇:PHP 动态解决0-1背包问题
下一篇:PHP 连接mongodb的简单范例
热门文章
  • PHP 写入WRITE编码为UTF8的文件示例
  • PHP 中文字符串截取函数示例:支持gb2312,gbk,big
  • PHP 简单留言板的制作示例
  • 解决Fatal error: Call to undefined function mb_convert_encoding() in错误问题
  • PHP语言基础(标记、注释、变量、数组、常量、函数)示例
  • php 生成迅雷链接的简单示例
  • php 获取短网址的实现方法
  • PHP 通用分页类的简单示例
  • PHP 使用文件方式导入导出整个MYSQL数据库的实现方法
  • php 获取MYSQL错误的简单示例
  • 最新文章
    • 解决PHP使用redis实现统计缓存MySQL压力的问题
    • php 简单的上传进度条的简单示例
    • php 给html中引用的js和css路径打上版本号的实现方法
    • php 实现计算年龄精准到年月日的实例
    • php+ajax无刷新分页的简单示例
    • 解决php+ajax无刷新上传图片的问题
    • 解决PHP生成HTML静态页面的问题
    • 解决PHP使用uniqid函数生成唯一ID的问题
    • 解决PHP防刷票的一些问题
    • 微信access_token的获取开发的实现方法

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。