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( "");
}
};
?>