当前位置:  编程技术>php
本页文章导读:
    ▪LotusPhp学习六:Validator 组件的使用      趁现在炖肉的呢,抽个空赶紧写一篇,每天忙死。Validator 组件顾名思义就是表单验证组件,负责检验各种表单输入是否符合规则。由2个类组成,一个是LtValidator,是专门负责验证的,LtValidator.........
    ▪PHP会话技术-Session      Session 是服务端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session文件,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自.........
    ▪PHP 观察者模式      //被察者抽象类class Observed implements SplSubject{ protected $_name; protected $_observers; //实例化,生成一个观察者对象 public function __construct(){ $this->_observers = new SplObjectStorage(); } // 添.........

[1]LotusPhp学习六:Validator 组件的使用
    来源:    发布时间: 2013-11-07

趁现在炖肉的呢,抽个空赶紧写一篇,每天忙死。


Validator 组件顾名思义就是表单验证组件,负责检验各种表单输入是否符合规则。由2个类组成,一个是LtValidator,是专门负责验证的,LtValidatorDtd 是用来定义各种验证规则和返回提示的


LtValidator 的公共方法除了 init() 初始化的组件外,就一个 validate 方法。


Validator 组件支持10种验证规则:


ban
通常用来验证字符串中不包含指定字符的,例如用户名不能包含xxx
输入只支持正则表达式,需要用//引起来.具体可以参考php手册里的preg_match函数


mask
通常用来验证字符串中包含指定字符的,例如用户名只能以字母数字开头
输入只支持正则表达式,需要用//引起来.具体可以参考php手册里的preg_match函数


equal_to
通常用来验证两个值是否恒等,例如输入的两次密码是否相同
输入可以是数字也可以是字符串


max_length
通常用来验证输入的字符串是否超过了指定长度,例如用户名最多只能8个字母
输入只能是数字


min_length
通常用来验证输入的字符串是否少于指定长度,例如用户名最少4个字母
输入只能是数字


max_value
通常用来验证输入的数值是否大于指定的值,例如年龄最大为99岁
输入只能是数字


min_value
通常用来验证输入的数值是否小于指定的值,例如年龄最小为10岁
输入只能是数字


max_selected
通常用来验证选择的最多个数是否大于指定的值,例如最多只能选3个
输入只能是数字


min_selected
通常用来验证选择的最少个数是否小于指定的值,例如最少只能选1个
输入只能是数字


required
通常用来验证该验证选项是否为必填,例如用户名不能为空
输入只能是布尔类型,默认是false


Validator 支持用配置文件来定义错误信息,如果你没有定义默认的错误信息,那通过 LtValidatorDtd 也可以来定义验证错误信息,好了,说的估计有点晕头转向了,还是看例子比较给力。


先定义配置文件,validator.conf.php


文件内容如下:



<?php
$config['validator.error_messages'] = array('ban' => '%s 内容中含有禁用词',
'mask' => '%s 不符合验证规范',
'max_length' => '%s 超出最大字符数 %s',
'min_length' => '%s 小于最小字符数 %s',
'max_value' => '%s 大于最大值 %s',
'min_value' => '%s 小于了最小值 %s',
'max_selected' => '%s 选项过多',
'min_selected' => '%s 选项过少',
'required' => '%s 为空',
'equal_to' => '%s 不等于 %s',
);


上面的配置文件你可以根据自己的验证内容进行更改。总之定义10个类型的出错显示语句就行。


定义完了配置文件,就需要了解下 Validator 的验证规则


我给出一个我们验证用户注册的常用例子




$this->dtds['Title']=new LtValidatorDtd("用户名称", array("max_length" => 20,"required" => true));
$this->dtds['Pwd']=new LtValidatorDtd("用户密码", array("max_length" => 20, "required" => true));
$this->dtds['Pwd2']=new LtValidatorDtd("重复用户密码", array("equal_to" =>$this->context->post('Pwd'),"required" => true));
$this->dtds['Roles']=new LtValidatorDtd("用户角色", array("min_selected" =>1));


上面的语句是在LotusPhp MVC模式下的运行范例,如果不启用 LotusPhp MVC模式 ,那就是下面这样的写法了:



$dtd['username'] = new LtValidatorDtd("用户名", 
       array("max_length" => 16, "min_length" => 4, "required" => true),
       array( "max_length" => "%s最多只能有%s个字符",
"min_length" => "%s最少必须有%s个字符",
"required" => "%s不能为空"
) );

