身份证号码的正则表达式及验证详解(JavaScript,Regex)

简言

在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案。本文列举了两种验证方案,大家可以根据自己的项目实际情况,选择适合的方案。

身份证号码说明

居民身份证号码,正确、正式的称谓应该是“公民身份号码”。根据【中华人民共和国国家标准 GB 11643-1999】中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

继续阅读“身份证号码的正则表达式及验证详解(JavaScript,Regex)”

IIS6 7 8下部署SSL证书实现HTTPS

HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版。谷歌已经制定了一项长远的计划,它的最终目标是将所有通过HTTP协议呈现的网页标为“不安全”,对于站长来说,部署SSL证书来迁移到HTTPS是一个现实和重要的问题,那么,对于IIS系统来说,如何部署SSL证书实现HTTPS协议呢?下面就讲述一下具体的实现方法。

继续阅读“IIS6 7 8下部署SSL证书实现HTTPS”

php获取微信 openid

header ( ‘content-type:text/html’ );header ( ‘content-type:text/html’ ); header ( ‘charset:utf-8’ ); $wxcode = $_GET[‘code’]; $wxstate = $_GET[‘state’]; define ( “APPID”, “aaaaaaaaaaaaaaaaaaaaaaaaa” ); define ( “APPSECRET”, “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx” ); if ($wxcode!=”){ $token_access_url = “https://api.weixin.qq.com/sns/oauth2/access_token?appid=” . APPID . “&secret=” . APPSECRET . “&code=” . $wxcode . “&grant_type=authorization_code”; echo “token_access_url:”.$token_access_url.”<br />”; $res = file_get_contents($token_access_url); // 获取文件内容或获取网络请求的内容 //echo “res:”.$res.”<br />”; $result = json_decode($res,true); // 接受一个 JSON 格式的字符串并且把它转换为 PHP 变量 $access_token = $result[‘access_token’]; //echo “access:”.$access_token; $expires_in = $result[‘expires_in’]; $weixin_id = (string)$result[‘openid’]; $scope = $result[‘scope’]; $unionid = $result[‘unionid’]; //echo “weixin_id:”.$weixin_id.”<br />”;

php 连接SQLSERVER2008 并读取16进制图片编码转存本地文件

$fgid = $_GET[‘fgid’];
$connectionInfo = array(“UID”=>”sa”,”PWD”=>”xxx”,”Database”=>”lj”);
$con = sqlsrv_connect(‘127.0.0.1’,$connectionInfo) or die (“err01”);
$query = “SELECT top 10 buiImg from TB_UserInfoImg where buiCode = ‘$fgid'”;
$val=sqlsrv_query($con,$query);
while($row=sqlsrv_fetch_array($val)){
// echo $row[0];
//echo base64_encode($row[0]);
//echo ‘<img src=”data:image/jpg;base64,’.base64_encode($row[0]).'” />’;
$imgdata = ‘data:image/bmp;base64,’.base64_encode($row[0]);
//echo $imgdata.'<br>’;
//匹配出图片的格式

//匹配出图片的格式
if (preg_match(‘/^(data:\s*image\/(\w+);base64,)/’, $imgdata, $result)){
$type = $result[2];
$new_file = “uploads/userup/”;
if(!file_exists($new_file))
{
//检查是否有该文件夹,如果没有就创建,并给予最高权限
mkdir($new_file, 0700);
}
$new_file = $new_file.$fgid.”.{$type}”;
if (file_put_contents($new_file, base64_decode(str_replace($result[1], ”,$imgdata)))){
echo ‘/’. $new_file;
}else{
echo ‘/uploads/userup/100001.bmp’;
}
}
}

给个演示输出的PHP:index

一台电脑使用双网卡同时上内外网的route命令

前些时间公司搞一台服务器接上两个网卡,想同时联通公司的内外网,但是在网上找了一些教程,却怎么也没搞通。

后来参照一些其他资料,摸索一下,设置成功了。步骤如下:

首先插入两个网卡,接上网线,在cmd命令行提示符里输入 route print  查看当前网卡获取到的路由地址。

如果查询结果出错,那就自己去找网管了解一下内外网的路由地址。

举例:

内网:

本地IP地址: 192.168.42.129  子网掩码:255.255.255.0  网关:192.168.42.1

 

外网:

本地IP地址:192.168.1.1  子网掩码: 255.255.255.0  网关: 192.168.1.1

然后删除默认路由

route delete 0.0.0.0

再添加内网路由

route -p add 0.0.0.0 mask 0.0.0.0 192.168.42.1

再添加外网路由

route -p add 192.168.1.0 mask 255.255.255.0 192.168.1.1

MySQL 出现 Got a packet bigger than ‘max_allowed_packet’ bytes 错误

给MYSQL导入数据或者导入sql文件时,若出现:Got a packet bigger than ‘max_allowed_packet’ bytes 的错误,一般是MYSQL给予的容量不够。

我们可以在my.ini中最后增加一行max_allowed_packet=16M即可(根据实际情况设置)。

设置完后需要重启mysql服务哦!

windows10(32位或64位)下安装mssql server2000的过程和遇到的问题

今天给一个朋友解决一个软件的数据访问问题,他的系统是WIN10,软件使用的是SQLserver2000, 蛋疼的他不想换系统。。。所以安装过程中遇到了好多问题。磨来磨去,磨了一天。总结了一下经验。

首先,有可能会遇到安装不成功需要卸载SQLserver2000。

通常提示为:从前的安装程序操作使安装程序操作挂起,需要重新启动计算机   然而,重启无数次,都是这个提示,那么处理方法是:

  1. 删除原MSSQL2000的安装目录。比如通用的是 c:/Program Files\\Microsoft SQL Server 文件夹. 64位机器是 X:/Program Files(X86)\\Microsoft SQL Server 文件夹.
  2. 删除注册表中跟sql server相关的键

    打开注册表搜索sql server ,只要不是ODBC或者其他驱动SQL server的库文件记录都可以删除掉。

  3. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations 右边有关于 sql server2000的键都删了。

然后,sql2000进入x86\setup文件夹,把这个文件夹下的所有exe都设置成兼容XP SP3模式,并选中 以管理员身份运行

接着导入一个注册表功能:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\runas]

@=”获取TrustedInstaller权限”

[HKEY_CLASSES_ROOT\*\shell\runas\command]

@=”cmd.exe /c takeown /f \”%1\” && icacls \”%1\” /grant administrators:F”

“IsolatedCommand”=”cmd.exe /c takeown /f \”%1\” && icacls \”%1\” /grant administrators:F”

[HKEY_CLASSES_ROOT\Directory\shell\runas]

@=”获取TrustedInstaller权限”

“NoWorkingDirectory”=””

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]

@=”cmd.exe /c takeown /f \”%1\” /r /d y && icacls \”%1\” /grant administrators:F /t”

“IsolatedCommand”=”cmd.exe /c takeown /f \”%1\” /r /d y && icacls \”%1\” /grant administrators:F /t”

这个是用于给SQLserver文件赋予权限。找到在sql安装盘里的\X86\SYSTEM下的sqlunirl.dll文件,然后右键上面有个”获取TrustedInstaller权限”,点确认,就可以。然后将该文件复制到c:\windows\system32 或者64位系统是 c:\windows\syswow64进行替换,如果不能替换,就将原来的c:\windows\system32\sqlunirl.dll文件获取TrustedInstaller权限然后再替换,64位系统同理。

MSSQLSERVER2000安装过程中出现:无法定位序数1于动态链接库C;\WINDOWS\SYSYTEM32\SQLUNIRL.DLL 就是这个原因。无权限去访问这个文件。

sql2000 sp4 安装停在“安装程序正在安装Microsoft数据库访问组件(MDAC)”处也是这个原因。(如果是这个原因,处理完上面的文件替换后,可以结束进程:setupre.exe,弹出提示中选否,就可以接着安装了。)

安装成功后,开启服务管理器或者企业管理器都需要点 以管理员身份运行。或者直接给该exe属性里勾选 以管理员身份运行 的选项。

 

织梦dedecms 后台栏目在chrome下 ‘所有档案列表’ 错位重叠的问题修复

织梦系统dedecms 的后台栏目列表

在某些版本的chrome下

‘所有档案列表’ 有可能会错位重叠

在\dede\templets 下找到index_menu2.htm

然后用文本编辑软件打开并找到第61行左右:

给CSS   div.items 添加一个:

float:left;

变成:

div.items {
clear:both;
padding:0px;
height:0px;
float:left;
}

即可。

微信开发平台 接口配置token验证失败 配置失败的原因与解决办法

在微信开发平台 接口配置token之前总是提交失败,找了很多资料,最终在第16行中加了一行代码:

header(‘content-type:text’);

通过验证。

如果依然无法验证,尝试一下把文件字符编码集改为UTF-8 无BOM 编码格式。

最终的验证脚本文件内容如下:

<?php
error_reporting(E_ALL^E_NOTICE^E_WARNING);
//define your token
define(“TOKEN”, “qqyybc0emywuseqvriig1dtb1d4ouyqf”);
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();

class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET[“echostr”];

//valid signature , option
if($this->checkSignature()){
header(‘content-type:text’);
echo $echoStr;
exit;
}
}

