PHP userbereich login und user Entfehrnen script

Alles, was PHP betrifft, kann hier besprochen werden.

PHP userbereich login und user Entfehrnen script

Postby 1Euro » 04. May 2005 18:41

Hallo,
ersteinmal die Lage:
Ich habe vor kurtzem damit angefangen ein Login Script zu Programieren, da man ein Selbstgemachstes Script leicht umgehen kann (in dem mann den genauen Pfad kennt und in im Explorer eingibt) und es mir einfach zu viel Arbeit ist habe ich beschlossen es mit Htacces zu machen. Das ganze leuft folgender massen ab:
Als erstes wird bei der registration die verbindung zur Htaccespw datei aufgebaut und $_POST['name']:$_POST['passwd'] hinein geschrieben. Diese Beiden Variablen wurden in der vorherigen aufgerufenen HTML datei belegt.
Beim Login geht mann dann einfach in den Password geschuetzten Ordner und die .htacces datei öffnet sich automatisch und es wird nach dem PW gefragt. Wenn sich jetzt aber ein ungewollter User registriert soll er auch gelöscht werden, aber ich kenne den Befehl nicht mit der ich einen gewissen Datensatz (am besten auch mit Passwort) löschen kann. Leider läuft mein Webserver gerade nicht und auf meinem Webspace läuft gerade kein PHP deshalb konnte ich das bisjetzige Script nicht testen. Ich währe dankbar für eure Hilfe.
Noch ein par infos was ich ungern hätte:
- Keine MySQL Datenbank damit kenn ich micht net aus.
- Genau so steht es mit array bei mir :/


So jetzt die Scripte:

Registration (Ausfüllscript in HTML) (name: registration.html):
<HTML>
<form action="/reg.php" method="post">
<BR>Dein Username:<input name="name" type="text" size="30" maxlength="50">
<BR>Dein Passwort:<input name="passwd" type="passwd" size="30" maxlength="50">
<BR>Deine E-Mail Adresse:<input name="email" type="text" size="30" maxlength="50">
<input type="submit" value=" Absenden ">
</form>
</HTML>


Jetzt die verarbeitungsdatei dazu (leider habe ich in dieser Datei manche Maildaten noch nicht ausgefüllt) (in php) (name: reg.php):
<?
$datei = fopen("/acces/.htpasswd" "r+");
$passwort = fgets($datei, 100);
fwrite($datei, nl2br($_POST['name']:$_POST['passwd'])); //wenn in der datei jetzt <BR> oder ähnliches for dem text steht bitte das n12br() löschen!
fclose($datei);
echo "Du bist nun erfolgreich Registriert!<br />\n";
echo "Zum Login geht es hier lang:<br />\n";
echo "<A HREF="/acces/index.html">Zum Login</A>";
require_once('Mail.php');
$params['host'] = $_POST['smtp'];
$params['auth'] = true;
$params['username'] = $_POST['email'];
$params['password'] = $_POST['passwd'];
$recipients = $_POST['entfenger'];
$headers['From'] = $_POST['email'];
$headers['To'] = $_POST['entfenger'];
$headers['Subject'] = Registration im Userbereich von: $_POST['name'];
$body = Der User: $_POST['name'] hat sich soeben angemeldet.<br />\n Um ihn wieder aus dem Userbereich zu kicken gehen sie bitte in ihren Admin Bereich!;
$mail_object =& Mail::factory('smtp', $params);
$status = $mail_object->send($recipients, $headers, $body);
if (PEAR::isError($status))
{
echo "Fehler beim E-Mail-Versand.";
}
unset($headers['To']);
unset($headers['Subject']);
unset($body);
$headers['To'] = $_POST['email'];
$headers['Subject'] = Registrationsdaten;
$body = Hallo,<br />\n deine Accountsdaten sind:<br />\n Username: $_POST['name'] <br />\n Password: $_POST['passwd'] <br />\n Schöne Grüße ihr Webmaster Walter;
$mail_object =& Mail::factory('smtp', $params);
$status = $mail_object->send($recipients, $headers, $body);
if (PEAR::isError($status))
{
echo "Fehler beim E-Mail-Versand.";
}
/.In:
$params['host'] kommtdie Addresse zum SMTP server!
$params['auth'] bleibt true!
$params['username'] dort kommt deine E-mail addresse hinein!
$params['password'] dort kommt dein Passwort hinein!
./
?>


Jetzt kommt das Login Script Es befindet sich einen Ordner tiefer also im Ordner acces (name: .htaccess):
AuthType Basic
AuthName 'Login in den User Bereich'
AuthUserFile /.htpasswd
require valid-user


Jetzt kommt die Passwortdatei sie ist im selben Ordner wie die Passwort abfrage datei (name: .htpasswd):
admin:root


Vielen Dank für Eure Hilfe
Dies ist meine Welt!!!
1Euro
 
Posts: 188
Joined: 11. September 2004 17:50

Postby jakimo72 » 12. May 2005 17:20

1. Was hälst Du von verschlüsselten Passwortern? ist zwar
etwas komplizierter, aber bei Deinem Scenario, kann
jeder angemeldete Benutzer auf die Datei .htpasswd zugreifen.
Da nützt es kaum, jemanden nachträglich aus der Passwortdatei
zu streichen...
Also .htpasswd in ein Verzeichnis ausserhalb des Documentroot.
Um Verschlüsselung zu benutzen sehe Befehl crypt() oder md5.

2. So ganz kommt Du wohl um das Verständnis von arrays nicht
drumrum.
$einArray = array($pfad.'.htpasswd');
überführt die ganze Datei in ein Array. Dieses kannst Du
dann bearbeiten und hinterher die Datei .htpasswd neu schreiben.

3. Wäre es nicht sinnvoll jemanden erst in die Liste aufzunehmen,
nachdem seine E-Mail validiert wurde, z.B. durch einen besondern
Link in einer Bestätigungsmail? Wie willst Du sonst erkennen,
wen Du aus der Liste streichen möchtest, wenn dieser böse Mensch
ausgerechnet den Namen Deines besten Freundes misbraucht...
Der Bestätigungs-Link kann dann als GET-Parameter den Usernamen
und das Passwort mit einer symetrischen Verschlüsselung enthalten,
dann brauchst Du auch nix zwischenzuspeichern und der Kelch
"MySQL" ist nocheinmal an Dir vorübergegangen.
User avatar
jakimo72
 
Posts: 151
Joined: 07. February 2005 13:25
Location: Hamburg-Barmbek


Return to PHP

Who is online

Users browsing this forum: No registered users and 2 guests