用来解析.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 相关文章推荐
网络资源
Oct 09 PHP
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 PHP
PHP实现图片裁剪、添加水印效果代码
Oct 01 PHP
php站内搜索关键词变亮的实现方法
Dec 30 PHP
PHP生成随机数的方法实例分析
Jan 22 PHP
PHP生成指定随机字符串的简单实现方法
Apr 01 PHP
php使用GD创建保持宽高比缩略图的方法
Apr 17 PHP
php实现表单多按钮提交action的处理方法
Oct 24 PHP
php与python实现的线程池多线程爬虫功能示例
Oct 12 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 12 PHP
PHP下用Swoole实现Actor并发模型的方法
Jun 12 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
在Windows版的PHP中使用ADO
2006/10/09 PHP
PHP中对数据库操作的封装
2006/10/09 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
PHP函数func_num_args用法实例分析
2015/12/07 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
PHP实现搜索时记住状态的方法示例
2018/05/11 PHP
JQuery 实现的页面滚动时浮动窗口控件
2009/07/10 Javascript
javascript 面向对象编程 function也是类
2009/09/17 Javascript
Firefox下提示illegal character并出现乱码的原因
2010/03/25 Javascript
最新28个很棒的jQuery 教程
2011/05/28 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
JS图片自动轮换效果实现思路附截图
2014/04/30 Javascript
Node.js抓取中文网页乱码问题和解决方法
2015/02/10 Javascript
深入理解JavaScript编程中的同步与异步机制
2015/06/24 Javascript
JS代码实现table数据分页效果
2016/05/26 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
Bootstrap响应式侧边栏改进版
2016/09/17 Javascript
微信小程序实现自动定位功能
2018/10/31 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
一些手写JavaScript常用的函数汇总
2019/04/16 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
2019/04/26 Javascript
JavaScript中this函数使用实例解析
2020/02/21 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
python中for用来遍历range函数的方法
2018/06/08 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
python中id函数运行方式
2020/07/03 Python
Python2及Python3如何实现兼容切换
2020/09/01 Python
Silk Therapeutics官网:清洁、抗衰老护肤品
2020/08/12 全球购物
工程造价专业大学生职业生涯规划书
2014/01/18 职场文书
初中高效课堂实施方案
2014/02/26 职场文书
小学运动会开幕词
2015/01/28 职场文书
瘦西湖导游词
2015/02/03 职场文书
欠款纠纷起诉状
2015/05/19 职场文书
pytorch 使用半精度模型部署的操作
2021/05/24 Python