Passwort an Mailadresse und in txtfile für Login

Andrasil

Grünschnabel
Hallo zusammen

Ich dachte, man könne sowas mit htaccess lösen, weil ich brauch nix kompliziertes, aber so einfach scheint das wohl nicht zu sein. Un da ich überhaupt nicht viel von PHP verstehe hier mal meine schilderung. Sollt eigentlich recht einfach sein.

Also ich hab auf einem Webserver ein Verzeichnis welches man mit einem Passwort sichern muss und zwar folgendermassen:

Ich habe eine HTML Seite, mit diversen Links wie:
- Mein erstesdokument.doc
- Mein zweites Dokument.pdf
- mein drittes dokument.jpg
usw...
Die Seite ist für alle frei zugänglich.
Die Dokumente liegen Bspw unter: MeineSeite.de/Downloads/
folglich muss der Ordner mit einem Benutzername und Passwort geschützt werden.
Also jedesmal wenn ich dann einen der links (dokumente) anklicke, kann ich dann für Bspw. 15 Minuten im Downloadsordner soviel runterladen wie ich will.

So in etwa stell ich mir das vor:
Ich erstell eine txt Datei mit Benutzernamen
Den Benutzernamen Teile ich Bspw. per Mail mit.
Der User klickt auf ein Dokument.doc - > Passwortgenerator sendet Mail mit einem Temporären Passwort und trägt das Passwort zugleich in einer txtdatei ein.
User klickt im Mail auf den Link -> Browser öffnet sich und er gibt noch den Benutzername ein.
Jetzt kann er wenn er im HTML Dokument mit den Links auf die Links klickt, soviel runterladen wie er will, aber nur für Bspw. 10 Minuten, dann soll das Passwort in der Passwort.txt sowie der Benutzername in der Username.txt ungültig werden.
Wenn er jetzt noch mehr runterladen will, "entsperr" ich quasi den Benutzername wieder in der Datei in dem ich Bspw die # vor dem Namen entferne. Un er kann sich beim klicken auf einen Link ein neues PW generieren lassen usw...

Liest sich nach viel an, klingt beim erzählen nicht nach viel.
Und für ein Profi sicherlich machbar. :)
Oder gibt es schon was fertiges, dass man quasi nur noch anpassen braucht?

Gruss
 
Zuletzt bearbeitet:
Hi,

es gibt Scripte mit der du htaccess Dateien anlegen und verwalten kannst. Ich kenn allerdings keins das auch die Zeit berücksichtigt.

Mein Vorschlag wäre eher du löst diesen ganze Problem mit einer Datenbank.

Ich bin mir nicht ganz sicher ob die User hier sich an dein Problem dranhocken ohne dafür bezahlt zu werden :) ... geh von mir aus ;).

Gruß
ne0hype
 
Danke für deine Antwort.

Dachte das ein txtfile einfacher wäre.
Oder noch einfacher.... wenn man auf den Ordner kommt durch einen link soll ein Username und Passwort generiert werden und per Mail zugeschickt werden. Dies wäre dann für ca. 5h gültig. Danach muss man sich ein neues generieren lassen.

Gruss
 
Dennoch muss du den Benutzernamen, das Passwort und den generierungszeitpunkt festhalten, um es kontrollieren zu können...

Das IST möglich, aber dazu musst dir das mit PHP und MYSQL basteln, wenn es so laufen soll...
Den Ordner zusätzlich mit htaccess, damit auf ftp:-Ebene keiner so ran kann...

[EDIT]:
Kleiner Denkfehler... Geht auch mit ner *.txt-File ^^
Musst nur die Daten in die Datei schreiben, auslesen und auswerten...
Ggf ändern und die Datei ändern...
 
Aber falls du Datenbanken auf deinem Server benutzen kannst würde ich sie Dir mehr empfehlen als sich mit text Dateien rum zuschlagen.
 
Genau - vorallem da du dann mal eben so mitten raus einen alten (abgelaufenen) Datensatz löschen kannst und nicht umständlich mit den Zeilen der Textdatei experimentieren musst ;)

Passwörter generieren geht mit folgender Funktion:

PHP:
function generatePW($length) {
 
	$dummy	= array_merge(range('0', '9'), range('a', 'z'), range('A', 'Z'), array('#','&','@','$','_','%','?','+'));
 
	mt_srand((double)microtime()*1000000);
 
	for ($i = 1; $i <= (count($dummy)*2); $i++)
	{
		$swap		= mt_rand(0,count($dummy)-1);
		$tmp		= $dummy[$swap];
		$dummy[$swap]	= $dummy[0];
		$dummy[0]	= $tmp;
	}
	return substr(implode('',$dummy),0,$length);
}

Mailen geht folgendermaßen:
PHP:
<?php

$message = "<h1>Hello world!<h1>";
$to = "empfaenger@system.de";
$subject = "Betrefftext";
$xtra = "From: ab@sender.de (Ab Sender)\r\n";
$xtra .= "Content-Type: text/html\r\nContent-Transfer-Encoding: 8bit\r\n";

mail($to,$subject,$message,$xtra);

