Location: PHPKode > scripts > php htaccess class > php-htaccess-class/htaccess.class.php
<?

/**
* Class for handling htaccess of Apache
* @author    Sven Wagener <hide@address.com>
* @copyright Intertribe - Internetservices Germany
* @include 	 Funktion:_include_
*/

class htaccess{
    var $fHtaccess=""; // path and filename for htaccess file
    var $fHtgroup="";  // path and filename for htgroup file
    var $fPasswd="";   // path and filename for passwd file
    
    var $authType="Basic"; // Default authentification type
    var $authName="Internal area"; // Default authentification name

    /**
	* Initialising class htaccess
	*/
    function htaccess(){
    }

	/**
	* Sets the filename and path of .htaccess to work with
	* @param string	$filename    the name of htaccess file
	*/
    function setFHtaccess($filename){
        $this->fHtaccess=$filename;
    }
    
	/**
	* Sets the filename and path of the htgroup file for the htaccess file
	* @param string	$filename    the name of htgroup file
	*/
    function setFHtgroup($filename){
        $this->fHtgroup=$filename;
    }
    
 	/**
	* Sets the filename and path of the password file for the htaccess file
	* @param string	$filename    the name of htgroup file
	*/
    function setFPasswd($filename){
        $this->fPasswd=$filename;
    }

	/**
	* Adds a user to the password file
	* @param string $username     Username
    * @param string $password     Password for Username
    * @param string $group        Groupname for User (optional)
    * @return boolean $created         Returns true if user have been created otherwise false
  	*/
    function addUser($username,$password,$group){
        // checking if user already exists
        $file=@fopen($this->fPasswd,"r");
        $isAlready=false;
        while($line=@fgets($file,200)){
            $lineArr=explode(":",$line);
            if($username==$lineArr[0]){
                $isAlready=true;
             }
        }
        fclose($file);
        if($isAlready==false){
            $file=fopen($this->fPasswd,"a");

            $password=crypt($password);
            $newLine=$username.":".$password;
            fputs($file,$newLine."\n");
            fclose($file);
            return true;
        }else{
            return false;
        }
    }

	/**
	* Adds a group to the htgroup file
	* @param string $groupname     Groupname
  	*/
    function addGroup($groupname){
        $file=fopen($this->fHtgroup,"a");
        fclose($file);
    }

	/**
	* Deletes a user in the password file
	* @param string $username     Username to delete
    * @return boolean $deleted    Returns true if user have been deleted otherwise false
  	*/
    function delUser($username){
        // Reading names from file
        $file=fopen($path.$this->fPasswd,"r");
        $i=0;
        while($line=fgets($file,200)){
            $lineArr=explode(":",$line);
            if($username!=$lineArr[0]){
                $newUserlist[$i][0]=$lineArr[0];
                $newUserlist[$i][1]=$lineArr[1];
                $i++;
            }else{
                $deleted=true;
            }
        }
        fclose($file);

        // Writing names back to file (without the user to delete)
        $file=fopen($path.$this->fPasswd,"w");
        for($i=0;$i<count($newUserlist);$i++){
            fputs($file,$newUserlist[$i][0].":".$newUserlist[$i][1]);
        }
        fclose($file);
        
        if($deleted==true){
            return true;
        }else{
            return false;
        }
    }
    
   	/**
	* Returns an array of all users in a password file
 	* @return array $users         All usernames of a password file in an array
    * @see setFPasswd()
  	*/
    function getUsers(){
    }
    
	/**
	* Sets a password to the given username
	* @param string $username     The name of the User for changing password
    * @param string $password     New Password for the User
    * @return boolean $isSet      Returns true if password have been set
  	*/
    function setPasswd($username,$new_password){
        // Reading names from file
        $newUserlist="";
        
        $file=fopen($this->fPasswd,"r");
        $x=0;
        for($i=0;$line=fgets($file,200);$i++){
            $lineArr=explode(":",$line);
            if($username!=$lineArr[0] && $lineArr[0]!="" && $lineArr[1]!=""){
                $newUserlist[$i][0]=$lineArr[0];
                $newUserlist[$i][1]=$lineArr[1];
                $x++;
            }else if($lineArr[0]!="" && $lineArr[1]!=""){
                $newUserlist[$i][0]=$lineArr[0];
                $newUserlist[$i][1]=crypt($new_password)."\n";
                $isSet=true;
                $x++;
            }
        }

        fclose($file);

        unlink($this->fPasswd);

        /// Writing names back to file (with new password)
        $file=fopen($this->fPasswd,"w");
        for($i=0;$i<count($newUserlist);$i++){
            $content=$newUserlist[$i][0].":".$newUserlist[$i][1];
            fputs($file,$content);
        }
        fclose($file);

        if($isSet==true){
            return true;
        }else{
            return false;
        }
    }

	/**
	* Sets the Authentification type for Login
    * @param string $authtype     Authentification type as string
  	*/
    function setAuthType($authtype){
        $this->authType=$authtype;
    }

	/**
	* Sets the Authentification Name (Name of the login area)
    * @param string $authname     Name of the login area
  	*/
    function setAuthName($authname){
        $this->authName=$authname;
    }

	/**
	* Writes the htaccess file to the given Directory and protects it
    * @param string $path          Path name to protect
    * @see setFhtaccess()
  	*/
    function addLogin(){
       $file=fopen($this->fHtaccess,"w+");
       fputs($file,"Order allow,deny\n");
       fputs($file,"Allow from all\n");
       fputs($file,"AuthType        ".$this->authType."\n");
       fputs($file,"AuthUserFile    ".$this->fPasswd."\n\n");
       fputs($file,"AuthName        \"".$this->authName."\"\n");
       fputs($file,"require valid-user\n");
       fclose($file);
    }

    /**
	* Deletes the protection of the given directory
    * @param string $path          Path name to delete protection
    * @see setFhtaccess()
  	*/
    function delLogin(){
        unlink($this->fHtaccess);
    }
}
?>
Return current item: php htaccess class