用来解析.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 相关文章推荐
COM in PHP (winows only)
Oct 09 PHP
PHP 文件上传进度条的两种实现方法的代码
Nov 25 PHP
php中$this->含义分析
Nov 29 PHP
来自phpguru得Php Cache类源码
Apr 15 PHP
jQuery 源码分析笔记
May 25 PHP
php中定时计划任务的实现原理
Jan 08 PHP
php页面消耗内存过大的处理办法
Mar 18 PHP
php对文件进行hash运算的方法
Apr 03 PHP
作为程序员必知的16个最佳PHP库
Dec 09 PHP
php插件Xajax使用方法详解
Aug 31 PHP
PHP设计模式之建造者模式定义与用法简单示例
Aug 13 PHP
PHP实现页面静态化深入讲解
Mar 04 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程序61条面向对象分析设计的经验小结
2008/11/12 PHP
PHP has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
php开发过程中关于继承的使用方法分享
2011/06/17 PHP
PHP 第二节 数据类型之转换
2012/04/28 PHP
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
2011/09/29 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
JavaScript阻止事件冒泡示例分享
2014/12/28 Javascript
jQuery实现的支持IE的html滑动条
2015/03/16 Javascript
JS实现的最简Table选项卡效果
2015/10/14 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
Node.js如何自动审核团队的代码
2016/07/20 Javascript
AngularJS控制器之间的数据共享及通信详解
2016/08/01 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
关于定制FileField中的上传文件名称问题
2017/08/22 Javascript
Vue匿名插槽与作用域插槽的合并和覆盖行为
2019/04/22 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
Python 字典(Dictionary)操作详解
2014/03/11 Python
Python set集合类型操作总结
2014/11/07 Python
Python六大开源框架对比
2015/10/19 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
Python中的list与tuple集合区别解析
2019/10/12 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
利用Python实现Excel的文件间的数据匹配功能
2020/06/16 Python
Currentbody德国站:健康与美容技术专家
2020/04/05 全球购物
土木工程应届生求职信
2013/10/31 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
大学生个人学习总结
2015/02/15 职场文书
游戏开发中如何使用CocosCreator进行音效处理
2021/04/14 Javascript