?>
Allerdings muss dafür der smtp usw in der php.ini konfiguriert sein! sonst schmiert die funktion leider ab ;)

Wie du datensätze aus mysql holst und speicherst müssen wir ja wohl nicht aufführen, oder?

lg
 
Viel zu umständlich für das was ichs brauch, aber vielen Dank für die Ausführungen.

Ich habe nun folgendes gefunden und für mich angepasst.

Loginformular
PHP:
<h1>Login</h1> <form name="login" action="login.php" method="post">
 Passwort:
 <input type="password" name="passwort" value="" /> <input type="submit" value="Login" name="Login" /> </form>

Passwort abfragen überprüfen
PHP:
<?php
include"config.php"; // config.php wird eingefügt
$Zugangspasswort = $passwort; // $passwort wurde in config.php bestimmt

if($_POST['Login'] && $_POST['passwort'] == $Zugangspasswort) // Login ist der Submitbutton vom Formular und passwort das Feld vom Formular
{
session_start();
$_SESSION['passwort'] = $Zugangspasswort; // Hier geben wir der Sessionen den Zugangsschlüssel.
}
?>
<html>

<head>

</head>

<body>
<?php
if($_SESSION['passwort'] == $Zugangspasswort) // Hier prüft es die obig-registrierte Session.
{
echo"Sie sind erfolgreich eingeloggt!Sie werden zur Administration weitergeleitet.<script>top.location.href='liste.php?site=main'</script><br/>";
// Nun eine Rückgabe, für die die JS deaktiviert haben:
echo'Falls Sie nicht automatisch weitergeleitet werden, klicken Sie <a href="liste.php">hier</a>';
}
else
{
// Und hier die Meldung, wenn es nicht gültig ist
echo 'Sie sind nicht befugt, diese Seite anzusehen Möglicherweise ist das eingegeben Passwort falsch.';
echo 'Bitte loggen Sie sich <a href="index.php">hier</a> erneut ein.';
}
?>
</body>

</html>

Weitergeleitete Seite
PHP:
<?php
session_start();
?>
<html>
<head>
<title>Geschützter Bereich</title>
<!--Hier vielleicht einige Stylesheets, oder so...-->
</head>

<body>
<?php
include"config.php"; // config.php wird eingefügt
$Zugangspasswort = $passwort; // $passwort wurde in config.php bestimmt
if($_SESSION['passwort'] == $Zugangspasswort)
{
echo'Hier ist der geschützte Bereich';
// Hier kann man weitere Dinge eingeben, dass sie geschützt sind.
// Wenn man weitere Dateien dazu braucht, empfielt sich das include, da man sonst bei jeder Datei die Session prüfen muss
}
else
{
echo'Ihre Session ist nicht gültig
     Loggen Sie sich <a href="index.php">hier</a> erneut ein';
}
?></body>
</html>

Nur leider bekomm ich bei der login.php immer die Fehlermeldung:
Ihre Session ist nicht gültig Loggen Sie sich

Irgendwas stimmt in den Codes noch nicht so ganz.

Gruss
 
Zuletzt bearbeitet:
Also session_start(); kannst du nach ganz oben schreiben - ist sogar zu empfehlen! Ist ja kein Beinbruch... aber ich weiß nicht ob es daran liegt.

Glaube ich habe dich auch falsch verstanden - ich dachte du willst nen Textfeld für die Mailadresse und nen Button mit Passwort senden. Ich dachte du wolltest dann ein automatisch generiertes Passwort an die Mailadresse senden...

Ich verstehs immernoch nich so ganz.
Warum kann man sein Wunschpasswort angeben und die Mailadresse nicht - dann kannste dir den ganzen Emailkrams doch sparen?

lg
 
Ich glaube du hast jetzt ein ganz anderes script, Ich weis zwar nicht was bei Dir in config.php steht aber für mich sieht dass wie ein ganz normales login script aus was nur ein Passwort hat. :rolleyes:

Du wolltest doch ein script mit usern, Passwortgenerator, 10 Minuten Limit, Mailbenachrichtigung … machen oder nun doch nicht? :confused:
 
Also session_start();
Ich verstehs immernoch nich so ganz.
Warum kann man sein Wunschpasswort angeben und die Mailadresse nicht - dann kannste dir den ganzen Emailkrams doch sparen?
lg

Hab die Session ganz nach oben geschrieben.

Sorry war wohl etwas unglücklich formuliert.
Dachte an sowas:
Pwgenerator.php -> Pw an wunschmailadresse
pwfile.txt <- PW aus Generator eintragen
pwmailform.php <- pw aus Mail eintragen -> Login klicken
downladareal.php -> wunsch files runterladen
pwfile.txt -> benutztes pw aus file als nicht mehr gültig sobald session abgelaufen

-----------------------

Aber so wie ich das jetzt hab, ist es auch gut.
in der config.php kann man sicherlich mit mehreren PW erweitern? Und sobald eines bentzt wurde, automatisch als nicht mehr gültig markieren, wenn man sich auslogt?
Kann auf der Weitergeleiteten Seite, ein Logout machen, welches die session beendet und auf bsp: http://www.balbal.de weiterleitet?
 
Zuletzt bearbeitet:
Zurück