php下的MVC [Zend Framework] Part 4 Filter和Validate的功能
时间:2008-08-30
来源:互联网
Zend_Filter介绍:
Zend_Filter是用来把Data过滤,例如把空白移除,HTML ,PHP的tag移除,把字串转成upper or lower..etc.
1.Zend_Filter_Alnum //回传[a-zA-Z0-9]
2.Zend_Filter_Alpha //回传[a-ZA-Z]
3.Zend_Filter_BaseName //回传文件的基本名
4.Zend_Filter_Digits//回传数字[0-9]
5.Zend_Filter_Dir//回传路径
6.Zend_Filter_HtmlEntities//回传转换成HTML实体字符串
7.Zend_Filter_Int//回传整数
8.Zend_Filter_StringToLower//回传把字串转成小写
9.Zend_Filter_StringToUpper//回传把字串转成大写
10.Zend_Filter_StringTrim//回传移除空白的字串
11.Zend_Filter_StringTags//回传把html,php tag移除的字串
Zend_Validate介绍:
Zend_Validate是用来进行験证,例如对日期,数字,IP,主机名,EMAIL,Empty..etc.作出験证。
1.Zend_Validate_Alnum//験证字串是否只含有[a-zA-Z0-9],如果是回传true
2.Zend_Validate_Alpha//験证字串是否只含有[a-zA-Z],如果是回传true
3.Zend_Validate_Between//験证数字是否只在MIN同MAX内,如果是回传true
4.Zend_Validate_Date//験证日期,如果是回传true
5.Zend_Validate_Digits//験证如果只包含数字符号,如果是回传true
6.Zend_Validate_EmailAddress//験证电邮地址,如果是回传true
7.Zend_Validate_Float//験证是否为float number,如果是回传true
8.Zend_Validate_GreaterThan//験证当$value大于MIN,如果是回传true
9.Zend_Validate_HostName//験证HostName,如果是回传true
10.Zend_Validate_Int//験证如果是整数,如果是回传true
11.Zend_Validate_LessThan//験证当$value小于MAX,如果是回传true
12.Zend_Validate_NotEmpty//験证如果value不是空值,如果是回传true
13.Zend_Validate_StringLength//験证$value长度,如果没有超出指定长度回传true
作者: 太阳神 发布时间: 2008-08-30
1.新增add.phtml,使用者可以新増一个user,可以塡入firstname,lastname,age .
firstname and last不可以是空值(empty)
age只可以between 1-140歳
2.当user submit的时候,在IndexController.php里头的addAction function会call User Class create一个新user,会把user的输入传送到user这个object,最后做験证,如果成功,就会jump到index/ index,显示user detail.如果fail,就会显示错鋘。
3.験证方面是今天教学内容最重要的。
首先会create一个filter,把空白(trim)同html,php tag移除,我们会用到Zend_Filter_StringTrim和Zend_Filter_StringTags.
然后我会create一个defaultChain和ageChain是给験证用的。我们到Zend_Validate_NotEmpty和Zend_Validate_Between.
最后我们会用到Zend_Filter_Input把filter同validate连在一来运用。
user.sql
程式码:
CREATE TABLE `user` (
`id` mediumint(9) NOT NULL auto_increment,
`first_name` varchar(255) default NULL,
`last_name` varchar(255) default NULL,
`age` int(3) default NULL,
PRIMARY KEY (`id`)
)
index.php
程式码:
作者: 太阳神 发布时间: 2008-08-30
$frontController->setControllerDirectory('./application/controllers');
$frontController->dispatch();
indexController.php
程式码:
作者: 太阳神 发布时间: 2008-08-30
endif;
endif;
}
}
add.phtml
程式码:
Add User Form
作者: 太阳神 发布时间: 2008-08-30
$this->_user_id = $user_id;
}
public function __toString() {
$result_rows = parent::getAllFields();
$s = '';
foreach($result_rows as $key => $value) :
$s .= $key.' : '.$value.'
';
endforeach;
return $s;
}
//*********************************Important************** *********************************
public function validate() {
$first_name = $this->_Modify_fields['first_name'];
$last_name = $this->_Modify_fields['last_name'];
$age = $this->_Modify_fields['age'];
$filter = array( //create一个filter
'*' => array( //对所input都进行过滤
"StringTrim", //过滤空白
"StripTags" //过滤html,php tags
));
$defaultChain = new Zend_Validate(); //create认证物件,套用到first_name,last_name
$defaultChain->addValidator(new Zend_Validate_NotEmpty(),false); //加入Not Empty认证功能
$validators = array(
'first_name' => $defaultChain
);
$first_name = new Zend_Filter_Input($filter,$validators,$first_name); //把filter,validate连在一起,然后对first_name作认证工作。
$validators = array(
作者: 太阳神 发布时间: 2008-08-30
);
$last_name = new Zend_Filter_Input($filter,$validators,$last_name);//把filter,validate连在一起,然后对last_name作认证工作。
//因为age一定是数字,和有限制,所以不可以把defaultChain套用到age
$ageChain = new Zend_Validate(); //新増一个认证物件,套用到age
$ageChain->addValidator(new Zend_Validate_Between('1','140'));//加入Between认证功能,限制age在1-140歳
$validators = array(
'age' => $ageChain
);
$age = new Zend_Filter_Input($filter,$validators,$age);//把filter,validate连在一起,然后对$age作认证工作。
//検查験证是否有错误出现
if ($first_name->hasInvalid() || $first_name->hasMissing()) :
foreach ($first_name->getMessages() as $message) :
array_push($this->_errors,$message[0]); //把错误写入到$this->errors
endforeach;
elseif ($last_name->hasInvalid() || $last_name->hasMissing()) :
foreach ($last_name->getMessages() as $message) :
array_push($this->_errors,$message[0]); //把错误写入到$this->errors
作者: 太阳神 发布时间: 2008-08-30
elseif ($age->hasInvalid() || $age->hasMissing()) :
foreach ($age->getMessages() as $message) :
array_push($this->_errors,$message[0]); //把错误写入到$this->errors
endforeach;
endif;
if(sizeof($this->_errors) > 0) : //検查$this->errors里头有没有东西
return false;
else :
return true;
endif;
}
public function getErrors() {
return $this->_errors;
}
}
?>
class.Da****anager.php
程式码:
class.GenericObject.php
程式码:
作者: 太阳神 发布时间: 2008-08-30
private function _checkLoaded() {
if(!$this->_isLoaded) :
$this->_load();
endif;
}
public function forceReloaded() {
$this->_isLoaded = true;
}
public function setTable($table_name) {
$this->_table_name = $table_name;
}
public function getField($field_name) {
$this->_checkLoaded();
return $this->_result_rows[$field_name];
}
public function getAllfields() {
$this->_checkLoaded();
return $this->_result_rows;
}
public function setField($field_name,$value) {
$this->_checkLoaded();
$this->_Modify_fields[$field_name] = $value;
$this->_result_rows[$field_name] = $value;
}
public function numberOfItem() {
$this->_checkLoaded();
return sizeof($this->_result_rows);
}
public function save() {
$user_id = $this->_user_id;
$table_name = $this->_table_name;
$data = array();
foreach($this->_Modify_fields as $key => $value) :
$data[$key] = $value[$key];
endforeach;
$db = Zend_Registry::get('dbAdapter');
try {
if(!$user_id) :
$query_handle = $db->insert($table_name,$data);
else :
$where = "id = ".$user_id;
$query_handle = $db->update($table_name,$data,$where);
endif;
}
catch (Exception $e) {
echo "Error: ".$e->getMessage();
}
}
}
?>
Demo:http://wingning.no-ip.org/studyarea/zend_filter/
下载:http://wingning.no-ip.org/studyarea/download/zend_filter.tar.gz
作者: 太阳神 发布时间: 2008-08-30
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28