阿里云视频缩略图 倾斜 90度 解决方案

  产品:阿里云oss,阿里云视频缩略图   场景:   使用阿里云oss Android sdk 将录制的视频上传至oss,再生成缩略图,发现生成后的缩略图和原视频相比较倾斜90度。   原因:   通过 mediainfo 工具查看视频信息,发现视频信息中包含 "Rotation": "90.000" 参数,导致使用 阿里云视频缩略图功能 时会 截取旋转之后的缩略图。   解决办法:录制时或者上传时,不要指定 Rotation 参数,或者将 Rotation 参数值设置成:0.000   mediainfo 下载链接:https://mediaarea.net/en/MediaInfo/Download/Windows
继续阅读 »
  产品:阿里云oss,阿里云视频缩略图   场景:   使用阿里云oss Android sdk 将录制的视频上传至oss,再生成缩略图,发现生成后的缩略图和原视频相比较倾斜90度。   原因:   通过 mediainfo 工具查看视频信息,发现视频信息中包含 "Rotation": "90.000" 参数,导致使用 阿里云视频缩略图功能 时会 截取旋转之后的缩略图。   解决办法:录制时或者上传时,不要指定 Rotation 参数,或者将 Rotation 参数值设置成:0.000   mediainfo 下载链接:https://mediaarea.net/en/MediaInfo/Download/Windows 收起阅读 »

git 修改远程仓库地址 remote origin

Git
    方法一:   git remote set-url origin git@XXX 方法二:   git remote rm origin git remote add origin git@XXX
继续阅读 »
    方法一:   git remote set-url origin git@XXX 方法二:   git remote rm origin git remote add origin git@XXX 收起阅读 »

git 放弃本地修改 强制更新 命令

Git
  git fetch --all git reset --hard origin/master git fetch 只是下载远程的库的内容,不做任何的合并 git reset 把HEAD指向刚刚下载的最新的版本  
  git fetch --all git reset --hard origin/master git fetch 只是下载远程的库的内容,不做任何的合并 git reset 把HEAD指向刚刚下载的最新的版本  

