用来解析.htgroup文件的PHP类


Posted in PHP onSeptember 05, 2012

.htgroup 文件示例:
admin: user2
editor: user1 user3
writer: user3

class Htgroup { 
private $file = ''; 
private function write($groups = array()) { 
$str = ''; 
foreach ($groups as $group => $users) { 
$users_str = ''; 
foreach ($users as $user) { 
if (!empty($users_str)) { 
$users_str .= ' '; 
} 
$users_str .= $user; 
} 
$str .= "$group: $users_str\n"; 
} 
file_put_contents($this -> file, $str); 
} 
private function read() { 
$groups = array(); 
$groups_str = file($this -> file, FILE_IGNORE_NEW_LINES); 
foreach ($groups_str as $group_str) { 
if (!empty($group_str)) { 
$group_str_array = explode(': ', $group_str); 
if (count($group_str_array) == 2) { 
$users_array = explode(' ', $group_str_array[1]); 
$groups[$group_str_array[0]] = $users_array; 
} 
} 
} 
return $groups; 
} 
public function __construct($file) { 
if (file_exists($file)) { 
$this -> file = $file; 
} else { 
die($file." doesn't exist."); 
return false; 
} 
} 
public function addUserToGroup($username = '', $group = '') { 
if (!empty($username) && !empty($group)) { 
$all = $this -> read(); 
if (isset($all[$group])) { 
if (!in_array($username, $all[$group])) { 
$all[$group][] = $username; 
} 
} else { 
$all[$group][] = $username; 
} 
$this -> write($all); 
} else { 
return false; 
} 
} 
public function deleteUserFromGroup($username = '', $group = '') { 
$all = $this -> read(); 
if (array_key_exists($group, $all)) { 
$user_index = array_search($username, $all[$group]); 
if ($user_index !== false) { 
unset($all[$group][$user_index]); 
if (count($all[$group]) == 0) { 
unset($all[$group]); 
} 
$this -> write($all); 
} 
} else { 
return false; 
} 
} 
}

$groupHandler = new Htgroup('/home/myuser/.htgroup'); 
// Add user 'user1' to group 'admin' in .htgroup. Group will be automatically created if it doesn't exist. 
$groupHandler -> addUserToGroup('user1', 'admin'); 
// Delete user 'user1' from group 'admin' in .htgroup. Group will be automatically removed if it doesn't contain any users. 
$groupHandler -> deleteUserFromGroup('user1', 'admin');
PHP 相关文章推荐
用PHP将数据导入到Foxmail
Oct 09 PHP
PHP 文件扩展名 获取函数
Jun 03 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
Jan 20 PHP
phpmyadmin打开很慢的解决方法
Apr 21 PHP
thinkphp备份数据库的方法分享
Jan 04 PHP
PHP基于单例模式实现的mysql类
Jan 09 PHP
thinkPHP批量删除的实现方法分析
Nov 09 PHP
php微信公众平台开发(三)订阅事件处理
Dec 06 PHP
postman的安装与使用方法(模拟Get和Post请求)
Aug 06 PHP
提高Laravel应用性能方法详解
Jun 24 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
Jul 22 PHP
Yii框架组件的事件机制原理与用法分析
Apr 07 PHP
PHP curl 并发最佳实践代码分享
Sep 05 #PHP
PHP输出数组中重名的元素的几种处理方法
Sep 05 #PHP
PHP中使用crypt()实现用户身份验证的代码
Sep 05 #PHP
通过缓存数据库结果提高PHP性能的原理介绍
Sep 05 #PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
Sep 05 #PHP
php循环语句 for()与foreach()用法区别介绍
Sep 05 #PHP
PHP手机号码归属地查询代码(API接口/mysql)
Sep 04 #PHP
You might like
php trim 去除空字符的定义与语法介绍
2010/05/31 PHP
php学习笔记 php中面向对象三大特性之一[封装性]的应用
2011/06/13 PHP
跟我学Laravel之请求(Request)的生命周期
2014/10/15 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
2016/12/09 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
2019/12/13 PHP
让你的网站可编辑的实现js代码
2009/10/19 Javascript
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
js中巧用cssText属性批量操作样式
2011/03/13 Javascript
JQuery的read函数与js的onload不同方式实现
2013/03/18 Javascript
javascript实现的闭包简单实例
2015/07/17 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
js 截取或者替换字符串中的数字实现方法
2016/06/13 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
微信小程序云开发实现云数据库读写权限
2019/05/17 Javascript
layui禁用侧边导航栏点击事件的解决方法
2019/09/25 Javascript
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
Python单链表简单实现代码
2016/04/27 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
Python Numpy库安装与基本操作示例
2019/01/08 Python
Python 实现微信防撤回功能
2019/04/29 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
2020/06/06 Python
python语言的优势是什么
2020/06/17 Python
shell变量的作用空间是什么
2013/08/17 面试题
七年级地理教学反思
2014/01/26 职场文书
安全协议书
2014/04/23 职场文书
公务员学习习总书记“三严三实”思想汇报
2014/09/19 职场文书
创卫工作总结2015
2015/04/22 职场文书
100句人生哲理语录集锦:强者征服今天,懒汉坐等明天
2019/10/18 职场文书
Vue h函数的使用详解
2022/02/18 Vue.js
MySQL 原理与优化之Limit 查询优化
2022/08/14 MySQL