$dtd['password'] = new LtValidatorDtd("密码",
array(
"max_length" => 20,
"min_length" => 3,
"required" => true
),
array(
"max_length" => "%s最多只能有%s个字符",
"min_length" => "%s最少必须有%s个字符",
"required" => "%s不能为空"
) );

$dtd['password_confirm'] = new LtValidatorDtd("验证密码",
array(
"equal_to" => $_POST['password']
),
array(
"equal_to" => "两次输入的密码不一致"
) );

$dtd['email'] = new LtValidatorDtd("Email",
array(
"required" => true,
"mask" => "/^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/",
),
array(
"required" => "%s不能为空",
"mask" => "%s 格式不正确"
) );


不运行 LotusPhp的 MVC 模式,不是我们讲的重点,稍带提示下。
看过上面的两个定义验证规则的范例,基本上多数人能看出来验证规则的定义方法



$dtd['表单名称'] = new LtValidatorDtd("表单名称表述", 
array(
"验证类别1" => '验证类别的值1',
"验证类别2" => '验证类别的值2',
...
),
array(
"验证类别1" => "出错提示语句1",
"验证类别2" => "出错提示语句2",
...
) );


如果定义了配置文件,而且不准备定义出错提示语句,而是用默认的出错提示语句,第二个数据可以为空



$dtd['表单名称'] =       
    
[2]PHP会话技术-Session
    来源:    发布时间: 2013-11-07

Session 是服务端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session文件,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时(前提会话没有结束),其他web资源再从用户的各自session中取出数据为用户服务。


Session 是最重要的用户行为跟踪技术(防止用户非法登录/验证码等)。


默认情况下session文件被保存在C:/Windows/temp 目录下。


1、创建session



<?php

//创建session
//初始化session
session_start();
//保存数据
$_SESSION['name']="pawm";
//session 文件中可以保存dobule,integer,string,bool, array,object

//保存bool integer
$_SESSION['age']=20;
$_SESSION['isBoy']=true;

$_SESSION['arr']=array("北京","张三","xiaoming");

//保存对象到session 中
class Dog{
private $name;
private $age;
private $intro;

public function __construct($name,$age,$intro){

$this->name=$name;
$this->age=$age;
$this->intro=$intro;
}
}

$dog1=new Dog("狗狗",5,"很听话的狗");
$_SESSION['dog1']=$dog1;
echo "保存成功";
?>


 要点:


1、保存的数据格式:name|s:4:"pawm";age|i:20;isBoy|b:1;


  name:就是key

  s:表示数据类型

  4:表示数据大小

2、session 中可以保存的数据类型是:dobule,integer,string,bool, array,object

本文链接


    
[3]PHP 观察者模式
    来源:    发布时间: 2013-11-07

//被察者抽象类
class Observed implements SplSubject{
protected $_name;
protected $_observers;

//实例化,生成一个观察者对象
public function __construct(){
$this->_observers = new SplObjectStorage();
}

// 添加观察者对象
public function attach(SplObserver $observer){
$this->_observers->attach($observer);
}

//删除观者对象
public function detach(SplObserver $observer){
$this->_observers->detach($observer);
}

//通知消息
public function notify(){
foreach($this->_observers as $observer){
$observer->showMessage($this);
}
}

//普通方法: 设置值
public function setName($name){
$this->_name = $name;
$this->notify();
}

//普通方法: 获取值
public function getName(){
return $this->_name;
}

//普通方法:设置年龄
public function setAge($age){
$this->age = $age;
foreach($this->_observers as $observer){
$observer->showAge($this->_name,$this->age);
}
}

}

// 观察者抽象类
class Observer implements SplObserver{

//显示消息提示
public function showMessage(SplSubject $obj){
$user = $obj->getName();
if($user==='admin'){
echo '您好, ',$user,'欢迎您进入管理后台<br/>';
}else{
echo "你好, '$user' 你已经被添加到了用户列表<br/>";
}
}
//这是继承父类的抽象方法
public function update(SplSubject $subject) {}

//显示个人年龄
public function showAge($name,$age){
echo "<script>alert('$name 的年龄是: $age')</script>";
}
}

$subject = new Observed(); //生成一个被观察者对象
$observer = new Observer(); //生成一个观察者对象
$subject->attach($observer);//把观察者传入到被观察中去
$subject->setName('张三'); //调用 setName 方法
/*
* 通过面的 setName 就会调用 $this->notify();
* 通过调用 $this->notify()就会调用 $observer->showMessage($this)方法,
* 即每个观察者对象的 showMessage($obj)方法;
*/
$subject->setName('admin');
$subject->setAge(24);


 

本文链接


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3