Ftp Unterordner mit Passwort sichern
#1
geschrieben 03. März 2009 - 19:00
weiß jemand wie ich bestimmte Unterordner auf meinem Webspace mit einem Passwort sichern kann? Ideal wäre es, wenn ich den Usernamen und das Passwort aus einer Tabelle mit MySql auslesen kann.
Über google bin ich darauf gestoßen, dass das ganze mit einer .htaccess Datei irgendwie funktionieren soll? Kann mir das jemand kurz erklären?
Vielen Dank schon einmal im voraus.
Viele Grüße smite
Anzeige
#2
geschrieben 03. März 2009 - 20:06
Es gibt 2 Dateien, einmal die .htacces und einmal die .htpasswd.
In der ersten Datei werden sämtliche Optionen festgelegt, in der zweiten Datei wird der Benutzername und das Passwort festgelegt.
MySQL Datenbanken werden nicht gebraucht.
Die beiden Dateien werden dann im Ordner gespeichert, der später passwortgeschützt sein soll.
Kann hier folgendes Programm empfehlen:
http://www.wintotal..../?rb=26&id=3272
Gruß TI-User
#3
geschrieben 03. März 2009 - 22:34
Ich habe zwar trotzdem noch eine Frage, und zwar was muss ich genau in dem Generator als PW-Dateipfad angeben?
Ich verwende xampp, welches bei mir lokal auf dem PC installiert ist.
Viele Grüße smite
#4
geschrieben 04. März 2009 - 17:25
C:/...
Bei mir gings nie wenn ich das Passwort verschlüsselt hatte, also die .htpasswd öffnen und das Passwort in unverschlüsselter Form reinschreiben.
user:passwort
auf dem FTP ist es immer unterschiedlich, bei meiner Anmeldung auf einem Webspace stand der Home Pfad dabei.
Gruß TI-User
#5
geschrieben 04. März 2009 - 17:33
Gruß smite
#6
geschrieben 04. März 2009 - 17:38
#7
geschrieben 10. März 2009 - 21:58
ich habe es jetzt noch einmal probiert, aber irgendwie wollte Xampp erst nicht so wie ich wollte.
In dem Verzeichnis htdocs/forbidden gibt es jedoch die benötigten Dateien, welche ich an meine Bedürfnisse anpassen konnte.
Vielen Dank noch einmal für die Hilfe

