FrankH: Erstellung von Verzeichnis mit .htaccess und htpassword mit php

Beitrag lesen

Ich möchte gerne einen FTP innerhalb einer Homepage integrieren.
Benötigte Features:

  • Verzeichnis (Ordner) anlegen
  • Zugriffsschutz anlegen (.htaccess und .htpasswd)
  • Files drin ablegen

Weiter:

  • Wenn man auf das Verzeichnis geht, sollen die Inhalte angezeigt werden.

Ziel: Einen Download für einen Kunden bereit stellen, für den man kein FTP-Programm
benötigt!

Folgende Probleme sind aufgetreten:
1. das Verzeichnis kann nach Erstellung nicht mehr gelöscht werden
2. ich kann keine Dateien darin per FTP einfügen

Was ich jetzt nicht weiss:
warum hat meine .htaccess Datei nach dem Erstellen den wert adfr(0644) statt adfrw(0644)
und den Besitzer/Gruppe 33 33 statt 1128 ...

  
  
$Unterverzeichnis     =   'files';  
$rootVerzeichnis      =   str_replace("isoonline/",'',$_SERVER["DOCUMENT_ROOT"]);  
$ZielVerzeichnis      =   p_leer($_REQEUST[$ZielVerzeichnis],$rootVerzeichnis.$Unterverzeichnis);  
  
  
if($_REQUEST['do'] == '1' ){  
  //Verzeichnis erstellen  
  echo "<br>Dieses Verzeichnis wurde erstellt: ";  
  echo $neueVerzeichnisUrl   =   "$ZielVerzeichnis/$_REQUEST[neuesVerzeichnis]";  
  echo "<br>";  
  
  mkdir ($neueVerzeichnisUrl ,0755 );  
  
   $testText=  
    'Ein kleiner Versuch';  
  
    $testDateiName = "test.htm";  
    $testDatei = fopen("$neueVerzeichnisUrl/$testDateiName","w+");  
    fwrite($testDatei, $testText);  
    fclose($testDatei);  
  
  //htaccess script!  
  function make_htaccess($user, $authName, $passwdFile="")  
{  
  
    if(empty($passwdFile))  
        $passwdFile=dirname(__FILE__);  
  
    $access .=    '# Datei für Verzeichnis /bilder' . "\n";  
    $access .=    'FancyIndexing On' . "\n";  
    $access .=    'AddDescription "HTML-Datei, anzeigbar" .htm .html' . "\n";  
    $access .=    'AddDescription "GIF-Grafik, anzeigbar" .gif' . "\n";  
    $access .=    'AddDescription "JPEG-Grafik, anzeigbar" .jpg' . "\n";  
    $access .=    'AddDescription "ZIP-Archiv, downloadbar" .zip' . "\n";  
    $access .=    'AuthType Basic' . "\n";  
    $access .=    'AuthName "' . $authName . '"' . "\n";  
    $access .=    'AuthUserFile ' . $passwdFile . '/.htpasswd' . "\n";  
    $access .=    'require user ' . $user . "\n";  
    //$handle = fopen(".htaccess","w");  
    //$htaccssName = ".htaccess";  
    $handle = fopen($passwdFile . '/.htaccess',"w+");  
    fputs($handle,$access);  
    fclose($handle);  
  
}  
  
  
function make_htpasswd($user, $passwd, $passwdFile="")  
{  
  
    if(empty($passwdFile))  
        $passwdFile=dirname(__FILE__);  
  
    $passwd = crypt($passwd);  
    $htpasswd = $user . ':' . $passwd . "\n";  
  
    $handle = fopen($passwdFile . '/.htpasswd',"w+");  
    fputs($handle,$htpasswd);  
    fclose($handle);  
  
}  
  
// Den Benutzernamen für den Login  
$user   = $_REQUEST[ftpUser];  
  
// Das Passwort für den Login  
$passwd = $_REQUEST[ftpPassword];  
  
// Der Text, der angezeigt wird wenn das Login-Fenster geöffnet wird.  
$authName = 'Meine geschütztes Verzeichnis';  
  
//Den kompletten Pfad zu der Datei .htpasswd, ohne abschließenden Slash (/)  
$passwdFile = "$neueVerzeichnisUrl";  
  
  
make_htaccess($user, $authName, $passwdFile);  
make_htpasswd($user, $passwd, $passwdFile);  
  
// unlink("crypt.php");  
  
  
  
  
  /*  
  //htaccess erstellen  
    $htaccessText=  
    "AuthUserFile $rootVerzeichnis/$Unterverzeichnis//.htpasswd".  
    "AuthGroupFile /dev/null".  
    "AuthName ByPassword".  
    "AuthType Basic".  
    "require valid-user";  
  
    $htaccssName = ".htaccess";  
    $htaccess = fopen("$neueVerzeichnisUrl/$htaccssName","w+");  
    fwrite($htaccess, $htaccessText);  
    fclose($htaccess);  
  
    //htpasswd erstellen  
    $htpasswdText=  
    "$_REQUEST[ftpUser]".  
    ":".  
    crypt($_REQUEST[ftpPassword],substr($_REQUEST[ftpPassword],0,2));  
  
    $htpasswdName = ".htpasswd";  
    $htpasswd = fopen("$neueVerzeichnisUrl/$htpasswdName","w+");  
    fwrite($htpasswd, $htpasswdText);  
    fclose($htpasswd);  
   */  
    //Testdatei erstellen  
        //htpasswd erstellen  
    $testText=  
    'Ein kleiner Versuch';  
  
    $testDateiName = "test.htm";  
    $testDatei = fopen("$neueVerzeichnisUrl/$testDateiName","w+");  
    fwrite($testDatei, $testText);  
    fclose($testDatei);  
  
}  
  
//Vorhandene Verzeichnisse ausgeben:  
echo "<p>Diese Verzeichnisse bestehen bereits in diesem Verzeichnis:<br>";  
$offen = opendir("$ZielVerzeichnis");  
      while ($file = readdir ($offen))  
      {  
        echo "<li><a href=\"$_SERVER[PHP_SELF]?ZielVerzeichnis=$ZielVerzeichnis/$file\">".$file."</a>  
                  <br>  
                  <a href=\"http://www.promicron.org/files/$file\">".$file.'</a>  
              </li>';  
      }  
      closedir($offen);  
?>