2008年10月14日 星期二
2008年10月10日 星期五
2008年10月9日 星期四
2008年10月8日 星期三
Zend_Framework 1.6的版本的protected $_pdoType已改為mssql
http://mlblog.osdir.com/php.zend.framework.general/2006-12/index.shtml
PDO, MSSQL and FreeTDS
Date: December 12, 2006
From: Todd Wolaver
Hi,
I'm using FreeTDS under Linux to access MSSQL databases, which won' t work with the framework since the PDO driver is dblib not mssql.
$db = Zend_Db::factory('pdo_mssql', $params);
will return:
"The mssql driver is not currently installed"
This is set in the Mssql.php PDO adapter (Zend_Db_Adapter_Pdo_Mssql):
43: protected $_pdoType = 'mssql';
If this is changed to dblib then it works. What would be the best way of implementing the dblib driver without changing the core code of the framework?
Thanks
Todd Wolaver
Zend_Framework 1.6的版本的protected $_pdoType已改為mssql
PDO, MSSQL and FreeTDS
Date: December 12, 2006
From: Todd Wolaver
Hi,
I'm using FreeTDS under Linux to access MSSQL databases, which won' t work with the framework since the PDO driver is dblib not mssql.
$db = Zend_Db::factory('pdo_mssql', $params);
will return:
"The mssql driver is not currently installed"
This is set in the Mssql.php PDO adapter (Zend_Db_Adapter_Pdo_Mssql):
43: protected $_pdoType = 'mssql';
If this is changed to dblib then it works. What would be the best way of implementing the dblib driver without changing the core code of the framework?
Thanks
Todd Wolaver
Zend_Framework 1.6的版本的protected $_pdoType已改為mssql
2008年9月26日 星期五
jQuery的身份證驗證plugin
/**
* 驗證身份證字號是否正確的jquery plugin
* 用法:jQuery('身份證字號的id').idCheck();
* 傳回值:
* 合法---傳回true
* 非法---傳回false
* 作者:羅仁治
* 版本:1.0
* 版權:隨你使用,但須保留這段說明文字。
*/
jQuery.fn.idCheck = function(){
var real_id = this.val();
real_id = real_id.toUpperCase();
var pattern = /^[A-Z]{1}[0-9]{9}$/;
if (!pattern.test(real_id)) {
return false;
}
if (check(real_id)) {
return true;
}
else {
return false;
}
function check(real_id){
var first = real_id.substr(0, 1);
switch (first) {
case 'A':
first = '10';
break;
case 'B':
first = '11';
break;
case 'C':
first = '12';
break;
case 'D':
first = '13';
break;
case 'E':
first = '14';
break;
case 'F':
first = '15';
break;
case 'G':
first = '16';
break;
case 'H':
first = '17';
break;
case 'I':
first = '34';
break;
case 'J':
first = '18';
break;
case 'K':
first = '19';
break;
case 'L':
first = '20';
break;
case 'M':
first = '21';
break;
case 'N':
first = '22';
break;
case 'O':
first = '35';
break;
case 'P':
first = '23';
break;
case 'Q':
first = '24';
break;
case 'R':
first = '25';
break;
case 'S':
first = '26';
break;
case 'T':
first = '27';
break;
case 'U':
first = '28';
break;
case 'V':
first = '29';
break;
case 'W':
first = '32';
break;
case 'X':
first = '30';
break;
case 'Y':
first = '31';
break;
case 'Z':
first = '33';
break;
}
var value = first.concat(real_id.substr(1, 8));
var sum = parseInt(value.substr(0, 1));
for (var i = 1; i <= 9; i++) {
sum = sum + parseInt(value.substr(i, 1)) * (10 - i);
}
single = 10 - (sum % 10);
if (parseInt(real_id.substr(9, 1)) == single) {
return true;
}
else {
return false;
}
}
};
* 驗證身份證字號是否正確的jquery plugin
* 用法:jQuery('身份證字號的id').idCheck();
* 傳回值:
* 合法---傳回true
* 非法---傳回false
* 作者:羅仁治
* 版本:1.0
* 版權:隨你使用,但須保留這段說明文字。
*/
jQuery.fn.idCheck = function(){
var real_id = this.val();
real_id = real_id.toUpperCase();
var pattern = /^[A-Z]{1}[0-9]{9}$/;
if (!pattern.test(real_id)) {
return false;
}
if (check(real_id)) {
return true;
}
else {
return false;
}
function check(real_id){
var first = real_id.substr(0, 1);
switch (first) {
case 'A':
first = '10';
break;
case 'B':
first = '11';
break;
case 'C':
first = '12';
break;
case 'D':
first = '13';
break;
case 'E':
first = '14';
break;
case 'F':
first = '15';
break;
case 'G':
first = '16';
break;
case 'H':
first = '17';
break;
case 'I':
first = '34';
break;
case 'J':
first = '18';
break;
case 'K':
first = '19';
break;
case 'L':
first = '20';
break;
case 'M':
first = '21';
break;
case 'N':
first = '22';
break;
case 'O':
first = '35';
break;
case 'P':
first = '23';
break;
case 'Q':
first = '24';
break;
case 'R':
first = '25';
break;
case 'S':
first = '26';
break;
case 'T':
first = '27';
break;
case 'U':
first = '28';
break;
case 'V':
first = '29';
break;
case 'W':
first = '32';
break;
case 'X':
first = '30';
break;
case 'Y':
first = '31';
break;
case 'Z':
first = '33';
break;
}
var value = first.concat(real_id.substr(1, 8));
var sum = parseInt(value.substr(0, 1));
for (var i = 1; i <= 9; i++) {
sum = sum + parseInt(value.substr(i, 1)) * (10 - i);
}
single = 10 - (sum % 10);
if (parseInt(real_id.substr(9, 1)) == single) {
return true;
}
else {
return false;
}
}
};
2008年9月25日 星期四
身份證字號的validator
下面程式是參考
http://zh.wikipedia.org/wiki/%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B%E5%9C%8B%E6%B0%91%E8%BA%AB%E5%88%86%E8%AD%89
這篇文章的身份證字號檢查公式,轉換成Zend framework的validator,進行身份證號碼的驗證。
有了公式之後要進行驗證就比較容易,不用看程式碼去倒推公式,如果沒有公式,光看程式碼,看個老半天,也看不出個所以然來,還要去適應各種程式碼的寫法,太累了,這個公式真是造福大家,直接將公式轉換成Zend Framework的程式碼,就容易多了。
http://zh.wikipedia.org/wiki/%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B%E5%9C%8B%E6%B0%91%E8%BA%AB%E5%88%86%E8%AD%89
這篇文章的身份證字號檢查公式,轉換成Zend framework的validator,進行身份證號碼的驗證。
有了公式之後要進行驗證就比較容易,不用看程式碼去倒推公式,如果沒有公式,光看程式碼,看個老半天,也看不出個所以然來,還要去適應各種程式碼的寫法,太累了,這個公式真是造福大家,直接將公式轉換成Zend Framework的程式碼,就容易多了。
require_once('Zend/Validate/Abstract.php');
class App_Validate_IdCheck extends Zend_Validate_Abstract{
const SIZE='size';
const FORMAT='format';
const CHECK='check';
protected $_messageTemplates=array(
self::SIZE=>"'%value%' 身份證字串長度不符合。",
self::FORMAT=>"'%value%' 的第一個字元必須是英文字母,其他必須是數字。",
self::CHECK=>"'%value%' 是非法的身份證字號。"
);
public function isValid($value){
$this->_setValue($value);
if(strlen($value) !=10){
$this->_error(self::SIZE);
return false;
}
$value=strtoupper($value);
if(!ereg("[A-Z]{1}[0-9]{9}",$value)){
$this->_error(self::FORMAT);
return false;
}
if($this->check($value)){
return true;
}
else{
$this->_error(self::CHECK);
return false;
}
}
private function check($value){
$first=array('A'=>10,'B'=>11,'C'=>12,'D'=>13,'E'=>14,
'F'=>15,'G'=>16,'H'=>17,'I'=>34,'J'=>18,
'K'=>19,'L'=>20,'M'=>21,'N'=>22,'O'=>35,
'P'=>23,'Q'=>24,'R'=>25,'S'=>26,'T'=>27,
'U'=>28,'V'=>29,'W'=>32,'X'=>30,'Y'=>31,
'Z'=>33);
/**
* convert the first alpha character to two digits
* and combines to the rest digits
*/
$value=$first[$value[0]].substr($value,1);
$sum=(int)$value[0];
for($i=1;$i<=9;$i++){
$sum+=$value[$i]*(10-$i);
}
/**
* get the single-digit of 10-$sum
*/
$single=10 - ($sum % 10);
if($single == $value[10]){
return true;
}
else{
return false;
}
}
}
訂閱:
文章 (Atom)