<? 

// Arquivo pwfile.req 


class PwFile { 

    var $fp;    var $filename; 
     

     
    function PwFile($filename)
    { 
        $this->fp = fopen ($filename,"r+"); 
        $this->filename = $filename; 
    } 
        
    function existsUser ($usr_ID) 
    { 
    rewind($this->fp);
    while (feof($this->fp) == 0) 
    { 
        $line = chop(fgets($this->fp,1000));]
              $arr = split(":", $line); 
             if ($arr[0] == $usr_ID) 
              { 
              return 1; 
              } 
              else 
              { 
              return 0;
              } 
          } 
    } 
     
    function getFileSize() 
    { 
        return (filesize($this->filename)); 
    } 

    function write_temp ($contents) 
    { 
        echo "<pre>$contents</pre>"; 
      $temp_filename = tempnam ("/tmp", "php_"); 
      echo "<br>$temp_filename<br>"; 
         $temp_fp = fopen($temp_filename, w); 
         fwrite($temp_fp, $contents); 
         fclose($temp_fp); 
         fclose($this->fp); 
         copy ($temp_filename, $this->filename); 
         $this->fp = fopen($this->filename, "r+"); 
         //unlink($temp_filename); 
    } 
      
    function addUser ($usr_ID, $usr_passwd) 
    { 
    rewind($this->fp); 
    $contents = fread($this->fp, $this->getFileSize()); 
         echo "<pre>bevor $contents</pre>"; 
         $contents .= "$usr_ID:".crypt($usr_passwd)."\n"; 
         echo "<pre>danach $contents</pre>"; 
         $this->write_temp($contents); 
    } 
     
    function deleteUser ($usr_ID) 
    { 
    $contents = ""; 
    rewind($this->fp); 
    while (feof($this->fp) == 0) 
    { 
        $line = ""; 
        $line = chop(fgets($this->fp,1000)); 
              $arr = split(":", $line); 
              if ($arr[0] != $usr_ID) 
              { 
                  echo $arr[0] ." ist nicht gleich ". $usr_ID; 
              $contents .= $line . "\n"; 
              } 
          } 
          echo "<hr>$contents<hr>"; 
          $contents = chop ($contents); 
          $contents .= "\n"; // kind a tricky 
          $this->write_temp($contents); 
           
    } 
     
    function updateUser ($usr_ID, $usr_passwd) 
    { 
        $this->deleteUser($usr_ID); 
        $this->addUser($usr_ID,$usr_passwd); 
    } 
} 
?>

Exemplo:

<? 
    echo "Teste de Arquivo de manipulacao do htpasswd"; 
    require("pwfile.req"); 
    $pw = new PwFile("/var/cgi-data/passwd");     
    $usr_ID = "vipmaster"; 
    $usr_passwd = "vip2003";     
    //$pw->addUser($usr_ID, $usr_passwd); 
    //$pw->deleteUser($usr_ID); 
    $pw->updateUser($usr_ID, $usr_passwd); 
?>