public function responseMsg()
{
//get post data, May be due to the different environments
$postStr = $GLOBALS[“HTTP_RAW_POST_DATA”];

//extract post data
if (!empty($postStr)){
/* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
the best way is to check the validity of xml by yourself */
libxml_disable_entity_loader(true);
$postObj = simplexml_load_string($postStr, ‘SimpleXMLElement’, LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = “<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>”;
if(!empty( $keyword ))
{
$msgType = “text”;
$contentStr = “Welcome to wechat world!”;
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo “Input something…”;
}

}else {
echo “no data”;
exit;
}
}

private function checkSignature()
{
// you must define TOKEN by yourself
if (!defined(“TOKEN”)) {
throw new Exception(‘TOKEN is not defined!’);
}

$signature = $_GET[“signature”];
$timestamp = $_GET[“timestamp”];
$nonce = $_GET[“nonce”];

$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
// use SORT_STRING rule
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
}

?>

微信原Demo包下载地址:http://mp.weixin.qq.com/mpres/htmledition/res/wx_sample.20140819.zip

让ecshop网店支持中英繁双语或三种语言的方法

打开includds/init.php 粘贴代码到200行左右if (!defined(‘INIT_NO_USERS’)) 上面
if(!empty($_REQUEST[‘lang’])){
$_SESSION[‘lang’]=$_REQUEST[‘lang’];
}
if (!empty($_SESSION[‘lang’]))
{
switch($_SESSION[‘lang’]){
case ‘zh_cn’:
$_CFG[‘lang’]=”zh_cn”;
break;
case ‘zh_tw’:
$_CFG[‘lang’]=”zh_tw”;
break;
case ‘en_us’:
$_CFG[‘lang’]=”en_us”;
break;
}
}
require(ROOT_PATH . ‘languages/’ . $_CFG[‘lang’] . ‘/common.php’);
$smarty->assign(‘lang’, $_LANG);
删除原来的两行代码:(在不同行)
require(ROOT_PATH . ‘languages/’ . $_CFG[‘lang’] . ‘/common.php’);
$smarty->assign(‘lang’, $_LANG);

打开模板文件的头部文件,目录如themes/default/library/page_header.lbi

在 <div class=”topNavR”></div> 上边添加
<a href=”?lang=zh_cn”>简体</a>
<a href=”?lang=zh_tw”>繁体</a>
<a href=”?lang=en_us”>English</a>

html中div注释css 判断IE种类

1. <!–[if !IE]><!–> 除IE外都可识别 <!–<![endif]–>
2. <!–[if IE]> 所有的IE可识别 <![endif]–>
3. <!–[if IE 5.0]> 只有IE5.0可以识别 <![endif]–>
4. <!–[if IE 5]> 仅IE5.0与IE5.5可以识别 <![endif]–>
5. <!–[if gt IE 5.0]> IE5.0以及IE5.0以上版本都可以识别 <![endif]–>
6. <!–[if IE 6]> 仅IE6可识别 <![endif]–>
7. <!–[if lt IE 6]> IE6以及IE6以下版本可识别 <![endif]–>
8. <!–[if gte IE 6]> IE6以及IE6以上版本可识别 <![endif]–>
9. <!–[if IE 7]> 仅IE7可识别 <![endif]–>
10. <!–[if lt IE 7]> IE7以及IE7以下版本可识别 <![endif]–>
11. <!–[if gte IE 7]> IE7以及IE7以上版本可识别 <![endif]–>

 标记IE 7 IE 8 IE 9 IE10 IE11 IE12同理。

继续阅读“html中div注释css 判断IE种类”

HTML常用的 DOCTYPE 声明

常用的 DOCTYPE 声明

HTML 5

<!DOCTYPE html>

HTML 4.01 Strict

该 DTD 包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

HTML 4.01 Transitional

该 DTD 包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">

HTML 4.01 Frameset

该 DTD 等同于 HTML 4.01 Transitional,但允许框架集内容。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" 
"http://www.w3.org/TR/html4/frameset.dtd">

XHTML 1.0 Strict

该 DTD 包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。必须以格式正确的 XML 来编写标记。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.0 Transitional

该 DTD 包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。必须以格式正确的 XML 来编写标记。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

XHTML 1.0 Frameset

该 DTD 等同于 XHTML 1.0 Transitional,但允许框架集内容。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

XHTML 1.1

该 DTD 等同于 XHTML 1.0 Strict,但允许添加模型(例如提供对东亚语系的 ruby 支持)。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

WINDOWS SERVER 2003 局域网/外网 匿名用户访问共享文件夹设置方法

1. 开始菜单 → 运行 → gpedit.msc,打开组策略编辑器;
2. 依次展开”计算机配置” → “windows设置” → “安全设置” → “本地策略” → “安全选项”;
3. 将”网络访问:本地帐户的共享和安全模式”修改为”仅来宾-本地帐户以来宾身份验证”;
4. 将”网络访问:让每个人(everyone)权限应用于匿名用户”设置为”已启用”;
5. 将”网络访问:限制匿名访问命名管道和共享”设置为”已禁用”;
6. 将”帐户:来宾状态账户”设置为”已启用”;
7. 设置d:\xxx(你所需要共享的文件夹)文件夹”属性” → “共享” → “权限”中 添加”Everyone”用户,并将权限设置为读取;
8. 设置d:\xxx(你所需要共享的文件夹)文件夹”属性” → “安全”中 添加”Everyone”用户, 并将权限设置为读取。