Benutzer-Werkzeuge

Webseiten-Werkzeuge


php:htaccess

Dies ist eine alte Version des Dokuments!


Verzeichnisschutz durch htaccess

.htaccess
AuthType Basic
AuthName "Streng geheimer Bereich"
AuthUserFile E:\xampp\htdocs\dev\pwd.txt
Require valid-user
AuthUserFile.php
<?php
 
class AuthUserFile
{
    private $filename;
    private $lines = array();
    private $write = false;
 
    public function __construct( $filename ) {
 
        if( !empty( $filename ) ) {
 
            $this->filename = $filename;
 
            if( file_exists( $filename ) ) {
 
                $fp = fopen( $filename, 'r' );
 
                while( !feof ( $fp ) ) {
 
                    $line = fgets( $fp );
 
                    if( !empty( $line ) )
                        $this->lines[] = $line;
                }
 
                fclose( $fp );
            }
        }
        else
            throw new Exception( "filename is empty" );
    }
 
    public function addUser( $username, $password ) {
 
        if( !empty( $username ) ) {
 
            if( $this->getIndex( $username ) == -1 ) {
 
                $line[0] = $username;
                $line[1] = password_hash( $password, PASSWORD_BCRYPT );
                $nl = chr(13) . chr(10); // new line
                $this->lines[] = implode( ":", $line ) . $nl;
                $this->write = true;
                return true;
            }
            else
                return false;
        }
        else
            return false;
    }
 
    public function delUser($username ) {
 
        $index = $this->getIndex( $username ); // get index from username
 
        if( $index > -1 ) { // found username
 
            unset( $this->lines[$index] ); // delete entry from array
            $this->write = true;
            return true;
        }
        else
            return false;
    }
 
    public function __destruct() {
 
        if( $this->write ) {
 
            if( count( $this->lines ) > 0 ) {
 
                $fp = fopen( $this->filename, "w" );
 
                foreach( $this->lines as $line )
                    fputs( $fp, $line );
 
                fclose( $fp );
            }
        }
    }
 
    private function getIndex( $username ) {
 
        if( count( $this->lines ) > 0 ) {
 
            foreach( $this->lines as $index=>$line ) {
 
                $data = explode( ":", $line );
 
                if( $data[0] == $username )
                    return $index;
            }
        }
 
        return -1; // username not found
    }
}

Anwendungsbeispiel:

$htaccess = new AuthUserFile( "E:\\xampp\\htdocs\\dev\\pwd.txt" );
 
$htaccess->addUser( "Jens", "PasswortVonJens" );
$htaccess->addUser( "Hubert", "PasswortVonHubert" );
$htaccess->addUser( "Franzi", "PasswortVonFranz" );
 
$htaccess->delUser( "Hubert" );
php/htaccess.1461265532.txt.gz · Zuletzt geändert: 2016/04/21 00:00 (Externe Bearbeitung)