用来解析.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 来访国内外IP判断代码并实现页面跳转
Dec 18 PHP
深入解析php中的foreach问题
Jun 30 PHP
调整PHP的性能
Oct 30 PHP
thinkphp实现图片上传功能分享
Mar 04 PHP
PHP下载远程文件到本地存储的方法
Mar 24 PHP
PHP常见数组函数用法小结
Mar 21 PHP
PHP读取大文件的多种方法介绍
Apr 04 PHP
Smarty日期时间操作方法示例
Nov 15 PHP
PHP 搜索查询功能实现
Nov 29 PHP
php断点续传之文件分割合并详解
Dec 13 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
Jan 11 PHP
Laravel中10个有用的用法小结
May 06 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中实现中文字符进制转换原理分析
2011/12/06 PHP
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
2012/06/07 PHP
深入PHP变量存储的详解
2013/06/13 PHP
ppk谈JavaScript style属性
2008/10/10 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
使用原生js写的一个简单slider
2014/04/29 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
javascript操作ul中li的方法
2015/05/14 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
基于JavaScript实现文字超出部分隐藏
2016/02/29 Javascript
vue 路由嵌套高亮问题的解决方法
2018/05/17 Javascript
JavaScript实现留言板案例
2020/03/17 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
Ant Design Pro 之 ProTable使用操作
2020/10/31 Javascript
[01:09:13]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第三场 1月19日
2021/03/11 DOTA
Python脚本实现格式化css文件
2015/04/08 Python
python通过socket实现多个连接并实现ssh功能详解
2017/11/08 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
vue.js实现输入框输入值内容实时响应变化示例
2018/07/07 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
2020/03/12 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
银行会计业务的个人自我评价
2013/11/02 职场文书
前厅收银主管岗位职责
2014/02/04 职场文书
2014全国两会心得体会
2014/03/17 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
家长意见和建议怎么写
2015/06/04 职场文书
《金色的草地》教学反思
2016/02/17 职场文书
2019年12月24日平安夜祝福语集锦
2019/12/24 职场文书
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python
Java Spring Lifecycle的使用
2022/05/06 Java/Android