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