Teil von  SELFPHP   Teil von  Code Snippets / PHP / Dateisystem
Professional CronJob-Service

Suche

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP?
In über 130.000 Beiträgen finden Sie sicher die passende Antwort!  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 
 
htaccess Manager Class

SELFPHP ist Shopware Solution Partner
Shopware ist ein vielfach ausgezeichnetes Onlineshop-System der shopware AG, das auf PHP. Zend Framework und SQL basiert.
SELFPHP unterstützt Sie als Shopware Solution Partner bei der Konzeption, Programmierung und Realisierung Ihres Onlineshops und passt Shopware bei Bedarf an Ihre Unternehmensbedürfnisse an. Weitere Informationen




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 2010, 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

Pixel X weitere Premium-Partner
 

:: SELFPHP Sponsor ::

Kaspersky Labs GmbH weitere Sponsoren
 


:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Webhosting/Serverlösungen

Suchen Sie den für Sie passenden IT-Dienstleister für Ihr Webhosting-Paket oder Ihre Serverlösung?

Sie sind nur ein paar Klicks davon entfernt!


 

Ausgewählter Tipp im Bereich PHP-Skripte


Verzeichnis rekursiv kopieren

Weitere interessante Beispiele aus dem SELFPHP Kochbuch finden Sie im Bereich PHP-Skripte
 

SELFPHP Code Snippet


Pfingstsonntag für ein bestimmtes Jahr ermitteln

Weitere interessante Code Snippets finden Sie auf SELFPHP im Bereich PHP Code Snippets
 
© 2001-2024 E-Mail SELFPHP Inh. Damir Enseleit, info@selfphp.deImpressumKontakt