用来解析.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 相关文章推荐
5.PHP的其他功能
Oct 09 PHP
php 设计模式之 单例模式
Dec 19 PHP
php中获得视频时间总长度的另一种方法
Sep 15 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
Feb 22 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
Sep 25 PHP
php使用Cookie实现和用户会话的方法
Jan 21 PHP
php实现指定字符串中查找子字符串的方法
Mar 17 PHP
PHP查找与搜索数组元素方法总结
Jun 12 PHP
PHP数组函数知识汇总
May 12 PHP
PHP编辑器PhpStrom运行缓慢问题
Feb 21 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
PDO::rollBack讲解
Jan 29 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环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
自用js开发框架小成 学习js的朋友可以看看
2010/11/16 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
2014/04/02 Javascript
使用纯javascript实现放大镜效果
2015/03/18 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
2015/08/13 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
谈谈JavaScript中的几种借用方法
2016/08/09 Javascript
Vue表单实例代码
2016/09/05 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
2016/12/06 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
微信小程序使用wxParse解析html的方法示例
2019/01/17 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
2020/06/16 Javascript
python机器学习之神经网络(三)
2017/12/20 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
python判断设备是否联网的方法
2018/06/29 Python
深入了解Python枚举类型的相关知识
2019/07/09 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
python3通过qq邮箱发送邮件以及附件
2020/05/20 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
英国假睫毛购买网站:FalseEyelashes.co.uk
2018/05/23 全球购物
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
求职信格式范本
2013/11/15 职场文书
企业总经理岗位职责
2014/02/13 职场文书
2014年学校卫生工作总结
2014/11/20 职场文书
先进单位申报材料
2014/12/25 职场文书
务虚会发言材料
2014/12/25 职场文书
初二物理教学反思
2016/02/19 职场文书
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript