Php Programming Code Examples Php > File Manipulation Code Examples Class that allows the PHP developer to create and manage UNIX like Class that allows the PHP developer to create and manage UNIX like password files suitable for use as Apache authentication password files. <? Function AccountCryptPassword($password,$salt) { if($salt== "") { srand(time()); $random=rand(); $itoa64= "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; $salt=substr($itoa64,$random % 64,1).substr($itoa64,($random/64) % 64,1); } return(crypt($password,$salt)); } class access_accounts { var $password_file= ""; var $accounts=array(); var $convert_to_lower_case=0; Function ReadAccounts($password_file) { global $php_errormsg; $passwd=@File($password_file); if(GetType($passwd)!= "array") return( "can not read password file \"$password_file\" ($php_errormsg)"); for($account=0,$accounts=array();$account<count($passwd);$account++) { if(($line=strtok($passwd[$account], "\n"))== "") $line=$passwd[$account]; if(($user=strtok($line, ":"))== "") return( "invalid user in line $account of password file \"$password_file\""); if($this->convert_to_lower_case) $user=strtolower($user); $accounts[$account][ "user"]= "$user"; $accounts[$account][ "password"]=strtok( ":"); } $this->accounts=$accounts; $this->password_file=$password_file; return( ""); } Function LookupAccount($user) { if($this->convert_to_lower_case) $user=strtolower($user); for($account=0;$account<count($this->accounts);$account++) { if($this->accounts[$account][ "user"]==$user) break; } return($account); } Function CheckPassword($user,$password) { if($user== "") return( "empty user"); if($password== "") return( "empty password"); if($this->convert_to_lower_case) { $user=strtolower($user); $password=strtolower($password); } if(($account=$this->LookupAccount($user))<count($this->accounts)) { if($this->accounts[$account][ "password"]== "*") return( "account was deleted"); if($this->accounts[$account][ "password"]==AccountCryptPassword($password,substr($this->accounts[$account] [ "password"],0,2))) return( ""); else return( "password does not match"); } return( "unknown user"); } Function AddAccessAccount($user,$password) { if($this->convert_to_lower_case) { $user=strtolower($user); $password=strtolower($password); } $account=count($this->accounts); $this->accounts[$account][ "user"]=$user; $this->accounts[$account][ "password"]=AccountCryptPassword($password, ""); return($account); } Function SaveAccessAccounts() { global $php_errormsg; if($this->password_file== "") return( "it was not defined the password file"); if(($file=@fopen($this->password_file, "w"))==0) return( "can not open password file \"$password_file\" ($php_errormsg)"); for($account=0;$account<count($this->accounts);$account++) { $user=$this->accounts[$account][ "user"]; if($this->convert_to_lower_case) $user=strtolower($user); if(fputs($file,sprintf( "%s:%s\n",$user,$this->accounts[$account][ "password"]))==0) return( "can not write to password file \"$password_file\" ($php_errormsg)"); } fclose($file); return( ""); } Function DeleteAccount($user) { if($this->convert_to_lower_case) $user=strtolower($user); if(($account=$this->LookupAccount($user))<count($this->accounts)) { if($this->accounts[$account][ "password"]!= "*") { $this->accounts[$account][ "password"]= "*"; return( ""); } else return( "account was already deleted"); } return( "unknown user"); } Function ModifyAccessAccount($user,$password) { if($this->convert_to_lower_case) { $user=strtolower($user); $password=strtolower($password); } if(($account=$this->LookupAccount($user))>=count($this->accounts)) return( "unknown user"); $this->accounts[$account][ "password"]=AccountCryptPassword($password, ""); return( ""); } }; ?>