Gruß smite
#8
geschrieben 19. März 2009 - 20:49
Falls jemand daran Interesse hat, kann ich sie hier auch noch einmal hochladen.
Gruß smite
#9
geschrieben 19. März 2009 - 21:05
Dann bräuchte ich die Passwörter nicht immer über FTP ändern.
#10
geschrieben 19. März 2009 - 21:26
.htaccess
-Eigenschaften / Angabe des zu sichernden Ordners.
.htpasswd
-Speichern der Benutzer + der Passwörter.
eingabe-schreiben.html
-NUR die Eingabe eines neuen Benutzers + des Passwortes
schreiben.php
-Schreiben von neuen Benutzern in die Datei .htpasswd
eingabe-loeschen.php
-Eingabe der Benutzer welche gelöscht werden sollen
loeschen.php
-Durchführen des löschens der Benutzer welche in der Datei eingabe loeschen.php angegeben wurden.
Benutzer anzeigen.php
-Anzeigen der Benutzer welche registriert sind.
Eingabe-Schreiben.html:
<html>
<!-- Neuen Benutzer in die Datei .passwd eintragen. <br />-->
<form name="user" method="post" action="schreiben.php">
<table>
<tr>
<td>Benutzername: </td>
<td><input type="text" name="user" id="user" /></td>
</tr>
<tr>
<td>Passwort: </td>
<td><input type="password" name="pass" id="user" /></td>
</tr>
</table>
<input type="submit" name="senden" id="senden" value="Senden">
</form>
</html>
schreiben.php:
<?php
//Ab hier wird die Datei .htpasswd eingelesen und in User + PW zerlegt
$file = ".htpasswd";
if (!$puffer = fopen($file,"r"))
{
echo "Fehler beim öffnen der Datei.";
}
if (!$inhalt = fread($puffer, filesize($file)))
{
echo "Fehler beim Lesen.";
}
else
{
//echo "$inhalt";
//hier ist die eigentliche Ausgabe
}
fclose($puffer);
//Ermitteln der vorhandenen Eintraege in der Datei
//ueberprueft wird die Anzahl der : in der Datei
$anzwoerter=substr_count( $inhalt, ":");
$tok[0] = strtok ($inhalt,"\r\n");
//$j=Anzahl der Woerter(Doppelpunkte des Strings)
for ($i=1; $i<$anzwoerter; $i++)
{
$tok[$i] = strtok ("\r\n");
}
//Erstellen von zwei Arrays fuer den Benutzernamen und das Passwort der index ist fuer jeden Benutzer gleich
//$benutzer[5] ist der Benutzer fuer $passwort[5]
for ($i=0; $i<$anzwoerter; $i++)
{
$benutzer[$i] = strtok ($tok[$i],":");
$passwort[$i] = strtok ("\r\n");
//echo "Benutzer $i $benutzer[$i]<br>";
//echo "Passwort $i $passwort[$i]<br>";
}
//Ende des Skriptes zum Lesen und zerlegen der Strings
/*----------------------------------------------------------------------------*/
//Start des Skriptes zum Schreiben in die Datei / hinzufuegen eines neuen Benutzers
//Werte werden von dem html-Formular uebergeben
$user=$_POST["user"];
$pass=$_POST["pass"];
$pruefe=1;
//1=alles OK; 0=Benutzername existiert bereits;
//ueberpruefen ob der eingegebene Benutzername schon existiert
for ($i=0; $i<$anzwoerter && $pruefe==1; $i++)
{
if ($user==$benutzer[$i])
{
echo "Benutzername existiert bereits.<br>";
$pruefe=0;
}
}
if ($user!="" && $pass!="")
{
if ($pruefe==1)
{
$data = "$user:$pass\r\n";
$Datei= ".htpasswd";
if (!$puffer2 = fopen($Datei,"a"))
{
echo "Fehler beim oeffnen der Datei.";
}
if (!fwrite($puffer2, $data))
{
echo "Fehler beim Schreiben.";
}
else
{
echo "Der folgende Benutzefolgreich in der Datei $file gespeichert<br>";
echo "Benutzer: $user <br> Passwort: $pass";
}
fclose($puffer2);
}
}
else
{
if ($user=="") echo "Es ist kein Benutzername angegeben.<br>";
if ($pass=="") echo "Es ist kein Passwort angegeben.";
}
?>
eingabe-loeschen.php
<?php
//Ab hier wird die Datei .htpasswd eingelesen und in User + PW zerlegt
$file = ".htpasswd";
if (!$puffer = fopen($file,"r"))
{
echo "Fehler beim öffnen der Datei.";
}
if (!$inhalt = fread($puffer, filesize($file)))
{
echo "Fehler beim Lesen.";
}
else
{
//echo "$inhalt";
//hier ist die eigentliche Ausgabe
}
fclose($puffer);
//Ermitteln der vorhandenen Eintraege in der Datei
//ueberprueft wird die Anzahl der : in der Datei
$anzwoerter=substr_count( $inhalt, ":");
$tok[0] = strtok ($inhalt,"\r\n");
//$j=Anzahl der Woerter(Doppelpunkte des Strings)
for ($i=1; $i<$anzwoerter; $i++)
{
$tok[$i] = strtok ("\r\n");
}
//Erstellen von zwei Arrays fuer den Benutzernamen und das Passwort der index ist fuer jeden Benutzer gleich
//$benutzer[5] ist der Benutzer fuer $passwort[5]
for ($i=0; $i<$anzwoerter; $i++)
{
$benutzer[$i] = strtok ($tok[$i],":");
$passwort[$i] = strtok ("\r\n");
//echo "Benutzer $i $benutzer[$i]<br>";
//echo "Passwort $i $passwort[$i]<br>";
}
//Ende des Skriptes zum Lesen und zerlegen der Strings
/*----------------------------------------------------------------------------*/
//Start des Skriptes zum Schreiben in die Datei / hinzufuegen eines neuen Benutzers
//Werte werden von dem html-Formular uebergeben
$benutzersortiert=$benutzer;
sort($benutzersortiert);
echo "<center>";
echo "<table>";
for ($m=0; $m<$anzwoerter; $m++)
{
echo "<tr>";
echo "<td>$m</td>";
echo "<td>$benutzersortiert[$m]</td>";
echo "</tr>";
}
echo "</table>";
echo "</center>";
?>
<html>
<!-- Neuen Benutzer in die Datei .passwd eintragen. <br />-->
<form name="user" method="post" action="loeschen.php">
<table>
<tr>
<td>Benutzer 1: </td>
<td><input type="text" name="loe1" id="user" /></td>
</tr>
<tr>
<td>Benutzer 2: </td>
<td><input type="text" name="loe2" id="user" /></td>
</tr>
<tr>
<td>Benutzer 3: </td>
<td><input type="text" name="loe3" id="user" /></td>
</tr>
<tr>
<td>Benutzer 4: </td>
<td><input type="text" name="loe4" id="user" /></td>
</tr>
<tr>
<td>Benutzer 5: </td>
<td><input type="text" name="loe5" id="user" /></td>
</tr>
</table>
<input type="submit" name="senden" id="senden" value="Senden">
</form>
</html>
<!--td=neue Spalte tr=neue Zeile-->
loeschen.php
<?php
//Ab hier wird die Datei .htpasswd eingelesen und in User + PW zerlegt
$file = ".htpasswd";
if (!$puffer = fopen($file,"r"))
{
echo "Fehler beim öffnen der Datei.";
}
if (!$inhalt = fread($puffer, filesize($file)))
{
echo "Fehler beim Lesen.";
}
else
{
//echo "$inhalt";
//hier ist die eigentliche Ausgabe
}
fclose($puffer);
//Ermitteln der vorhandenen Eintraege in der Datei
//ueberprueft wird die Anzahl der : in der Datei
$anzwoerter=substr_count( $inhalt, ":");
$tok[0] = strtok ($inhalt,"\r\n");
//$j=Anzahl der Woerter(Doppelpunkte des Strings)
for ($i=1; $i<$anzwoerter; $i++)
{
$tok[$i] = strtok ("\r\n");
}
//Erstellen von zwei Arrays fuer den Benutzernamen und das Passwort der index ist fuer jeden Benutzer gleich
//$benutzer[5] ist der Benutzer fuer $passwort[5]
for ($i=0; $i<$anzwoerter; $i++)
{
$benutzer[$i] = strtok ($tok[$i],":");
$passwort[$i] = strtok ("\r\n");
//echo "Benutzer $i $benutzer[$i]<br>";
//echo "Passwort $i $passwort[$i]<br>";
}
//Ende des Skriptes zum Lesen und zerlegen der Strings
/*----------------------------------------------------------------------------*/
//Start des Skriptes zum Schreiben in die Datei / hinzufuegen eines neuen Benutzers
//Werte werden von dem html-Formular uebergeben
$loe1=$_POST["loe1"];
$loe2=$_POST["loe2"];
$loe3=$_POST["loe3"];
$loe4=$_POST["loe4"];
$loe5=$_POST["loe5"];
$benutzersortiert=$benutzer;
sort($benutzersortiert);
//Start des ueberschreibens der zu loeschenden Benutzer durch #####
echo "Folgende Benutzer wurden geloescht:<br>";
$durchlauf=1;
$i=0;
while ($durchlauf!=0 && $loe1!="")
{
if ($benutzersortiert[$loe1]==$benutzer[$i])
{
echo"1: ";
echo "$benutzer[$i] <br>";
$benutzer[$i]="#####";
$durchlauf=0;
}
$i++;
}
$durchlauf=1;
$i=0;
while ($durchlauf!=0 && $loe2!="")
{
if ($benutzersortiert[$loe2]==$benutzer[$i])
{
echo"2: $bentzer[$i]";
echo "$benutzer[$i]<br>";
$benutzer[$i]="#####";
$durchlauf=0;
}
$i++;
}
$durchlauf=1;
$i=0;
while ($durchlauf!=0 && $loe3!="")
{
if ($benutzersortiert[$loe3]==$benutzer[$i])
{
echo"3: $bentzer[$i]";
echo "$benutzer[$i]<br>";
$benutzer[$i]="#####";
$durchlauf=0;
}
$i++;
}
$durchlauf=1;
$i=0;
while ($durchlauf!=0 && $loe4!="")
{
if ($benutzersortiert[$loe4]==$benutzer[$i])
{
echo"4: $bentzer[$i]";
echo "$benutzer[$i]<br>";
$benutzer[$i]="#####";
$durchlauf=0;
}
$i++;
}
$durchlauf=1;
$i=0;
while ($durchlauf!=0 && $loe5!="")
{
if ($benutzersortiert[$loe5]==$benutzer[$i])
{
echo"5: $bentzer[$i]";
echo "$benutzer[$i]<br>";
$benutzer[$i]="#####";
$durchlauf=0;
}
$i++;
}
//Ende des ueberschreibens der zu loeschenden User durch #####
//Array benutzer wieder in die Datei .htpasswd schreiben. Zeilen mit ##### werden ausgelassen
//$datauser user-array ohne die zu loeschenden user
//$datapass das zugehoerige array mit den passwoertern
//$anzwoerterneu speichert die Anzahl der neuen Datensaetze OHNE die Anzahl, welche geloescht wird.
$anzwoerterneu=0;
for ($i=0; $i<$anzwoerter; $i++)
{
if ($benutzer[$i]!="#####")
{
// echo "$benutzer[$i]<br>";
$datauser[$anzwoerterneu]=$benutzer[$i];
$datapass[$anzwoerterneu]=$passwort[$i];
$anzwoerterneu++;
}
//echo "$benutzer[$i]<br>";
}
//datapass und datauser enthalten die Daten welche neu in die Datei .htpasswd geschriebne werden sollen
$gesamt="";
for ($i=0; $i<$anzwoerterneu; $i++)
{
$gesamt=$gesamt.$datauser[$i].":".$datapass[$i]."\r\n";
}
$Datei= ".htpasswd";
if (!$puffer2 = fopen($Datei,"w"))
{
echo "Fehler beim oeffnen der Datei.";
}
if (!fwrite($puffer2, $gesamt))
{
echo "Fehler beim Schreiben.";
}
fclose($puffer2);
?>
Benutzer anzeigen.php
<?php
//Ab hier wird die Datei .htpasswd eingelesen und in User + PW zerlegt
$file = ".htpasswd";
if (!$puffer = fopen($file,"r"))
{
echo "Fehler beim öffnen der Datei.";
}
if (!$inhalt = fread($puffer, filesize($file)))
{
echo "Fehler beim Lesen.";
}
else
{
//echo "$inhalt";
//hier ist die eigentliche Ausgabe
}
fclose($puffer);
//Ermitteln der vorhandenen Eintraege in der Datei
//ueberprueft wird die Anzahl der : in der Datei
$anzwoerter=substr_count( $inhalt, ":");
$tok[0] = strtok ($inhalt,"\r\n");
//$j=Anzahl der Woerter(Doppelpunkte des Strings)
for ($i=1; $i<$anzwoerter; $i++)
{
$tok[$i] = strtok ("\r\n");
}
//Erstellen von zwei Arrays fuer den Benutzernamen und das Passwort der index ist fuer jeden Benutzer gleich
//$benutzer[5] ist der Benutzer fuer $passwort[5]
for ($i=0; $i<$anzwoerter; $i++)
{
$benutzer[$i] = strtok ($tok[$i],":");
$passwort[$i] = strtok ("\r\n");
//echo "Benutzer $i $benutzer[$i]<br>";
//echo "Passwort $i $passwort[$i]<br>";
}
//Ende des Skriptes zum Lesen und zerlegen der Strings
/*----------------------------------------------------------------------------*/
//Start des Skriptes zum Schreiben in die Datei / hinzufuegen eines neuen Benutzers
//Werte werden von dem html-Formular uebergeben
$benutzersortiert=$benutzer;
sort($benutzersortiert);
echo "<center>";
echo "<table>";
for ($m=0; $m<$anzwoerter; $m++)
{
echo "<tr>";
echo "<td>$m</td>";
echo "<td>$benutzersortiert[$m]</td>";
echo "</tr>";
}
echo "</table>";
echo "</center>";
?>
Bevor du damit an deine Daten rangehst teste die Skripte aber noch einmal durch. Ich habe sie bei mir immer nur mit ein paar Beispieldatensätzen getestet und konnte keine Fehler feststellen, aber ich habe sie auch eben erst fertig geschrieben.
Es wäre schön wenn du mir ein kurzes Feedback geben könntest ob du Fehler oder so gefunden hast.
Viele Grüße smite
Edit:
Wie kann ich meinen Code zu einfügen, dass man beim lesen des Threads nicht den ganzen Code sieht. Ich mein dass so, dass man quasi einen kleinen Frame hat, in dem man durch den Inhalt der Code-Tags scrollen kann.
Ich habe die Skripte noch einmal als Datei angefügt.
Angehängte Datei(en)
-
htaccess_skripte.rar (5,21K)
Anzahl der Downloads: 106
Dieser Beitrag wurde von smite bearbeitet: 19. März 2009 - 21:31
#12
geschrieben 19. März 2009 - 23:02
Zitat (TI-User: 19.03.2009, 22:41)
np, np.
Es freut mich ja wenn ich die ganzen Stunden nicht ganz umsonst gearbeitet habe, weil ich selbst brauche das Skript nur für ein Schulprojekt.
Wenn du es getestet hast kannst du mir ja mal eine kurze Rückmeldung geben ob es funktioniert hat, bzw. ob du einen Bug gefunden hast.
Gruß smite
#13
geschrieben 20. März 2009 - 20:38
Zitat (smite: 19.03.2009, 23:02)
Es freut mich ja wenn ich die ganzen Stunden nicht ganz umsonst gearbeitet habe, weil ich selbst brauche das Skript nur für ein Schulprojekt.
Wenn du es getestet hast kannst du mir ja mal eine kurze Rückmeldung geben ob es funktioniert hat, bzw. ob du einen Bug gefunden hast.
Gruß smite
Also erst mal wegen der Codebox weiß ich auch leider nichts.
Zum Script:
1: Es funktioniert alles super, nur kann ich mich nicht einloggen, weil es auf (meinem) Webhoster verschlüsselte Passwörter sein müssen.
Also, könntest Du da noch eine verschlüsselung einbauen?
2. Ich würde auch raten eine Übersicht zu erstellen, also eine Website bei der man sich einloggt und dann verschiedene Einstellungen vornehmen kann. Aber ich denke das macht man zum Schluss.
Ansonsten gut gelungen.
Ach ja, wie lange bist Du da dran gesessen wenn ich fragen darf?
Danke nochmal
Gruß TI-User
#14 _lustiger_affe_
geschrieben 20. März 2009 - 22:33
Zitat
#15
geschrieben 20. März 2009 - 23:10
1. Die Übersicht kommt vll. noch. Ich habe keine mehr erstellt da die Skripte in ein anderes Projekt hineinkopiert werden.
2. Mit der Verschlüsselung gucke ich mal ob ich es in nächster Zeit schaffe, weil die Schule bei mir im Moment etwas stressig ist. Ich weiß halt nicht wie die Daten verschlüsselt werden müssen. Sonst wäre das wahrscheinlich eine Zeile im Code.
Also wenn jemand weiß wie ich das Passwort abändern muss, soll er das mal bitte hier posten.
An den Skripten saß ich bestimmt mehrere Stunden, weil ich mir häufig die Syntax erst heraussuchen musste. Vom Prinzip her war es aber relativ einfach, da ich ähnliche Projekte schon ein paar mal in C++ programmiert habe.
Viele Grüße smite