用来解析.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 相关文章推荐
一个捕获函数输出的函数
Feb 14 PHP
简单的PHP图片上传程序
Mar 27 PHP
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
Mar 28 PHP
一步一步学习PHP(8) php 数组
Mar 05 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
May 15 PHP
PHP函数eval()介绍和使用示例
Aug 20 PHP
php抓取网站图片并保存的实现方法
Oct 29 PHP
纯php生成随机密码
Oct 30 PHP
thinkphp中的url跳转用法分析
Jul 12 PHP
Yii中的relations数据关联查询及统计功能用法详解
Jul 14 PHP
php mysql操作mysql_connect连接数据库实例详解
Dec 26 PHP
PHP小白必须要知道的php基础知识(超实用)
Oct 10 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语法速查表
2007/01/02 PHP
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
PHP使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
PHP Session机制简介及用法
2014/08/19 PHP
php使用$_POST或$_SESSION[]向js函数传参
2014/09/16 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
2020/08/17 PHP
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
js replace 与replaceall实例用法详解
2013/08/03 Javascript
基于jquery实现的文字淡入淡出效果
2013/11/14 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
微信小程序tabBar底部导航中文注解api详解
2017/08/16 Javascript
vue观察模式浅析
2018/09/25 Javascript
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
2018/11/08 Javascript
vue父组件给子组件的组件传值provide inject的方法
2019/10/23 Javascript
微信小程序批量上传图片到七牛(推荐)
2019/12/19 Javascript
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
Python正则抓取网易新闻的方法示例
2017/04/21 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
python中urlparse模块介绍与使用示例
2017/11/19 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
python儿童学游戏编程知识点总结
2019/06/03 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
以思科路由器为例你写下单臂路由的配置命令
2013/08/03 面试题
技术人员面试提纲
2013/11/28 职场文书
廉洁使者实施方案
2014/03/29 职场文书
2014年收银工作总结
2014/11/13 职场文书
JavaScript 防篡改对象的用法示例
2021/04/24 Javascript
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL
MySQL派生表联表查询实战过程
2022/03/20 MySQL