php 通过 curl 下载网络图片到本地

  代码如下:   function save_img($url, $saveName, $path) { // 设置运行时间为无限制 set_time_limit ( 0 ); $url = trim ( $url ); $curl = curl_init (); // 设置你需要抓取的URL curl_setopt ( $curl, CURLOPT_URL, $url ); // 设置https if (stripos ( $url, "https://" ) !== FALSE) { curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, FALSE ); curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, false ); } // 设置header curl_setopt ( $curl, CURLOPT_HEADER, 0 ); // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。 curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 ); // 运行cURL,请求网页 $file = curl_exec ( $curl ); // 关闭URL请求 curl_close ( $curl ); // 将文件写入获得的数据 $filename = $path . $saveName; $write = @fopen ( $filename, "w" ); if ($write == false) { return false; } if (fwrite ( $write, $file ) == false) { return false; } if (fclose ( $write ) == false) { return false; } return $filename; }
继续阅读 »
  代码如下:   function save_img($url, $saveName, $path) { // 设置运行时间为无限制 set_time_limit ( 0 ); $url = trim ( $url ); $curl = curl_init (); // 设置你需要抓取的URL curl_setopt ( $curl, CURLOPT_URL, $url ); // 设置https if (stripos ( $url, "https://" ) !== FALSE) { curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, FALSE ); curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, false ); } // 设置header curl_setopt ( $curl, CURLOPT_HEADER, 0 ); // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。 curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 ); // 运行cURL,请求网页 $file = curl_exec ( $curl ); // 关闭URL请求 curl_close ( $curl ); // 将文件写入获得的数据 $filename = $path . $saveName; $write = @fopen ( $filename, "w" ); if ($write == false) { return false; } if (fwrite ( $write, $file ) == false) { return false; } if (fclose ( $write ) == false) { return false; } return $filename; } 收起阅读 »

单目运算符、双目运算符、三目运算符 区别

  1、单目运算符: 只对一个变量进行操作。  a++; 2、双目运算符: 对两个变量进行操作;  a=1; b=3; c=a+b;就是双目运算符; 3、三目运算符: 对三个变量进行操作;  int a = boolean ? b : c;
继续阅读 »
  1、单目运算符: 只对一个变量进行操作。  a++; 2、双目运算符: 对两个变量进行操作;  a=1; b=3; c=a+b;就是双目运算符; 3、三目运算符: 对三个变量进行操作;  int a = boolean ? b : c; 收起阅读 »

linux crontab 实现每秒执行

  linux crontab 命令,最小的执行时间是一分钟。如需要在小于一分钟内重复执行,下面使用原生 crontab 实现每10秒执行php脚本一次:   * * * * * sleep 10; php /data/webdata/cli/index.php cli log run * * * * * sleep 20; php /data/webdata/cli/index.php cli log run * * * * * sleep 30; php /data/webdata/cli/index.php cli log run * * * * * sleep 40; php /data/webdata/cli/index.php cli log run * * * * * sleep 50; php /data/webdata/cli/index.php cli log run 如果需要每秒执行,则多添加几条命令即可(sleep 1).
继续阅读 »
  linux crontab 命令,最小的执行时间是一分钟。如需要在小于一分钟内重复执行,下面使用原生 crontab 实现每10秒执行php脚本一次:   * * * * * sleep 10; php /data/webdata/cli/index.php cli log run * * * * * sleep 20; php /data/webdata/cli/index.php cli log run * * * * * sleep 30; php /data/webdata/cli/index.php cli log run * * * * * sleep 40; php /data/webdata/cli/index.php cli log run * * * * * sleep 50; php /data/webdata/cli/index.php cli log run 如果需要每秒执行,则多添加几条命令即可(sleep 1). 收起阅读 »

php 实现批量查询url百度是否收录

  功能:   从指定文件(sitemap.txt)中,提取url,查询百度是否收录,实时输出到界面上。   sitemap.txt 格式如下(一个url占一行):     执行结果:     代码:      
继续阅读 »
  功能:   从指定文件(sitemap.txt)中,提取url,查询百度是否收录,实时输出到界面上。   sitemap.txt 格式如下(一个url占一行):     执行结果:     代码:       收起阅读 »

php 实现 for循环 实时输出显示

    代码如下:  <?php ob_start(); //打开输出缓冲区 ob_end_flush(); ob_implicit_flush(1); //立即输出 for($i=0;$i<10;$i++){ echo str_repeat(" ",4096); //确保足够的字符,立即输出,Linux服务器中不需要这句 echo $i."<br/>"; sleep(1); }
继续阅读 »
    代码如下:  <?php ob_start(); //打开输出缓冲区 ob_end_flush(); ob_implicit_flush(1); //立即输出 for($i=0;$i<10;$i++){ echo str_repeat(" ",4096); //确保足够的字符,立即输出,Linux服务器中不需要这句 echo $i."<br/>"; sleep(1); } 收起阅读 »

js 调起APP(安卓和IOS)

  分享一段 js 调起APP(android和IOS)的代码:   <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JS调起APP</title> <meta name='apple-itunes-app' content='app-id=1309411684'><!--作用:苹果safari头部,如果已安装显示打开,没安装显示去下载--> </head> <body> <a href="javascript:;" id="openApp">调起APP</a> </body> </html> <script type="text/javascript"> document.getElementById('openApp').onclick = function(e){ if(navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) { window.location.href = "cnchat://";//ios app协议(ios开发人员提供) window.setTimeout(function() { window.location.href = "https://itunes.apple.com/cn/app/%E5%90%B9%E7%89%9B-%E6%A3%8B%E7%89%8C%E4%BA%A4%E5%8F%8B%E8%81%8A%E5%A4%A9%E5%B9%B3%E5%8F%B0/id1309411684?mt=8"; //app store 下载地址 }, 2000) } if(navigator.userAgent.match(/android/i)) { window.location.href = "cn://brotheraides";//android app协议(android开发人员提供) window.setTimeout(function() { window.location.href = "http://www.treeic.com/clients/chuiniu-29-1.3.3-20180124.apk";//android app下载地址 }, 2000) } }; </script>
继续阅读 »
  分享一段 js 调起APP(android和IOS)的代码:   <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JS调起APP</title> <meta name='apple-itunes-app' content='app-id=1309411684'><!--作用:苹果safari头部,如果已安装显示打开,没安装显示去下载--> </head> <body> <a href="javascript:;" id="openApp">调起APP</a> </body> </html> <script type="text/javascript"> document.getElementById('openApp').onclick = function(e){ if(navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) { window.location.href = "cnchat://";//ios app协议(ios开发人员提供) window.setTimeout(function() { window.location.href = "https://itunes.apple.com/cn/app/%E5%90%B9%E7%89%9B-%E6%A3%8B%E7%89%8C%E4%BA%A4%E5%8F%8B%E8%81%8A%E5%A4%A9%E5%B9%B3%E5%8F%B0/id1309411684?mt=8"; //app store 下载地址 }, 2000) } if(navigator.userAgent.match(/android/i)) { window.location.href = "cn://brotheraides";//android app协议(android开发人员提供) window.setTimeout(function() { window.location.href = "http://www.treeic.com/clients/chuiniu-29-1.3.3-20180124.apk";//android app下载地址 }, 2000) } }; </script> 收起阅读 »

Python 3.6 安装 bs4 模块

Python 3.6 安装 bs4 模块时报错:   pip install bs4 Collecting bs4 Could not fetch URL https://pypi.python.org/simple/bs4/: There was a problem confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777) - skipping Could not find a version that satisfies the requirement bs4 (from versions: ) No matching distribution found for bs4 解决办法:   pip --trusted-host pypi.python.org install bs4
继续阅读 »
Python 3.6 安装 bs4 模块时报错:   pip install bs4 Collecting bs4 Could not fetch URL https://pypi.python.org/simple/bs4/: There was a problem confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777) - skipping Could not find a version that satisfies the requirement bs4 (from versions: ) No matching distribution found for bs4 解决办法:   pip --trusted-host pypi.python.org install bs4 收起阅读 »

TypeError: unhashable type: 'dict'

  代码:   param = {{"redpacket_id":'1'}} 结果:   TypeError: unhashable type: ‘dict’ python不支持dict的key为list或dict类型,因为list和dict类型是unhashable(不可哈希)的。  
继续阅读 »
  代码:   param = {{"redpacket_id":'1'}} 结果:   TypeError: unhashable type: ‘dict’ python不支持dict的key为list或dict类型,因为list和dict类型是unhashable(不可哈希)的。   收起阅读 »

微信 禁止分享朋友圈

  微信禁用右上角的分享按钮,WeixinJSBridge API以及隐藏分享的子按钮等菜单项: <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <script> wx.config({ appId: '{$appid}', //微信公众号id timestamp: '{$timestamp}', nonceStr: '{$nonceStr}', signature: '{$signature}', //debug: true, jsApiList: [ 'onMenuShareTimeline', 'onMenuShareAppMessage', 'hideMenuItems', ] }); wx.ready(function () { shareWeixin(); }); function shareWeixin(){ wx.hideMenuItems({ menuList: ["menuItem:share:timeline", "menuItem:copyUrl", "menuItem:share:appMessage", "menuItem:share:qq", "menuItem:share:weiboApp", "menuItem:favorite", "menuItem:share:facebook", "menuItem:share:QZone", "menuItem:editTag", "menuItem:delete", "menuItem:copyUrl", "menuItem:originPage", "menuItem:readMode", "menuItem:openWithQQBrowser", "menuItem:openWithSafari", "menuItem:share:email", "menuItem:share:brand"] // 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮 }); } </script>
继续阅读 »
  微信禁用右上角的分享按钮,WeixinJSBridge API以及隐藏分享的子按钮等菜单项: <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <script> wx.config({ appId: '{$appid}', //微信公众号id timestamp: '{$timestamp}', nonceStr: '{$nonceStr}', signature: '{$signature}', //debug: true, jsApiList: [ 'onMenuShareTimeline', 'onMenuShareAppMessage', 'hideMenuItems', ] }); wx.ready(function () { shareWeixin(); }); function shareWeixin(){ wx.hideMenuItems({ menuList: ["menuItem:share:timeline", "menuItem:copyUrl", "menuItem:share:appMessage", "menuItem:share:qq", "menuItem:share:weiboApp", "menuItem:favorite", "menuItem:share:facebook", "menuItem:share:QZone", "menuItem:editTag", "menuItem:delete", "menuItem:copyUrl", "menuItem:originPage", "menuItem:readMode", "menuItem:openWithQQBrowser", "menuItem:openWithSafari", "menuItem:share:email", "menuItem:share:brand"] // 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮 }); } </script> 收起阅读 »

<img> 标签 图片加载失败时候处理方案

 应用场景:   在开发中,经常遇到一种情况,数据库不存在图片地址,或者存在图片地址,但图片已经被删除,这个时候会出现加载失败情况。提供以下解决方案。   解决方案:  在 img 标签 加上onerror="onerror=null;src='test.jpg'" ,即当图片加载失败时会自动加载test.jpg ,例如 <img src="abc.jpg" onerror="onerror=null;src='test.jpg'" />
继续阅读 »
 应用场景:   在开发中,经常遇到一种情况,数据库不存在图片地址,或者存在图片地址,但图片已经被删除,这个时候会出现加载失败情况。提供以下解决方案。   解决方案:  在 img 标签 加上onerror="onerror=null;src='test.jpg'" ,即当图片加载失败时会自动加载test.jpg ,例如 <img src="abc.jpg" onerror="onerror=null;src='test.jpg'" /> 收起阅读 »

php 生成仿微信群组9空格头像

  最近项目是做一款 IM产品,群组头像需要是和微信群组头像一样(用前9个人合成群组头像),服务端使用php,下面附上解决方案:   效果图:     源代码:
继续阅读 »
  最近项目是做一款 IM产品,群组头像需要是和微信群组头像一样(用前9个人合成群组头像),服务端使用php,下面附上解决方案:   效果图:     源代码: 收起阅读 »

Office 不能编辑:提示由于所选内容已被锁定 您无法进行此更改

  Office 突然不能编辑:提示由于所选内容已被锁定 您无法进行此更改。   原因:Office 未激活或者已过试用期   下面提供 office2016的激活办法,是十分简单:   下载下面提供的软件,安装之后,重启office即可。   1、下载完成点击安装,安装完点击红色按钮:       2、点击next进行下一步安装;       3、安装完成,点击红包按钮,等待程序运行完毕即可激活office2016。   下载链接:   链接:http://pan.baidu.com/s/1mif2MDE 密码:kt95    
继续阅读 »
  Office 突然不能编辑:提示由于所选内容已被锁定 您无法进行此更改。   原因:Office 未激活或者已过试用期   下面提供 office2016的激活办法,是十分简单:   下载下面提供的软件,安装之后,重启office即可。   1、下载完成点击安装,安装完点击红色按钮:       2、点击next进行下一步安装;       3、安装完成,点击红包按钮,等待程序运行完毕即可激活office2016。   下载链接:   链接:http://pan.baidu.com/s/1mif2MDE 密码:kt95     收起阅读 »

linux删除邮件

  使用crontab跑定时作业,发现邮箱里面有很多垃圾邮件,想要全部删除可以这样做 cd /var/spool/mail echo ''>root 当然你想crontab 不发送邮件可以在cronab头部加上这一句 MAILTO=''
  使用crontab跑定时作业,发现邮箱里面有很多垃圾邮件,想要全部删除可以这样做 cd /var/spool/mail echo ''>root 当然你想crontab 不发送邮件可以在cronab头部加上这一句 MAILTO=''

cardbin 国内银行卡类型查询接口

    代码如下:   public function card_bin($card_no){ $card_list = array( 'SRCB'=>'深圳农村商业银行', 'BGB'=>'广西北部湾银行', 'SHRCB'=>'上海农村商业银行', 'BJBANK'=>'北京银行', 'WHCCB'=>'威海市商业银行', 'BOZK'=>'周口银行', 'KORLABANK'=>'库尔勒市商业银行', 'SPABANK'=>'平安银行', 'SDEB'=>'顺德农商银行', 'HURCB'=>'湖北省农村信用社', 'WRCB'=>'无锡农村商业银行', 'BOCY'=>'朝阳银行', 'CZBANK'=>'浙商银行', 'HDBANK'=>'邯郸银行', 'BOC'=>'中国银行', 'BOD'=>'东莞银行', 'CCB'=>'中国建设银行', 'ZYCBANK'=>'遵义市商业银行', 'SXCB'=>'绍兴银行', 'GZRCU'=>'贵州省农村信用社', 'ZJKCCB'=>'张家口市商业银行', 'BOJZ'=>'锦州银行', 'BOP'=>'平顶山银行', 'HKB'=>'汉口银行', 'SPDB'=>'上海浦东发展银行', 'NXRCU'=>'宁夏黄河农村商业银行', 'NYNB'=>'广东南粤银行', 'GRCB'=>'广州农商银行', 'BOSZ'=>'苏州银行', 'HZCB'=>'杭州银行', 'HSBK'=>'衡水银行', 'HBC'=>'湖北银行', 'JXBANK'=>'嘉兴银行', 'HRXJB'=>'华融湘江银行', 'BODD'=>'丹东银行', 'AYCB'=>'安阳银行', 'EGBANK'=>'恒丰银行', 'CDB'=>'国家开发银行', 'TCRCB'=>'江苏太仓农村商业银行', 'NJCB'=>'南京银行', 'ZZBANK'=>'郑州银行', 'DYCB'=>'德阳商业银行', 'YBCCB'=>'宜宾市商业银行', 'SCRCU'=>'四川省农村信用', 'KLB'=>'昆仑银行', 'LSBANK'=>'莱商银行', 'YDRCB'=>'尧都农商行', 'CCQTGB'=>'重庆三峡银行', 'FDB'=>'富滇银行', 'JSRCU'=>'江苏省农村信用联合社', 'JNBANK'=>'济宁银行', 'CMB'=>'招商银行', 'JINCHB'=>'晋城银行JCBANK', 'FXCB'=>'阜新银行', 'WHRCB'=>'武汉农村商业银行', 'HBYCBANK'=>'湖北银行宜昌分行', 'TZCB'=>'台州银行', 'TACCB'=>'泰安市商业银行', 'XCYH'=>'许昌银行', 'CEB'=>'中国光大银行', 'NXBANK'=>'宁夏银行', 'HSBANK'=>'徽商银行', 'JJBANK'=>'九江银行', 'NHQS'=>'农信银清算中心', 'MTBANK'=>'浙江民泰商业银行', 'LANGFB'=>'廊坊银行', 'ASCB'=>'鞍山银行', 'KSRB'=>'昆山农村商业银行', 'YXCCB'=>'玉溪市商业银行', 'DLB'=>'大连银行', 'DRCBCL'=>'东莞农村商业银行', 'GCB'=>'广州银行', 'NBBANK'=>'宁波银行', 'BOYK'=>'营口银行', 'SXRCCU'=>'陕西信合', 'GLBANK'=>'桂林银行', 'BOQH'=>'青海银行', 'CDRCB'=>'成都农商银行', 'QDCCB'=>'青岛银行', 'HKBEA'=>'东亚银行', 'HBHSBANK'=>'湖北银行黄石分行', 'WZCB'=>'温州银行', 'TRCB'=>'天津农商银行', 'QLBANK'=>'齐鲁银行', 'GDRCC'=>'广东省农村信用社联合社', 'ZJTLCB'=>'浙江泰隆商业银行', 'GZB'=>'赣州银行', 'GYCB'=>'贵阳市商业银行', 'CQBANK'=>'重庆银行', 'DAQINGB'=>'龙江银行', 'CGNB'=>'南充市商业银行', 'SCCB'=>'三门峡银行', 'CSRCB'=>'常熟农村商业银行', 'SHBANK'=>'上海银行', 'JLBANK'=>'吉林银行', 'CZRCB'=>'常州农村信用联社', 'BANKWF'=>'潍坊银行', 'ZRCBANK'=>'张家港农村商业银行', 'FJHXBC'=>'福建海峡银行', 'ZJNX'=>'浙江省农村信用社联合社', 'LZYH'=>'兰州银行', 'JSB'=>'晋商银行', 'BOHAIB'=>'渤海银行', 'CZCB'=>'浙江稠州商业银行', 'YQCCB'=>'阳泉银行', 'SJBANK'=>'盛京银行', 'XABANK'=>'西安银行', 'BSB'=>'包商银行', 'JSBANK'=>'江苏银行', 'FSCB'=>'抚顺银行', 'HNRCU'=>'河南省农村信用', 'COMM'=>'交通银行', 'XTB'=>'邢台银行', 'CITIC'=>'中信银行', 'HXBANK'=>'华夏银行', 'HNRCC'=>'湖南省农村信用社', 'DYCCB'=>'东营市商业银行', 'ORBANK'=>'鄂尔多斯银行', 'BJRCB'=>'北京农村商业银行', 'XYBANK'=>'信阳银行', 'ZGCCB'=>'自贡市商业银行', 'CDCB'=>'成都银行', 'HANABANK'=>'韩亚银行', 'CMBC'=>'中国民生银行', 'LYBANK'=>'洛阳银行', 'GDB'=>'广东发展银行', 'ZBCB'=>'齐商银行', 'CBKF'=>'开封市商业银行', 'H3CB'=>'内蒙古银行', 'CIB'=>'兴业银行', 'CRCBANK'=>'重庆农村商业银行', 'SZSBK'=>'石嘴山银行', 'DZBANK'=>'德州银行', 'SRBANK'=>'上饶银行', 'LSCCB'=>'乐山市商业银行', 'JXRCU'=>'江西省农村信用', 'ICBC'=>'中国工商银行', 'JZBANK'=>'晋中市商业银行', 'HZCCB'=>'湖州市商业银行', 'NHB'=>'南海农村信用联社', 'XXBANK'=>'新乡银行', 'JRCB'=>'江苏江阴农村商业银行', 'YNRCC'=>'云南省农村信用社', 'ABC'=>'中国农业银行', 'GXRCU'=>'广西省农村信用', 'PSBC'=>'中国邮政储蓄银行', 'BZMD'=>'驻马店银行', 'ARCU'=>'安徽省农村信用社', 'GSRCU'=>'甘肃省农村信用', 'LYCB'=>'辽阳市商业银行', 'JLRCU'=>'吉林农信', 'URMQCCB'=>'乌鲁木齐市商业银行', 'XLBANK'=>'中山小榄村镇银行', 'CSCB'=>'长沙银行', 'JHBANK'=>'金华银行', 'BHB'=>'河北银行', 'NBYZ'=>'鄞州银行', 'LSBC'=>'临商银行', 'BOCD'=>'承德银行', 'SDRCU'=>'山东农信', 'NCB'=>'南昌银行', 'TCCB'=>'天津银行', 'WJRCB'=>'吴江农商银行', 'CBBQS'=>'城市商业银行资金清算中心', 'HBRCU'=>'河北省农村信用社', 'ZYB'=>'中原银行' ); $cardtype_list = array( 'DC'=>'储蓄卡', 'CC'=>'信用卡', 'SCC'=>'准贷记卡', 'PC'=>'预付费卡', ); $url = 'https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo='.$card_no.'&cardBinCheck=true'; $response = curlGet($url); $result = json_decode($response); if($result->validated){ if(isset($card_list[$result->bank]) || isset($cardtype_list[$result->cardType])){ return ['statu'=>true , 'msg'=>'接口调查成功' , 'code'=>0 , 'data'=>[ 'bank'=>$card_list[$result->bank], 'bank_code' => $result->bank, 'card_type'=>$cardtype_list[$result->cardType] ]]; } else { return ['statu'=>false , 'msg' => '未知的银行卡' , 'code'=>103402]; } } else { return ['statu'=>false , 'msg' => '银行卡格式验证失败' , 'code'=>103403]; } }
继续阅读 »
    代码如下:   public function card_bin($card_no){ $card_list = array( 'SRCB'=>'深圳农村商业银行', 'BGB'=>'广西北部湾银行', 'SHRCB'=>'上海农村商业银行', 'BJBANK'=>'北京银行', 'WHCCB'=>'威海市商业银行', 'BOZK'=>'周口银行', 'KORLABANK'=>'库尔勒市商业银行', 'SPABANK'=>'平安银行', 'SDEB'=>'顺德农商银行', 'HURCB'=>'湖北省农村信用社', 'WRCB'=>'无锡农村商业银行', 'BOCY'=>'朝阳银行', 'CZBANK'=>'浙商银行', 'HDBANK'=>'邯郸银行', 'BOC'=>'中国银行', 'BOD'=>'东莞银行', 'CCB'=>'中国建设银行', 'ZYCBANK'=>'遵义市商业银行', 'SXCB'=>'绍兴银行', 'GZRCU'=>'贵州省农村信用社', 'ZJKCCB'=>'张家口市商业银行', 'BOJZ'=>'锦州银行', 'BOP'=>'平顶山银行', 'HKB'=>'汉口银行', 'SPDB'=>'上海浦东发展银行', 'NXRCU'=>'宁夏黄河农村商业银行', 'NYNB'=>'广东南粤银行', 'GRCB'=>'广州农商银行', 'BOSZ'=>'苏州银行', 'HZCB'=>'杭州银行', 'HSBK'=>'衡水银行', 'HBC'=>'湖北银行', 'JXBANK'=>'嘉兴银行', 'HRXJB'=>'华融湘江银行', 'BODD'=>'丹东银行', 'AYCB'=>'安阳银行', 'EGBANK'=>'恒丰银行', 'CDB'=>'国家开发银行', 'TCRCB'=>'江苏太仓农村商业银行', 'NJCB'=>'南京银行', 'ZZBANK'=>'郑州银行', 'DYCB'=>'德阳商业银行', 'YBCCB'=>'宜宾市商业银行', 'SCRCU'=>'四川省农村信用', 'KLB'=>'昆仑银行', 'LSBANK'=>'莱商银行', 'YDRCB'=>'尧都农商行', 'CCQTGB'=>'重庆三峡银行', 'FDB'=>'富滇银行', 'JSRCU'=>'江苏省农村信用联合社', 'JNBANK'=>'济宁银行', 'CMB'=>'招商银行', 'JINCHB'=>'晋城银行JCBANK', 'FXCB'=>'阜新银行', 'WHRCB'=>'武汉农村商业银行', 'HBYCBANK'=>'湖北银行宜昌分行', 'TZCB'=>'台州银行', 'TACCB'=>'泰安市商业银行', 'XCYH'=>'许昌银行', 'CEB'=>'中国光大银行', 'NXBANK'=>'宁夏银行', 'HSBANK'=>'徽商银行', 'JJBANK'=>'九江银行', 'NHQS'=>'农信银清算中心', 'MTBANK'=>'浙江民泰商业银行', 'LANGFB'=>'廊坊银行', 'ASCB'=>'鞍山银行', 'KSRB'=>'昆山农村商业银行', 'YXCCB'=>'玉溪市商业银行', 'DLB'=>'大连银行', 'DRCBCL'=>'东莞农村商业银行', 'GCB'=>'广州银行', 'NBBANK'=>'宁波银行', 'BOYK'=>'营口银行', 'SXRCCU'=>'陕西信合', 'GLBANK'=>'桂林银行', 'BOQH'=>'青海银行', 'CDRCB'=>'成都农商银行', 'QDCCB'=>'青岛银行', 'HKBEA'=>'东亚银行', 'HBHSBANK'=>'湖北银行黄石分行', 'WZCB'=>'温州银行', 'TRCB'=>'天津农商银行', 'QLBANK'=>'齐鲁银行', 'GDRCC'=>'广东省农村信用社联合社', 'ZJTLCB'=>'浙江泰隆商业银行', 'GZB'=>'赣州银行', 'GYCB'=>'贵阳市商业银行', 'CQBANK'=>'重庆银行', 'DAQINGB'=>'龙江银行', 'CGNB'=>'南充市商业银行', 'SCCB'=>'三门峡银行', 'CSRCB'=>'常熟农村商业银行', 'SHBANK'=>'上海银行', 'JLBANK'=>'吉林银行', 'CZRCB'=>'常州农村信用联社', 'BANKWF'=>'潍坊银行', 'ZRCBANK'=>'张家港农村商业银行', 'FJHXBC'=>'福建海峡银行', 'ZJNX'=>'浙江省农村信用社联合社', 'LZYH'=>'兰州银行', 'JSB'=>'晋商银行', 'BOHAIB'=>'渤海银行', 'CZCB'=>'浙江稠州商业银行', 'YQCCB'=>'阳泉银行', 'SJBANK'=>'盛京银行', 'XABANK'=>'西安银行', 'BSB'=>'包商银行', 'JSBANK'=>'江苏银行', 'FSCB'=>'抚顺银行', 'HNRCU'=>'河南省农村信用', 'COMM'=>'交通银行', 'XTB'=>'邢台银行', 'CITIC'=>'中信银行', 'HXBANK'=>'华夏银行', 'HNRCC'=>'湖南省农村信用社', 'DYCCB'=>'东营市商业银行', 'ORBANK'=>'鄂尔多斯银行', 'BJRCB'=>'北京农村商业银行', 'XYBANK'=>'信阳银行', 'ZGCCB'=>'自贡市商业银行', 'CDCB'=>'成都银行', 'HANABANK'=>'韩亚银行', 'CMBC'=>'中国民生银行', 'LYBANK'=>'洛阳银行', 'GDB'=>'广东发展银行', 'ZBCB'=>'齐商银行', 'CBKF'=>'开封市商业银行', 'H3CB'=>'内蒙古银行', 'CIB'=>'兴业银行', 'CRCBANK'=>'重庆农村商业银行', 'SZSBK'=>'石嘴山银行', 'DZBANK'=>'德州银行', 'SRBANK'=>'上饶银行', 'LSCCB'=>'乐山市商业银行', 'JXRCU'=>'江西省农村信用', 'ICBC'=>'中国工商银行', 'JZBANK'=>'晋中市商业银行', 'HZCCB'=>'湖州市商业银行', 'NHB'=>'南海农村信用联社', 'XXBANK'=>'新乡银行', 'JRCB'=>'江苏江阴农村商业银行', 'YNRCC'=>'云南省农村信用社', 'ABC'=>'中国农业银行', 'GXRCU'=>'广西省农村信用', 'PSBC'=>'中国邮政储蓄银行', 'BZMD'=>'驻马店银行', 'ARCU'=>'安徽省农村信用社', 'GSRCU'=>'甘肃省农村信用', 'LYCB'=>'辽阳市商业银行', 'JLRCU'=>'吉林农信', 'URMQCCB'=>'乌鲁木齐市商业银行', 'XLBANK'=>'中山小榄村镇银行', 'CSCB'=>'长沙银行', 'JHBANK'=>'金华银行', 'BHB'=>'河北银行', 'NBYZ'=>'鄞州银行', 'LSBC'=>'临商银行', 'BOCD'=>'承德银行', 'SDRCU'=>'山东农信', 'NCB'=>'南昌银行', 'TCCB'=>'天津银行', 'WJRCB'=>'吴江农商银行', 'CBBQS'=>'城市商业银行资金清算中心', 'HBRCU'=>'河北省农村信用社', 'ZYB'=>'中原银行' ); $cardtype_list = array( 'DC'=>'储蓄卡', 'CC'=>'信用卡', 'SCC'=>'准贷记卡', 'PC'=>'预付费卡', ); $url = 'https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo='.$card_no.'&cardBinCheck=true'; $response = curlGet($url); $result = json_decode($response); if($result->validated){ if(isset($card_list[$result->bank]) || isset($cardtype_list[$result->cardType])){ return ['statu'=>true , 'msg'=>'接口调查成功' , 'code'=>0 , 'data'=>[ 'bank'=>$card_list[$result->bank], 'bank_code' => $result->bank, 'card_type'=>$cardtype_list[$result->cardType] ]]; } else { return ['statu'=>false , 'msg' => '未知的银行卡' , 'code'=>103402]; } } else { return ['statu'=>false , 'msg' => '银行卡格式验证失败' , 'code'=>103403]; } } 收起阅读 »

封装 php redis 缓存类

  封装 php redis 缓存类,源码如下 (需要自己实例化下redis):   <?php class Cache { private static function init(){ return RedisClient::getInstance('redis'); // 上面是我的实例化方式,需要修改为自己实例化redis。 } /* * #desc 根据缓存级别,定义过期时间 * * * */ private static function lifetime($level){ switch ($level) { case 'low': return 300; case 'normal': return 1200; case 'high': return 3600; default: return 1200; } } public static function set($key,$value,$level='normal'){ $redis = self::init(); $value = (is_object($value) || is_array($value)) ? json_encode($value) : $value; //对数组/对象数据进行缓存处理,保证数据完整性 return $redis->set($key,$value,self::lifetime($level)); } public static function get($key){ $redis = self::init(); $value = $redis->get($key); if (is_null($value)) { return false; } $jsonData = json_decode($value, true); return (null === $jsonData) ? $value : $jsonData; } }
继续阅读 »
  封装 php redis 缓存类,源码如下 (需要自己实例化下redis):   <?php class Cache { private static function init(){ return RedisClient::getInstance('redis'); // 上面是我的实例化方式,需要修改为自己实例化redis。 } /* * #desc 根据缓存级别,定义过期时间 * * * */ private static function lifetime($level){ switch ($level) { case 'low': return 300; case 'normal': return 1200; case 'high': return 3600; default: return 1200; } } public static function set($key,$value,$level='normal'){ $redis = self::init(); $value = (is_object($value) || is_array($value)) ? json_encode($value) : $value; //对数组/对象数据进行缓存处理,保证数据完整性 return $redis->set($key,$value,self::lifetime($level)); } public static function get($key){ $redis = self::init(); $value = $redis->get($key); if (is_null($value)) { return false; } $jsonData = json_decode($value, true); return (null === $jsonData) ? $value : $jsonData; } } 收起阅读 »

apache服务器 保护模板文件(.html、.shtml)

 apache服务器实现保护模板文件(.html、.shtml):禁止使用浏览器直接访问模板文件     适用于:thinkphp、phpcms 等开发的网站   比如:   使用phpcms 开发的网站。默认的模板放在:phpcms/templates/default/content/   用户直接使用浏览器访问 www.域名.com/phpcms/templates/default/content/index.html 就得到你的首页模板文件了,然后在copy下 css js 就可以将你的网站完整的趴下来了。   实现代码如下(利用apache的.htaccess文件):   在 phpcms/templates/default/content/ 目录下,新建.htaccess文件,加入以下代码:  <Files *.html> Order Allow,Deny Deny from all </Files> 这样使用浏览器直接访问模板文件,就会提示403
继续阅读 »
 apache服务器实现保护模板文件(.html、.shtml):禁止使用浏览器直接访问模板文件     适用于:thinkphp、phpcms 等开发的网站   比如:   使用phpcms 开发的网站。默认的模板放在:phpcms/templates/default/content/   用户直接使用浏览器访问 www.域名.com/phpcms/templates/default/content/index.html 就得到你的首页模板文件了,然后在copy下 css js 就可以将你的网站完整的趴下来了。   实现代码如下(利用apache的.htaccess文件):   在 phpcms/templates/default/content/ 目录下,新建.htaccess文件,加入以下代码:  <Files *.html> Order Allow,Deny Deny from all </Files> 这样使用浏览器直接访问模板文件,就会提示403 收起阅读 »

php curl 请求 https 接口

  php curl 请求 https 接口:   解决方法,在curl请求时,加入:   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在  完整代码如下:   function curlPost($url, $data = null) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 60); $output = curl_exec($ch); curl_close($ch); return $output; }  
继续阅读 »
  php curl 请求 https 接口:   解决方法,在curl请求时,加入:   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在  完整代码如下:   function curlPost($url, $data = null) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 60); $output = curl_exec($ch); curl_close($ch); return $output; }   收起阅读 »