<? // 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); ?>