:: Anbieterverzeichnis :: Globale Branchen
:: 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!
|
|
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() > 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" );
?>
|

|
|
|
|
|


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