1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
<?php
/**
***********************************************************************************************
* Klasse um htaccessFiles anzulegen
*
* @copyright 2004-2016 The Admidio Team
* @see http://www.admidio.org/
* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License v2.0 only
***********************************************************************************************
*/
/**
* @class Htaccess
* Diese Klasse dient dazu ein .htaccessFile zu erstellen.
* Ein Ordner kann ueber diese Klasse mit einem htaccess-File geschuetzt werden.
* Von aussen ist dann kan Zugriff mehr erlaubt.
*
* Das Objekt wird erzeugt durch Aufruf des Konstruktors und der Uebergabe des
* Ordnerspfades:
* $htaccess = new Htaccess($folderpath);
*
*
* The following functions are available:
*
* protectFolder() - Platziert ein htaccess-File im übergebenen Ordner
* unprotectFolder() - Löscht das htaccess-File im übergebenen Ordner
*/
class Htaccess
{
protected $folderPath;
/**
* @param string $folderPath
*/
public function __construct($folderPath)
{
$this->folderPath = $folderPath;
}
/**
* Schuetzt den uebergebenen Ordner
* @return bool Returns true if protection is enabled
*/
public function protectFolder()
{
if (is_dir($this->folderPath) && !is_file($this->folderPath.'/.htaccess') && is_writable($this->folderPath.'/.htaccess'))
{
$file = fopen($this->folderPath.'/.htaccess', 'w+');
if (!$file)
{
return false;
}
fwrite($file, "Order deny,allow\n");
fwrite($file, "Deny from all\n");
return fclose($file);
}
return true;
}
/**
* Entfernt den Ordnerschutz (loeschen der htaccessDatei)
* @return bool Returns true if protection is disabled
*/
public function unprotectFolder()
{
if (is_dir($this->folderPath) && is_file($this->folderPath.'/.htaccess'))
{
return @unlink($this->folderPath.'/.htaccess', 'w+');
}
return true;
}
}