:: 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" );
?>
|
|
|
|
|
|
|