CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
13.04.2005, 17:00:22
|
Anfänger
|
|
Registriert seit: Apr 2005
Beiträge: 12
|
|
File Based Login System aus dem Tipps und Tricks Bereich - PW case-sensitiv machen
Hallo!
Ich habe mir das FBL System hier aus dem Tipps und Tricks Bereich mal angeschaut und muß sagen, daß ich die Idee, einen Login so zu verwirklichen, echt klasse finde!
Leider ist die Abfrage des Passwort-Hashs aber nicht case-sensitiv. Hat jemand eine Idee, wie man das ändern könnte? Mir ist spontan keine Lösung eingefallen, und in der Form ist das leider nicht brauchbar, da nicht case-sensitive PW´s glaube ich der Vergangenheit angehören sollten, oder?!
Vielen Dank schon mal für Antworten,
Gruß
Fireviperrr / Sven
|
13.04.2005, 20:41:49
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: File Based Login System aus dem Tipps und Tricks Bereich - PW case-sensitiv mache
Die Hashbildung sollte normalerweise case sensitive sein. Mit welcher Funktion wird der Hash in dem Script erzeugt?
|
13.04.2005, 21:00:18
|
Anfänger
|
|
Registriert seit: Apr 2005
Beiträge: 12
|
|
AW: File Based Login System aus dem Tipps und Tricks Bereich - PW case-sensitiv mache
Hab´ es mir gerade noch einmal angesehen, scheint eher noch ein grundlegender Fehler im Aufbau des Skripts zu sein. Bei Eingabe von "USER" in der Live-Demo leitet das Skript schon in den sicheren Bereich weiter, ohne daß überhaupt ein Passwort eingetragen werden muß:
http://www.selfphp.de/tipps_tricks/d...em/ffbls_live/
Daher lag ich wohl falsch mit meiner Annahme, daß der Hash nicht case-sensitiv ist. Ich hatte mit "Test" und "test" als PW getestet, beides wurde akzeptiert. Wenn aber natürlich auch eine Leereingabe akzeptiert wird, ist das nicht weiter verwunderlich.
PHP-Code:
if(isset($_POST['login'])){
// Den Dateinamen zusammenbauen und dem Pfad anhaengen.
// Das Ergebnis koennte so aussehen:
// "./users/Daniel%20Kresslere.txt"
$filepath = './users/' . rawurlencode($_POST['username']) . '.txt';
if(file_exists($filepath)){
// Array mit Userguppen
$usergroups = array(0 => 'Normale User',
1 => 'Mitwirkende',
2 => 'Administratoren');
$userdata = file($filepath);
// $userdata[2] enthaelt den Passwort-Hash
if(trim($userdata[2]) != $_POST['password']){
// Hier verweigern Sie den Zutritt.
header('location: ' . $_SERVER['PHP_SELF'] . '?error');
}
session_start();
// $userdata[0] enthaelt die User ID.
$_SESSION['uid'] = trim($userdata[0]);
// $userdata[1] enthaelt den Username.
$_SESSION['uname'] = trim($userdata[1]);
// $userdata[3] enthaelt die Usergroup ID.
$_SESSION['ugid'] = $userdata[3];
// Mit der Usergroup ID kann man das betreffende
// Element im Array "$usergroups" selektieren.
$_SESSION['ug'] = $usergroups[$userdata[3]];
header('location: ffbl_beispiel_sichere_seite.php?' . SID);
}else{
usw...
So wie es aussieht, muß die Abfrage noch mal komplett überarbeitet werden. Ich setze mich da mal morgen dran (heute Abend leider keine Zeit für).
|
14.04.2005, 09:10:15
|
|
Administrator
|
|
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 41
Beiträge: 5.255
|
|
AW: File Based Login System aus dem Tipps und Tricks Bereich - PW case-sensitiv machen
Oh.... Wie peinlich :)
1. Habe vergessen das eingegebene Passwort zu hashen
2. Nach den Header für den Fehllogin gehört ein exit();
ich habe es korrigiert und werde es in den nächsten Minuten hochladen.
__________________
Gruß |Coding
---
Qozido® - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.
www.qozido.de
|
14.04.2005, 09:32:15
|
|
Administrator
|
|
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 41
Beiträge: 5.255
|
|
AW: File Based Login System aus dem Tipps und Tricks Bereich - PW case-sensitiv machen
So alles wieder gut :)
Es ist nun auch Online.
Ach: Da ja nun mit dem MD5-Hash gearbeitet wird, gibt es nur noch case-sensitiv. Ist ja logo :)
__________________
Gruß |Coding
---
Qozido® - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.
www.qozido.de
|
14.04.2005, 13:06:35
|
Anfänger
|
|
Registriert seit: Apr 2005
Beiträge: 12
|
|
AW: File Based Login System aus dem Tipps und Tricks Bereich - PW case-sensitiv mache
Super, besser und schneller hätte ich das auch nicht lösen können (na gut, ich bin ausnahmsweise mal ehrlich, ich hätte wahrscheinlich eine halbe Ewigkeit gebraucht, zu sehen, daß das PW nicht gehasht wurde ...)
Kleine Verständnisfrage noch:
Wofür ist denn das ergänzte "exit ();" nach dem Fehllogin gut? Zwingend notwendig ist das doch nicht, oder?
PHP-Code:
// Hier verweigern Sie den Zutritt.
header('location: ' . $_SERVER['PHP_SELF'] . '?error');
exit ();
}
|
14.04.2005, 13:29:26
|
|
Administrator
|
|
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 41
Beiträge: 5.255
|
|
AW: File Based Login System aus dem Tipps und Tricks Bereich - PW case-sensitiv machen
Doch es ist notwendig. Ich verwende in dem Script die Wächtertechnik. In gewissen Fällen (wie diesem) muss man diese spezieller abschirmen, d.h. ohne das exit(), würde nach wie vor der zweite Header anspringen.
Man könnte auch sagen: "PHP handelt an dieser Stelle schneller als es denkt."
Du könntest es auch so lösen:
PHP-Code:
// $userdata[2] enthaelt den Passwort-Hash
if(trim($userdata[2]) != md5($_POST['password'])){
// Hier verweigern Sie den Zutritt.
header('location: ' . $_SERVER['PHP_SELF'] . '?error');
}else{
session_start();
// $userdata[0] enthaelt die User ID.
$_SESSION['uid'] = trim($userdata[0]);
// $userdata[1] enthaelt den Username.
$_SESSION['uname'] = trim($userdata[1]);
// $userdata[3] enthaelt die Usergroup ID.
$_SESSION['ugid'] = $userdata[3];
// Mit der Usergroup ID kann man das betreffende
// Element im Array "$usergroups" selektieren.
$_SESSION['ug'] = $usergroups[$userdata[3]];
header('location: ffbl_beispiel_sichere_seite.php?' . SID);
}
Dann brauchst Du das exit nicht. Es gehört jedoch zum "sauberen Programmierstil" es mit Wächtern zu lösen, was aber nicht heißen soll, das es anders falsch wäre. Mit Wächtern hat man halt nur einen besseren überblick im Code, erst recht bei größeren Code-Abschnitten.
__________________
Gruß |Coding
---
Qozido® - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.
www.qozido.de
|
15.04.2005, 23:32:43
|
Anfänger
|
|
Registriert seit: Apr 2005
Beiträge: 12
|
|
AW: File Based Login System aus dem Tipps und Tricks Bereich - PW case-sensitiv mache
Sorry, Wächtertechnik sagt mir nichts. Muß man dafür Informatik studiert haben, um die zu kennen (und zu verstehen), oder kann man sich die so irgendwo anlesen? Sonst skizzier doch mal kurz bitte, was so ein "Wächter" sein soll ...
|
16.04.2005, 00:41:30
|
|
Administrator
|
|
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 41
Beiträge: 5.255
|
|
AW: File Based Login System aus dem Tipps und Tricks Bereich - PW case-sensitiv machen
OK:
So würde man PHP-Code ohne Wächter schreiben:
PHP-Code:
if($a == $b){
// Mach das
exit();
}else{
// Mach dies
if($c == $d){
// Mach noch was anderes
exit();
}else{
// Bla
}
}
// Weiteres bla bla
Und so sieht er mit Wächtern aus:
PHP-Code:
if($a == $b){
// Mach das
exit();
}
// Mach dies
if($c == $d){
// Mach noch was anderes
exit();
}
// Bla
// Weiteres bla bla
Wächter sind also nichts anderes als Vorbedingungen. Vorteile: Man kann den logischen Scriptverlauf leichter durchblicken, weil nicht so verschachtelt wird.
Verstehst Du wie das gemeint ist?
edit:
Das wird Dir am besten bewust, wenn Du an einigen Stellen nicht möchtest, dass das Script weiterarbeitet, weil eine Vorbedinung zutrifft.
__________________
Gruß |Coding
---
Qozido® - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.
www.qozido.de
|
16.04.2005, 11:50:40
|
Anfänger
|
|
Registriert seit: Apr 2005
Beiträge: 12
|
|
AW: File Based Login System aus dem Tipps und Tricks Bereich - PW case-sensitiv mache
Ah ja, Danke für die Erklärung, hab´s verstanden. Klar, der Code wird dadurch wirklich viel übersichtlicher. Gerade bei komplexen Bedingungsabfragen ist die Technik bestimmt vorteilhaft ...
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Ähnliche Themen
|
Thema |
Autor |
Forum |
Antworten |
Letzter Beitrag |
Weiterleitung in if-Schleife
|
Chilla |
PHP für Fortgeschrittene und Experten |
15 |
05.05.2004 19:19:44 |
Alle Zeitangaben in WEZ +2. Es ist jetzt 14:07:28 Uhr.
|