月度归档:2011年11月

页面验证是否是真实有效的身份证号码

  javascript验证输入是否是真实有效的身份证号码

JavaScript代码
  1. /*! 
  2. * Copyright (c) 2011 sxgkwei 
  3. * Author:sxgkwei 
  4. * Email:sxgkwei@gmail.com 
  5. * Date: 2011-11-28 17:10:21 
  6. */  
  7. var isIdCard=(function(){  
  8.     var maxOld = 100;  
  9.     var now = (new Date()).getFullYear();  
  10.       
  11.     //判断18位身份证  
  12.     var is18IdCard = function(idCard){  
  13.           
  14.         var year = parseInt(idCard.substring(6,10),10);  
  15.         if(maxOld+year<now){//证明是鬼魂  
  16.             return false;  
  17.         };  
  18.           
  19.         var idCardReg = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$/;  
  20.         if(!idCardReg.test(idCard)){//基本正则  
  21.             return false;  
  22.         };  
  23.           
  24.         var wi=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];//权列表  
  25.         var ex=[1,0,‘x’,9,8,7,6,5,4,3,2];//校验码列表  
  26.         var su=0;  
  27.         for(var i=0,wil=wi.length;i<wil;i++){  
  28.             su+=parseInt(idCard.charAt(i),10)*wi[i];  
  29.         };  
  30.         return idCard.charAt(17).toLowerCase()==ex[su%11];  
  31.     };  
  32.       
  33.     //判断15位身份证  
  34.     var is15IdCard = function(idCard){  
  35.           
  36.         var maxId = 2003-16;//2003年前是15位证,但办证也得最少16岁吧  
  37.         var minId = now-maxOld;  
  38.         var year = parseInt("19"+idCard.substring(6,8),10);  
  39.         if(minId>maxId || year<minId || year>maxId){//证明是鬼魂或者非人类  
  40.             return false;  
  41.         };  
  42.           
  43.         var idCardReg = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;  
  44.           
  45.         return  idCardReg.test(idCard);  
  46.     };  
  47.       
  48.     return (function(e){  
  49.         if(e.length==18){  
  50.             return is18IdCard(e);  
  51.         }else if(e.length==15){  
  52.             return is15IdCard(e);  
  53.         }else{  
  54.             alert("莫乱写,我们不是那么好忽悠滴");  
  55.             return false;  
  56.         };  
  57.     });  
  58. })();  
  59.   
  60. isIdCard("410456196511285935");  

使Apache实现gzip压缩

 HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML ,CSS,Javascript , Text ,它可以节省40%左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,压缩效率惊人!!

1)针对Apache2.0之前的版本,它原本是不支持的,不过可以通过添加第三方的module_gzip模块来启用
2)针对Apache2.0及之后的版本,Apache 提供支持, 不过不叫gzip,而叫mod_deflate
下面就对Apache2.0及之后的版本作一个说明。

1.开启 gzip模块
   LoadModule deflate_module modules/mod_deflate.so
2. 在httpd.conf中增加下面的内容:
<Location />
    # Insert filter
    SetOutputFilter DEFLATE

    # Netscape 4.x has some problems…
    BrowserMatch ^Mozilla/4 gzip-only-text/html

    # Netscape 4.06-4.08 have some more problems
    BrowserMatch ^Mozilla/4\.0[678] no-gzip

    # MSIE masquerades as Netscape, but it is fine
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html  

    # Don’t compress images
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

    # Make sure proxies don’t deliver the wrong content
    # Header append Vary User-Agent env=!dont-vary
</Location>

3. 重启Apache进程即可。

debian下安装PHP geoip扩展

 

下载geoip

wget http://pecl.php.net/get/geoip-1.0.8.tgz

安装依赖项

apt-get install libgeoip-dev 

安装geoip

cd geoip-1.0.8 

/usr/local/php/bin/phpize

./configure –with-php-config=/usr/local/php/bin/php-config

make && make install

修改PHP配置

vim /usr/local/php/etc/php.ini

加入geoip扩展

extension_dir ="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"

extension="geoip.so"

重启PHP,

pkill -9 php-fpm && /usr/local/php/sbin/php-fpm

 

 
测试:
PHP代码
  1. <?php  
  2. $country = geoip_country_code_by_name(‘blog.greycode.cn’);   
  3. var_dump($country);  
  4. ?>  

输出结果:

string(2) "US"

Div父容器不根据内容自动撑开的解决方法

 Div即父容器不根据内容自适应高度,我们看下面的代码:



程序代码



<div id="main">

<div id="content"></div>

</div>



当Content内容多时,即使main设置了高度100%或auto。在不同浏览器下还是不能完好的自动伸展。内容的高度比较高了,但容器main的高度还是不能撑开。



我们可以通过三种方法来解决这个问题。

  

一,增加一个清除浮动,让父容器知道高度。请注意,清除浮动的容器中有一个空格。



程序代码<div id="main"> 

<div id="content"></div> 

<div style="font: 0px/0px sans-serif;clear: both;display: block"> </div> 

</div>



二,增加一个容器,在代码中存在,但在视觉中不可见。



程序代码<div id="main"> 

<div id="content"></div> 

<div style="height:1px; margin-top:-1px;clear: both;overflow:hidden;"></div>

</div>



三,增加一个BR并设置样式为clear:both。



程序代码<div id="main"> 

<div id="content"></div> 

<br style="clear:both;" />

</div>