php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 31.05.2006, 15:19  
Benutzer
 
Registriert seit: 19.02.2005
Beiträge: 61
michi174
Standard Neues Login Script funzt nicht!

hallo...
Ich bin gerade dabei meine ganze Homepage zu erneuern.
Nun mache ich gerade mein Login Script neu.

Jedoch habe ich dabei ein Problem!
Ich �berpr�fe ob der User nicht gesperrt ist, nicht zu viele Strafpunkte hat, der Account aktiviert wurde und ob Username und Passwort richtig eingegeben wurden.

Letzteres funktioniert leider nicht so wie ich es mir vorstelle!
Der User wird zwar eingeloggt, wenn er den Username und Passwort richtig eingibt und auch nicht eingeloggt, wenn diese Daten nicht stimmen.

Jedoch wird die Fehlermeldung, die im letzen "else" steht, nicht ausgegeben falls die Daten falsch sind!

Die Variable $num_lo worin mysql_num_rows(...) drinnen steht enth�lt immer 0, auch wenn die Daten richtig eingegeben wurden.
Jedoch wundert mich das da ich mit if($num_lo == 1) �berpr�fe ob die Daten richtig sind!


Zur Veranschaulichung noch mein Script:
PHP-Code:
    session_start();
    include(
"settings/config.php");
    
mysql_select_db($udb);
    
    
$sql_lo    "SELECT * FROM userdata WHERE username = '".$_GET['username']."' AND password = '".$_GET['password']."'";
    
$res_lo    mysql_query($sql_lo);
    
$row_lo    mysql_fetch_array($res_lo) or die(mysql_error());
    
$num_lo    mysql_num_rows($res_lo);
    
    
    
$sql_cl    "SELECT * FROM closed_users WHERE user = '".$row_lo['id']."'";
    
$res_cl    mysql_query($sql_cl) or die(mysql_error());
    
$row_cl    mysql_fetch_array($res_cl);
    
    if(
$num_lo == 1)
    {
        if(
$row_lo['activate'] == $row_lo['activate_confirm'])
        {
            if(
$row_lo['points'] < 10)
            {
                if((
$row_cl['duration'] - mktime()) < 0)
                {
                    
//Hier wird der User eingeloggt...
                
}
                else
                {
                    
$error         TRUE;
                    
$message    "Fehler";
                }
            }
            else
            {
                
$error         TRUE;
                
$message    "Fehler";
            }
        }
        else
        {
            
$error         TRUE;
            
$message    "Fehler";
        }
    }
    else
    { 
        
$error         TRUE;
        
$message    "Fehler" //Diese Fehlermeldung wird nicht ausgegeben!
    
}
    if(
$error == TRUE)
    {
        echo 
"$message";
    } 

EDIT: So jetzt hab ich mal alles Überflüssige weggemacht.
Ich habe error_reporting(E_ALL) verwendet, jedoch keine Fehlermeldung bekommen!
michi174 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 31.05.2006, 15:34  
Gast
 
Beiträge: n/a
Standard

Mir persönlich ist dieser Quelltext trotz ordentlicher Einrückung einfach zu lang, daher nur der Hinweis:

Richtig debuggen
1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

Die Ausgaben per echo kann man sich ersparen, in dem man einen Debugger benutzt, was eigentlich selbstverständlich sein sollte.

Dieser Quellcode ist eine Paradebeispiel, warum Debugger eine sinnvolle Sache sind.

Gruß
phpfan
 
Alt 31.05.2006, 15:44  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Oh, mein Gott, er sagt "funzt" ...

@topic: Du solltest das gesamte Script überdenken. Bei nem einfachen Loginscript sollten bis zu 4 verschachtelte Abfragen nicht notwendig sein ^^
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 31.05.2006, 15:50  
Benutzer
 
Registriert seit: 19.02.2005
Beiträge: 61
michi174
Standard

Is mir schon klar das ich das ganze auch in einem if abfragen könnte, jedoch möchte ich
das so machen, da ich es übersichtlicher finde!

Jedoch ist es mir unerklärlich warum die Letzte Fehlermeldung nicht ausgegeben wird!
michi174 ist offline  
Alt 31.05.2006, 15:51  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

http://tut.php-q.net/login.html

Bist nicht dem "gegebenen" Beispiel hier gefolgt ???

M3g4Star ist offline  
Alt 31.05.2006, 15:54  
Benutzer
 
Registriert seit: 19.02.2005
Beiträge: 61
michi174
Standard

das war mein erstes Login Script....
das hab Ich vor nem Jahr verwendet...
michi174 ist offline  
Alt 31.05.2006, 16:09  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

Deine Abfrage würd ich per JOIN machen ... bietet sich doch an oder ?

Einfach checken ob der User mit dem Namen und dem Passwort eine sperre hat oder nicht ...

weiterhin solltest du dir deine "IF" - Schleifen nochmal durch den Kopf gehen lassen.

So verschachteln sollte wirklich nicht notwendig sein ...
M3g4Star ist offline  
Alt 31.05.2006, 16:16  
Benutzer
 
Registriert seit: 19.02.2005
Beiträge: 61
michi174
Standard

naja werds mir nochmal ansehen und schauen ob ichs hinkrieg!
michi174 ist offline  
Alt 31.05.2006, 16:28  
Erfahrener Benutzer
 
Registriert seit: 09.03.2005
Beiträge: 219
webbi
Standard

Naja, wenn er nicht zu der "else" kommt, obwohl die Logindaten falsch sind, dann bedeutet das ja nur, dass if($num_lo == 1) true ergibt.

Folglich enthält das Abfrageergebnis eine Zeile, dann schau doch mal nach, was diese Zeile enthält und verlgeiche es mit den übergebenen Userdaten, dann wirst du bestimmt zu einer Lösung kommen.
webbi ist offline  
Alt 31.05.2006, 16:42  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

oder versuchs ma mit der identität ===
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
frage zu login script schorsch PHP Tipps 2006 9 10.10.2006 10:16
Suche Login Script PHP Tipps 2006 6 02.03.2006 11:09
Login Script PHP Tipps 2006 4 21.02.2006 23:01
Problem mit Login Script PHP Tipps 2007 4 15.11.2005 17:29
[Erledigt] Login Script l�uft nicht auf dem Server PHP-Fortgeschrittene 10 11.11.2005 20:46
Login Script PHP Tipps 2005-2 7 02.07.2005 04:53
Login Script Fehler b++ PHP Tipps 2005-2 11 01.07.2005 02:47
Login Script PW ändern PHP Tipps 2005-2 13 26.06.2005 12:51
Fehlersuche ! Login Script ! PHP Tipps 2005-2 3 23.06.2005 15:06
Login Script schreibt ein echo zuviel Chrisber PHP Tipps 2005-2 11 21.06.2005 17:10
[gelöst]fehler bei login script LA-Finest PHP Tipps 2005 9 25.05.2005 11:02
brauche dringend hilfe für ein login script PHP Tipps 2005 17 22.05.2005 21:56
problem mit login script PHP Tipps 2005 26 20.05.2005 22:10
Login Script Tschuu PHP Tipps 2004-2 5 12.11.2004 22:33
Teamspeak user ADD im Login script von Home page PHP Tipps 2004 1 13.10.2004 19:49


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:08 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.