SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten
Hilfe Community Kalender Heutige Beiträge Suchen

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 13.04.2005, 17:00:22
Fireviperrr Fireviperrr ist offline
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
Mit Zitat antworten
  #2  
Alt 13.04.2005, 20:41:49
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
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?
Mit Zitat antworten
  #3  
Alt 13.04.2005, 21:00:18
Fireviperrr Fireviperrr ist offline
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(=> 'Normale User',
                        
=> 'Mitwirkende',
                        
=> '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).
Mit Zitat antworten
  #4  
Alt 14.04.2005, 09:10:15
Benutzerbild von |Coding
|Coding |Coding ist offline
Administrator
 
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 41
Beiträge: 5.255
|Coding eine Nachricht über Skype™ schicken
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
Mit Zitat antworten
  #5  
Alt 14.04.2005, 09:32:15
Benutzerbild von |Coding
|Coding |Coding ist offline
Administrator
 
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 41
Beiträge: 5.255
|Coding eine Nachricht über Skype™ schicken
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
Mit Zitat antworten
  #6  
Alt 14.04.2005, 13:06:35
Fireviperrr Fireviperrr ist offline
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 ();
        } 
Mit Zitat antworten
  #7  
Alt 14.04.2005, 13:29:26
Benutzerbild von |Coding
|Coding |Coding ist offline
Administrator
 
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 41
Beiträge: 5.255
|Coding eine Nachricht über Skype™ schicken
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
Mit Zitat antworten
  #8  
Alt 15.04.2005, 23:32:43
Fireviperrr Fireviperrr ist offline
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 ...
Mit Zitat antworten
  #9  
Alt 16.04.2005, 00:41:30
Benutzerbild von |Coding
|Coding |Coding ist offline
Administrator
 
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 41
Beiträge: 5.255
|Coding eine Nachricht über Skype™ schicken
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
Mit Zitat antworten
  #10  
Alt 16.04.2005, 11:50:40
Fireviperrr Fireviperrr ist offline
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 ...
Mit Zitat antworten
Antwort


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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ä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.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt