PHP类来解析Htpasswd的文件。
User1:{SHA}kGPaD671VNU0OU5lqLiN/h6Q6ac=
用户:{沙} npmqpex3kpqto + X / + zckhdricqi =
用户2:{沙} q1fh2ltujjkncp11m0m9wuh5zrw =
复制代码代码如下所示:
类htpasswd {
私人$文件=;
私人盐= 'aynlj2h美元。74vefi ^ bzelc-vb6g0eze9a55-wj;
私有函数写入($ =数组()){
$ =;
foreach(美元对美元美元作为用户名=密码){
$$用户名:{ $ }密码;
}
file_put_contents($,文件,$str);
}
私有函数读取(){
$ =数组();
FH = fopen(美元美元,文件,R');
而(!Feof($ FH)){
pair_str美元= str_replace(
pair_array美元=爆炸(':{沙},pair_str美元);
如果(计数($ pair_array)= = 2){
对pair_array美元美元{ { 0 } } = $ pair_array { 1 };
}
}
返回$对;
}
私有函数gethash($ clear_password =){
如果(!空(美元clear_password)){
返回base64_encode(SHA1(clear_password美元,真的));
{人}
返回false;
}
}
公共功能__construct(文件){
如果(file_exists(文件)){
此文件;
{人}
死亡(文件)。不存在。;
返回false;
}
}
公共函数语句(用户名为美元,美元clear_password =){
如果(!空($用户名)!空(美元clear_password)){
全部$ = $ >(读取);
如果(!array_key_exists($的用户名,所有美元)){
所有{用户名} =美元美元美元- gethash($ clear_password);
这写$(全部);
}
{人}
返回false;
}
}
公共函数删除($用户名=){
全部$ = $ >(读取);
如果(array_key_exists($美元的用户名,所有)){
撤消(合所有{ $用户名});
这写$(全部);
{人}
返回false;
}
}
公共功能doesuserexist($用户名=){
全部$ = $ >(读取);
如果(array_key_exists($美元的用户名,所有)){
返回true;
{人}
返回false;
}
}
公共功能getclearpassword($用户名){
返回strtolower(substr(SHA1($USERNAME。美元->盐),4, 12));
}
}
使用方法
复制代码代码如下所示:
passwdhandler美元=新htpasswd( / / /家中。.htpasswd);
添加一个name'user1 ' / password'i用户喜欢使用的密码,而不是密码。如果它不存在in.htpasswd。
passwdhandler美元-> adduser('user1 ',我更喜欢使用密码而不是密码。);
删除user'user1'if它/存在in.htpasswd。
passwdhandler美元-删除('user1);
检查 / / user'user1'exists .htpasswd。
如果($ passwdhandler -> doesuserexist('user1 ')){
user1'exists。 /用户
}