| 
				 
 
 
 
    
    
    
    
 
 
 
 
  
 
	
	
    	:: Anbieterverzeichnis ::
        Globale Branchen
        Informieren Sie sich über ausgewählte 
                        Unternehmen im 
                        Anbieterverzeichnis von SELFPHP   
                        
  
     
	
      
	
	
    	:: SELFPHP Forum ::
        Fragen rund um die Themen PHP? In über 
                        120.000 Beiträgen finden Sie sicher die passende 
                        Antwort!   
	     
	
      
	
	
    	 :: Newsletter ::
        Abonnieren Sie hier den kostenlosen 
                        SELFPHP Newsletter!
 
 
   
	    
	
      
	
	
    	:: Qozido ::
        Die Bilderverwaltung mit Logbuch für 
                        Taucher und Schnorchler.    
	     
	
                           
 | 
  
    
      |   | 
      
        
          htaccess Manager Class   | 
         
                           
         
         
               
        
          
            
            	
 
  Beispielaufgabe
  htaccess Manager Class
 
 
  
Beschreibung
  Bei diesem Code-Snippet stellen wir Ihnen eine PHP5 Klasse vor, mit der Sie komfortabel einen Verzeichnisschutz mittels htaccess erstellen können. Die Klasse ist so konzipiert, dass sie htaccess- oder htpasswd-Dateien neu erstellen kann oder in vorhandenen htpasswd-Dateien User hinzufügen bzw. löschen kann. Weiterhin besteht die Möglichkeit entweder auf eine zentrale htpasswd-Datei zuzugreifen oder für jedes Verzeichnis eine eigene Datei erstellen zu lassen. Bei den untenstehenden Beispielen, sehen Sie den Umgang mit dieser Klasse.
 
 
  
