当前位置:首页 > PHP教程 > php高级应用 > 列表

linux中解析.htpasswd文件的PHP类

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-28 16:31:08 浏览: 评论:0 

linux中解析.htpasswd文件的PHP类有需要的朋友可参考一下,介绍一个使用方法,实例代码如下:

  1. $passwdHandler = new Htpasswd('/home/myuser/.htpasswd');  
  2. // Add a user with name 'user1' and password 'I prefer to use passphrase rather than password.' if it doesn't exist in .htpasswd.  
  3. $passwdHandler -> addUser('user1''I prefer to use passphrase rather than password.');  
  4. // Delete the user 'user1' if it exists in .htpasswd.  
  5. $passwdHandler -> deleteUser('user1');  
  6. // Check if user 'user1' exists in .htpasswd.  
  7. if ($passwdHandler -> doesUserExist('user1')) {  
  8. // User 'user1' exists.  

htpasswd类,代码如下:

  1. class Htpasswd {  
  2. private $file = '';  
  3. private $salt = 'AynlJ2H.74VEfI^BZElc-Vb6G0ezE9a55-Wj';  
  4. private function write($pairs = array()) {  
  5. $str = '';  
  6. foreach ($pairs as $username => $password) {  
  7. $str .= "$username:{SHA}$passwordn";  
  8. }  
  9. file_put_contents($this -> file, $str);  
  10. }  
  11. private function read() {  
  12. $pairs = array();  
  13. $fh = fopen($this -> file, 'r');  
  14. while (!feof($fh)) {  
  15. $pair_str = str_replace("n"''fgets($fh));  
  16. $pair_array = explode(':{SHA}'$pair_str);  
  17. if (count($pair_array) == 2) {  
  18. $pairs[$pair_array[0]] = $pair_array[1];  
  19. }  
  20. }  
  21. return $pairs;  
  22. }  
  23. private function getHash($clear_password = '') {  
  24. if (!emptyempty($clear_password)) {  
  25. return base64_encode(sha1($clear_password, true));  
  26. else {  
  27. return false;  
  28. }  
  29. }  
  30. public function __construct($file) {  
  31. if (file_exists($file)) {  
  32. $this -> file = $file;  
  33. else {  
  34. die($file." doesn't exist.");  
  35. return false;  
  36. }  
  37. }  
  38. public function addUser($username = ''$clear_password = '') {  
  39. if (!emptyempty($username) && !emptyempty($clear_password)) {  
  40. $all = $this -> read();  
  41. if (!array_key_exists($username$all)) {  
  42. $all[$username] = $this -> getHash($clear_password);  
  43. $this -> write($all);  
  44. }  
  45. else {  
  46. return false;  
  47. }  
  48. }  
  49. public function deleteUser($username = '') {  
  50. $all = $this -> read();  
  51. if (array_key_exists($username$all)) {  
  52. unset($all[$username]);  
  53. $this -> write($all);  
  54. else {  
  55. return false;  
  56. }  
  57. }  
  58. public function doesUserExist($username = '') {  
  59. $all = $this -> read();  
  60. if (array_key_exists($username$all)) {  
  61. return true; //开源代码phpfensi.com 
  62. else {  
  63. return false;  
  64. }  
  65. }  
  66. public function getClearPassword($username) {  
  67. return strtolower(substr(sha1($username.$this -> salt), 4, 12));  
  68. }  
  69. }

Tags: linux解析 htpasswd文件

分享到: