Teil von  SELFPHP   Teil von  Code Snippets / PHP / Dateisystem
  +++ SELFPHP CronJob-Service :: Jetzt auch als Professional-Version verfügbar! +++



:: 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!

Vorname: 
Name:
E-Mail:
 
 

:: 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() > )
            
$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() > ) {
            while ( (
$data fgetcsv $this->fp_pwFile500":" ) ) !== 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 htaccessManagerNULLdirname(__FILE__) . '/.htpasswd');
$hta -> deleteUser"Damir2" );
?>






 




:: Premium-Partner ::

Webhosting/Serverlösungen


Premium-Partner MECO Systemhaus GmbH & Co. KG
Premium-Partner PSW GROUP GmbH & Co. KG
Premium-Partner BPI-Systeme
Premium-Partner Pixel X
Premium-Partner
 

:: SELFPHP Sponsoren ::


Microsoft Deutschland GmbH
twosteps.net - ...Premium-Webhosting
Sedo - Bei uns wird PHP großgeschrieben
hostfactory.ch - OptimaNet Schweiz AG
ZEND - The PHP Company
Kaspersky Labs
HighText iBusiness
SELFPHP Sponsoren
 

Qozido


© 2001-2009 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt