.htpasswd ファイルの解析に使用される PHP クラス_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:16:51
オリジナル
1001 人が閲覧しました

.htpasswd 文例:
user1:{SHA}kGPaD671VNU0OU5lqLiN/h6Q6ac=
user2:{SHA}npMqPEX3kPQTo+x/+ZckHDrIcQI=
user3:{SHA}q1Fh2LTUjjkncp11m0M9WUH5Zrw=

复制代価代価如下:

class Htpasswd {
private $file = '';
プライベート $salt = 'AynlJ2H.74VEfI^BZElc-Vb6G0ezE9a55-Wj';
プライベート関数 write($pairs = array()) {
$str = '';
foreach ($pairs as $username => $password) {
$str .= "$username:{SHA}$passwordn";
}
file_put_contents($this -> ファイル, $str);
}
プライベート関数 read() {
$pairs = array();
$fh = fopen($this -> ファイル, 'r');
while (!feof($fh)) {
$pair_str = str_replace("n", '', fgets($fh));
$pair_array =explode(':{SHA}', $pair_str);
if (count($pair_array) == 2) {
$pairs[$pair_array[0]] = $pair_array[1];
}
}
$pairs を返します。
}
プライベート関数 getHash($clear_password = '') {
if (!empty($clear_password)) {
returnbase64_encode(sha1($clear_password, true));
} else {
false を返す;
}
}
パブリック関数 __construct($file) {
if (file_exists($file)) {
$this ->ファイル = $ファイル;
} else {
die($file." が存在しません。");
false を返します。
}
}
public function addUser($username = '', $clear_password = '') {
if (!empty($username) && !empty($clear_password)) {
$all = $this ->読む();
if (!array_key_exists($username, $all)) {
$all[$username] = $this -> getHash($clear_password);
$これ ->書き込み($all);
}
} else {
false を返す;
}
}
public function deleteUser($username = '') {
$all = $this ->読む();
if (array_key_exists($username, $all)) {
unset($all[$username]);
$これ ->書き込み($all);
} else {
false を返す;
}
}
パブリック関数 dosUserExist($username = '') {
$all = $this ->読む();
if (array_key_exists($username, $all)) {
return true;
} else {
false を返す;
}
}
public function getClearPassword($username) {
return strto lower(substr(sha1($username.$this -> Salt), 4, 12));
}
}

使用メソッド
复制代码代码如下:

$passwdHandler = new Htpasswd('/home/myuser/.htpasswd');
// 名前「user1」とパスワード「パスワードではなくパスフレーズを使用することを好みます」のユーザーを追加します。 .htpasswd に存在しない場合。
$passwdHandler -> addUser('user1', 'パスワードではなくパスフレーズを使用することを好みます。');
// ユーザー「user1」が .htpasswd に存在する場合は削除します。
$passwdHandler -> deleteUser('user1');
// ユーザー「user1」が .htpasswd に存在するかどうかを確認します。
if ($passwdHandler -> dosUserExist('user1')) {
// ユーザー 'user1' が存在します。
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/325855.html技術記事 ...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!