用来解析.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中通过ADO调用Asscess数据库和COM程序
Oct 09 PHP
PHP学习 运算符与运算符优先级
Jun 15 PHP
PHP中数组合并的两种方法及区别介绍
Sep 14 PHP
PHP对接微信公众平台消息接口开发流程教程
Mar 25 PHP
PHP+javascript制作带提示的验证码源码分享
May 28 PHP
单台服务器的PHP进程之间实现共享内存的方法
Jun 13 PHP
深入理解PHP中的Streams工具
Jul 03 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
Jan 05 PHP
Symfony2开发之控制器用法实例分析
Feb 05 PHP
PHP中类的继承和用法实例分析
May 24 PHP
php设计模式之策略模式应用案例详解
Jun 17 PHP
laravel 使用auth编写登录的方法
Sep 30 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之第三天
2006/10/09 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
angularJS深拷贝详解
2017/03/23 Javascript
jquery 校验中国身份证号码实例详解
2017/04/11 jQuery
用Vue-cli搭建的项目中引入css报错的原因分析
2017/07/20 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
2018/01/18 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
2018/10/31 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
JS实现页面跳转与刷新的方法汇总
2019/08/30 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
django传值给模板, 再用JS接收并进行操作的实例
2018/05/28 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
python多个模块py文件的数据共享实例
2019/01/11 Python
详解Python3注释知识点
2019/02/19 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
2020/06/01 Python
帕克纽约:PARKER NY
2018/12/09 全球购物
安全生产管理责任书
2014/04/16 职场文书
大学生新学期计划书
2014/04/28 职场文书
乡镇干部党的群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
单位考核聘任报告
2015/03/02 职场文书
nginx基于域名,端口,不同IP的虚拟主机设置的实现
2021/03/31 Servers