Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // Usage
- // $htpasswd = new htpasswd('.htpasswd');
- // path to your .htpasswd file
- // Usage Example
- // if($htpasswd->user_update($user,$password))
- // {
- // echo "Password updated successfully for '".$user."'\n";
- // }
- // else
- // {
- // echo "Password updated failed for '".$user."'\n";
- // }
- // Save as .htpasswd.php
- class htpasswd {
- var $fp;
- var $filename;
- function htpasswd($filename) {
- @$this->fp = fopen($filename,'r+') or die('Invalid file name');
- $this->filename = $filename;
- }
- function user_exists($username) {
- rewind($this->fp);
- while(!feof($this->fp) && trim($lusername = array_shift(explode(":",$line = rtrim(fgets($this->fp)))))) {
- if($lusername == $username)
- return 1;
- }
- return 0;
- }
- function user_add($username,$password) {
- if($this->user_exists($username))
- return false;
- fseek($this->fp,0,SEEK_END);
- fwrite($this->fp,$username.':'.crypt($password,substr(str_replace('+','.',base64_encode(pack('N4', mt_rand(),mt_rand(),mt_rand(),mt_rand()))),0,22))."\n");
- return true;
- }
- function user_delete($username) {
- $data = '';
- rewind($this->fp);
- while(!feof($this->fp) && trim($lusername = array_shift(explode(":",$line = rtrim(fgets($this->fp)))))) {
- if(!trim($line))
- break;
- if($lusername != $username)
- $data .= $line."\n";
- }
- $this->fp = fopen($this->filename,'w');
- fwrite($this->fp,rtrim($data).(trim($data) ? "\n" : ''));
- fclose($this->fp);
- $this->fp = fopen($this->filename,'r+');
- return true;
- }
- function user_update($username,$password) {
- rewind($this->fp);
- while(!feof($this->fp) && trim($lusername = array_shift(explode(":",$line = rtrim(fgets($this->fp)))))) {
- if($lusername == $username) {
- fseek($this->fp,(-15 - strlen($username)),SEEK_CUR);
- fwrite($this->fp,$username.':'.crypt($password,substr(str_replace('+','.',base64_encode(pack('N4', mt_rand(),mt_rand(),mt_rand(),mt_rand()))),0,22))."\n");
- return true;
- }
- }
- return false;
- }
- }
- ?>
Add Comment
Please, Sign In to add comment