<?php
 
 /**
  * htaccessManager (The SELFPHP htaccessManager Class)
  * 
  * This Class managed htaccess auth.
  *
  * @package htaccessManager
  * @author Damir Enseleit
  * @copyright 2009, SELFPHP OHG
  * @license SELFPHP-BUSINESS-LICENSE
  * @version 1.0.0
  * @link http://www.selfphp.de
  * 
  */
 
 class htaccessManager {
     
     /**
      * @var resource Resource htaccess Datei
      */
     private $fp_htFile         = ""; 
     
     /**
      * @var resource Resource htpasswd Datei
      */
     private $fp_pwFile         = ""; 
     
     /**
      * @var string Pfad zur htaccess Datei
      */
     private $filenameHt        = "";
     
     /**
      * @var string Pfad zur htpasswd Datei
      */
     private $filenamePw        = ""; 
     
     
     /**
      * Constructor 
      * 
      * @param    string    $htFile        Pfad zur htacess Datei
      * 
      * @param    string    $pwFile        Pfad zur htpasswd Datei
      * 
      */
     function __construct( $htFile = NULL, $pwFile = NULL) {
         
         if ( $htFile != NULL )
             $this->fp_htFile = fopen ( $htFile, "r+" );
             
         if ( $pwFile != NULL )
             $this->fp_pwFile = fopen ( $pwFile, "r+" );
             
         $this->filenameHt = $htFile;
         $this->filenamePw = $pwFile;        
         
     }
     
     /**
      * Liefert die Größe der htaccess Datei
      * 
      * @return    mixed    Die Groesse der Datei oder im Fehlerfall false
      */
     public function getHtFileSize() 
     {
         
         if ( $this->filenameHt != NULL ) {
             if ( file_exists( $this->filenameHt ) ) {
                 return ( filesize( $this->filenameHt ) );
             }
         }
             
         return false;
         
     }
     
     /**
      * Liefert die Größe der htpasswd Datei
      * 
      * @return    mixed    Die Groesse der Datei oder im Fehlerfall false
      */
     public function getPwFileSize() 
     {
         
         if ( $this->filenamePw != NULL ) {
             if ( file_exists( $this->filenamePw ) ) {
                 return ( filesize( $this->filenamePw ) );
             }
         }
             
         return false;
         
     }
     
     /**
      * Fügt einen neuen User der htpasswd-Datei hinzu
      * 
      * @param    string    $user        Username
      * @param    string    $passwd        Passwort 
      * 
      * @return    boolean                True im Erfolgsfall, false im Fehlerfall
      */
     public function addNewUser ( $user, $passwd )
     {
         
         if ( !$this->fp_pwFile ) 
             return false;
         
         rewind( $this->fp_pwFile );
         
         if ( $this->getPwFileSize() > 0 )
             $userLoad = fread( $this->fp_pwFile, $this->getPwFileSize() );
          
         $userLoad .= $user . ':' . crypt($passwd) . "\n";
          
         $this->fp_pwFile = fopen ( $this->filenamePw, "w+" );
         
          if ( !fwrite( $this->fp_pwFile, $userLoad ) ) 
             return false;
             
         return true;
          
     }
     
     /**
      * Löscht einen bestehenden User aus der htpasswd-Datei
      * 
      * @param    string    $user        Der zu löschende Username
      * 
      * @return    boolean                True im Erfolgsfall, false im Fehlerfall
      */
     public function deleteUser ( $user )
     {
         
         if ( !$this->fp_pwFile ) 
             return false;
         
         rewind( $this->fp_pwFile );
         
         if ( $this->getPwFileSize() > 0 ) {
             while ( ($data = fgetcsv ( $this->fp_pwFile, 500, ":" ) ) !== FALSE ) {
                 if ( $data[0] != $user){
                     $userLoad .= $data[0] . ':' . $data[1] . "\n";
                 }
             }
         }
                      
         $this->fp_pwFile = fopen ( $this->filenamePw, "w+" );
         
          if ( !fwrite( $this->fp_pwFile, $userLoad ) ) 
             return false;
             
         return true;
          
     }
     
     /**
      * Neue htacess Datei erstellen
      * 
      * @param    string    $AuthName    Titel der dem Besucher angezeigt wird
      * @param    string    $htFile        Pfad zur htacess Datei
      * @param    string    $pwFile        Pfad zur htpasswd Datei
      * 
      * @return    boolean                True im Erfolgsfall, false im Fehlerfall
      */
     public function createNewHtaccess ( $AuthName , $htFile = NULL, $pwFile = NULL ) {
         
         if ( $htFile == NULL )
             $htFile = dirname(__FILE__) . '/.htaccess';
             
         if ( $pwFile == NULL )
             $pwFile = dirname(__FILE__) . '/.htpasswd';
             
                     
         $insideFile = 'AuthType Basic' . "\n";
         $insideFile .= 'AuthName "' . $AuthName . '"' . "\n";
         $insideFile .= 'AuthUserFile ' . $pwFile . "\n";
         $insideFile .= 'require valid-user';
         
         $this->fp_htFile = fopen ( $htFile, "w+" );
         
         if ( !fwrite( $this->fp_htFile, $insideFile ) ) 
             return false;
             
         return true;
         
     }
     
     /**
      * Neue htpasswd Datei erstellen
      * 
      * @param    string    $pwFile        Pfad zur htpasswd Datei
      * 
      * @return    boolean                True im Erfolgsfall, false im Fehlerfall
      */
     public function createNewHtpasswd ( $pwFile = NULL ) {
         
         if ( $pwFile == NULL )
             $pwFile = dirname(__FILE__) . '/.htpasswd';
             
         $this->fp_pwFile = fopen ( $pwFile, "w+" );
         
         if ( !$this->fp_pwFile ) 
             return false;
             
         return true;        
             
     }
     
     /**
      * 
      */
     function __destruct() {
         
         if ( $this->fp_htFile != FALSE )
             fclose($this->fp_htFile);
         
         if ( $this->fp_pwFile != FALSE )
             fclose($this->fp_pwFile);
     
     }
 }
 
 ?>
 |  
 
 
  
Anwendungsbeispiel
 
 
<?php
 include("htaccessManager.inc.php");
 
 // Erstellt eine neue htaccess- und htpasswd Datei
 // im aktuellen Verzeichnis
 /*
 $hta = new htaccessManager();
 $hta -> createNewHtaccess( "Geschützte Sektion" );
 $hta -> createNewHtpasswd( );
 $hta -> addNewUser( "Damir", "testpasswort" );
 */
 
 
 // Öffnet eine bestehende htpasswd Datei und fügt User hinzu
 /*
 $hta = new htaccessManager( NULL, dirname(__FILE__) . '/.htpasswd');
 $hta -> addNewUser( "Damir2", "test" );
 */
 
 // Öffnet eine bestehende htpasswd Datei und löscht einen bestehenden User
 $hta = new htaccessManager( NULL, dirname(__FILE__) . '/.htpasswd');
 $hta -> deleteUser( "Damir2" );
 ?>
 |  
 
 
 
  
 
 
  | 
           
          
             | 
           
          | 
		  | 
       
   
   
   	             
                  | 
  
			  
			      
                
                
             
            
                   
                                  |