PHP面向对象之旅:用户权限管理类
2011-07-12 00:00
1346 查看
在上一章,我们写了一个建立用户user类,直接使用user类读取用户信息的类。假设我们又有了新的需求。
任何用户都可以查看别的用户的信息,当然不能看到别人的密码。
任何用户都可以修改自己的密码。
于是我们对第一章的类做些改动,首先我们在userInfo类中,将获得密码的方法隐藏。
我们再写一个UserChange类继承自userInfo,在UserChange中增加修改密码的方法。并将获取密码的方法重写为public权限。
这样,在你的页面中,就可以创建两种user。一种是只能看到信息不能看到密码、不能修改密码的userInfo的实例。另外一种是比userInfo功能更强的UserChange类,这个实例可以修改密码,可以获得密码。
在合适的位置创建不同的user,就是你的业务逻辑的内容了。
同时,我们独立出一个数据库连接类,数据库连接类比较完善的网上有很多,大家学习完毕面向对象后,自己也可以写出更完善的数据库类。
数据库配置类 db_config.php
Mysql连接类
父类User类
子类 class_userChange.php 类
添加了修改密码的方法,重写并公开了获取密码的方法。
在任何位置都可以放心使用userInfo类。
可以重设密码的Userchange类的实例。
任何用户都可以查看别的用户的信息,当然不能看到别人的密码。
任何用户都可以修改自己的密码。
于是我们对第一章的类做些改动,首先我们在userInfo类中,将获得密码的方法隐藏。
我们再写一个UserChange类继承自userInfo,在UserChange中增加修改密码的方法。并将获取密码的方法重写为public权限。
这样,在你的页面中,就可以创建两种user。一种是只能看到信息不能看到密码、不能修改密码的userInfo的实例。另外一种是比userInfo功能更强的UserChange类,这个实例可以修改密码,可以获得密码。
在合适的位置创建不同的user,就是你的业务逻辑的内容了。
同时,我们独立出一个数据库连接类,数据库连接类比较完善的网上有很多,大家学习完毕面向对象后,自己也可以写出更完善的数据库类。
数据库配置类 db_config.php
<? // 数据库配置文件, db_config.php $db_server = "localhost"; $db_user = "root"; $db_pwd = "123"; $db_name = "test"; ?>
Mysql连接类
<? class MysqlConn { private $conn; private $my_db; private $result; public function __construct() { require_once("db_config.php"); $this->conn = mysql_pconnect($db_server, $db_user, $db_pwd); $this->my_db = mysql_select_db($db_name,$this->conn);//选择数据库 } public function query($sql){ $this->result = mysql_query($sql, $this->conn); // 执行查询语句 return $this->result; } public function next(){ return $row = mysql_fetch_array($this->result); } public function close(){ mysql_free_result($this->result); } //使用转义字符,保证系统安全. public function escapeString($str){ return mysql_escape_string($str); } } ?>
父类User类
<? // class_user.php require_once("class_mysqlConn.php"); class UserInfo{ protected $userName; //属性,用户名 protected $userPSW ; //属性,用户密码 protected $userAge ; //属性,用户年龄 protected $userGrade ; //属性,用户级别 protected $userInfo; //存储数据库返回信息的数组变量. protected $mysqlConn; public function __construct($name){ $this->mysqlConn = new MysqlConn(); $sql = "select * from e_user where username='$name' "; //查询的sql $rs = $this->mysqlConn->query($sql); $this->userInfo = $this->mysqlConn->next(); $this->getInfo(); //调用传递信息的方法. } // 获取信息传递给属性的方法 protected function getInfo(){ $this->userName = $this->userInfo["username"]; $this->userPSW = $this->userInfo["userpsw"]; $this->userAge = $this->userInfo["userage"]; $this->userGrade = $this->userInfo["usergrade"]; } //返回每个属性的public 方法. public function getUserName(){ return $this->userName; } protected function getUserPSW(){ return $this->userPSW; } public function getUserAge(){ return $this->userAge; } public function getUserGrade(){ return $this->userGrade; } } ?>
子类 class_userChange.php 类
添加了修改密码的方法,重写并公开了获取密码的方法。
<? // class_userChange.php require_once("class_user.php"); class UserChange extends UserInfo { public function setUserPSW($pws){ $pws = $this->mysqlConn->escapeString($pws); // 过滤特殊字符 $username = $this->mysqlConn->escapeString($this->userName);// 过滤 $sql = "Update e_user set userpsw ='$pws' "; $sql .= " where username = '$username'"; //查询的sql $rs = $this->mysqlConn->query($sql); //执行 if($rs){ $this->userPSW = $pws; } return $rs; } public function getUserPSW(){ //重写的getUserPSW方法。 return $this->userPSW; } } ?>
在任何位置都可以放心使用userInfo类。
<? //viewuser.php require_once("class_user.php"); $user = new UserInfo("Tom"); //创建一个user对象. $username = $user->getUserName(); //分别调用方法取得数据 $userage = $user->getUserAge(); $usergrade = $user->getUserGrade(); echo "$username name is ".$username."<br>"; //输出数据 echo "$username age is ".$userage."<br>" ; echo "$username grade is ".$usergrade."<br>" ; ?>
可以重设密码的Userchange类的实例。
<? $password = "898"; //重设的密码 require_once("class_userChange.php"); $user = new UserChange("Jack"); //创建一个可以修改密码的user对象. $username = $user->getUserName(); //分别调用方法取得数据 $userpsw = $user->getUserPSW(); $userage = $user->getUserAge(); $usergrade = $user->getUserGrade(); //这些和user类的一样,用起来很舒服。 echo "your name is ".$username."<br>"; //输出数据 echo "your password is ".$userpsw."<br>" ; echo "your age is ".$userage."<br>" ; echo "your grade is ".$usergrade."<br>" ; //如果设置成功,显示新的密码。 if($user->setUserPSW($password)){ echo "you password be changed to ".$userpsw = $user->getUserPSW(); //这里,密码被重设了。 } ?>
相关文章推荐
- PHP面向对象笔记 —— 121 public_protected_private权限控制详解
- php面向对象笔记3 封装和权限修饰符以及继承
- PHP面向对象笔记 —— 114 privata权限控制
- PHP面向对象笔记 —— 115 权限控制的bug
- php 面向对象权限
- PHP面向对象之旅:获取用户数据
- php面向对象开发之——单例模式
- php类面向对象学习笔记
- PHP会员登录,和判断用户权限,登录超时踢除用户
- PHP OOP面向对象详细介绍总结(代码实例子)
- PHP面向对象深入理解之五(内省函数与反射类)
- PHP面向对象之旅:深入理解static变量与方法
- PHP面向对象程序设计之接口用法
- PHP面向对象程序设计的61条黄金法则
- php面向对象实例笔记
- oracle 用户添加、删除、修改,用户权限,对象特权管理
- Oracle 用户、角色、权限(系统权限、对象权限)的数据字典表
- PHP面向对象笔记 —— 111 析构函数与回收机制
- php的面向对象
- php面向对象常用函数总结