php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.10.2007, 07:23  
Benutzer
 
Registriert seit: 02.10.2007
Beiträge: 52
DJ Nuno befindet sich auf einem aufstrebenden Ast
Standard Problem mit meinem Login System

Hallo,

ich Bastel gerade ein Login System das nicht so richtig will.
Also Problem ist das 3 User in der Datenbank sind, allerdings nur einer als gültigen User erkannt wird. habe schon in der Datenbank nachgeschaut da ist alles in ordnung.

Hier der code worum es geht:

PHP-Code:
if (isset($_POST['Login'])) {
            
$pass md5($_POST['Pass']);
            
            
$db mysql_connect('localhost''***''***') or die("MySQL Connect Error!");
            
mysql_select_db('usr_web680_2'$db) or die("Database Select Error!");
            
$sql "SELECT * FROM reg_user";
            
$result mysql_query($sql) or die(mysql_error());
            
$num mysql_numrows($result);
            
            for (
$i 0$i $num$i++) {
                
$row mysql_fetch_array($result);
                
                if (
$row[user] == $_POST['User']) {
                    if(
$row[pass] == $pass) {
                        if (
$row[blocked] == "1") {
                            
$blocked true;
                        } else {
                            
$_SESSION['nick'] = $row[nick];
                            
$_SESSION['id'] = $row[id];
                            
$_SESSION['rank'] = $row[rank];
                            
$_SESSION['email'] = $row[email];
                            
$_SESSION['eingelogt'] = true;
                        }
                    } else {
                        
$_SESSION['eingelogt'] = false;
                        
$error $err12;
                    }
                } else {
                    
$_SESSION['eingelogt'] = false;
                    
$error $err12;
                }
            }
        } 
zuerst dachte ich es sei wege den Leerzeichen in den Usernamen, allerdings kann ich mich auch mit einem weiteren Test Account nicht einloggen das keine leerzeichen im Login Namen hat.

Bin hier langsam am verzweifeln, bin für jede idee oder vorschlag dankbar!

Vielen dank im vorraus!
DJ Nuno ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 15.10.2007, 08:17  
Erfahrener Benutzer
 
Registriert seit: 10.09.2006
Beiträge: 101
XraYSoLo befindet sich auf einem aufstrebenden Ast
XraYSoLo eine Nachricht über ICQ schicken XraYSoLo eine Nachricht über MSN schicken XraYSoLo eine Nachricht über Skype™ schicken
Standard

um dich vor leerzeichen zu schützen, solltest du dir mal die funktion trim() ansehen.
weiterhin check' mal die arrays, denn die kommen mir ohne hochkommata nicht korrekt vor.
zusätzlich bedarf mysql_select_db() keiner verbindungskennung.


PHP-Code:
<?php
if (isset($_POST['Login'])) {
            
$pass md5($_POST['Pass']);
            
            
$db mysql_connect('localhost''***''***') or die("MySQL Connect Error!");
            
mysql_select_db('usr_web680_2') or die("Database Select Error!");
            
$sql "SELECT * FROM reg_user";
            
$result mysql_query($sql) or die(mysql_error());
            
$num mysql_numrows($result);
            
            for (
$i 0$i $num$i++) {
                
$row mysql_fetch_array($result);
                
                if (
$row[user] == $_POST['User']) {
                    if(
$row[pass] == $pass) {
                        if (
$row[blocked] == "1") {
                            
$blocked true;
                        } else {
                            
$_SESSION['nick'] = $row['nick'];
                            
$_SESSION['id'] = $row['id'];
                            
$_SESSION['rank'] = $row['rank'];
                            
$_SESSION['email'] = $row['email'];
                            
$_SESSION['eingelogt'] = true;
                        }
                    } else {
                        
$_SESSION['eingelogt'] = false;
                        
$error $err12;
                    }
                } else {
                    
$_SESSION['eingelogt'] = false;
                    
$error $err12;
                }
            }
        } 
?>
Nils aka XraYSoLo
XraYSoLo ist offline  
Alt 15.10.2007, 11:47  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

Mach mehr debugging, wo geht er wohin in welchen If Zweig (ergo Echo ausgaben) damit du weist, wo er rausspring, bzw wo er eben nicht "richtig" hinkommt.

Das mit den fehlenden hochkommatas ist auch ein Punkt

Grüße
Da Psy
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle ist offline  
Alt 15.10.2007, 13:02  
Benutzer
 
Registriert seit: 02.10.2007
Beiträge: 52
DJ Nuno befindet sich auf einem aufstrebenden Ast
Standard

Ok, das Problem muss definitiv bei den Sessions liegen denn ich habe jetzt mal schön alles ausgeben lassen. und es kommt komischerweise das bei einem User der nicht funktioniert bzw. wo er mir sagt das die daten falsch sind:

Zitat:
User: DJ Nuno
Pass: e10adc3949ba59abbe56e057f20f883e
Post User: DJ Nuno
Post Pass: e10adc3949ba59abbe56e057f20f883e
User Erkannt!
Passwort Erkannt!
Nicht Geblockt!
und das bei dem User der funktioniert:

Zitat:
User: log
Pass: e10adc3949ba59abbe56e057f20f883e
Post User: log
Post Pass: e10adc3949ba59abbe56e057f20f883e
User Erkannt!
Passwort Erkannt!
Nicht Geblockt!
also neue frage: Wie kann ich sessions richtig leeren bzw. die Deklaration löschen? war das mit unset???

Danke im Vorraus!
DJ Nuno ist offline  
Alt 15.10.2007, 13:26  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

Richtig

Löschen:
unset($var) bzw unset($_SESSION['var'])

Leeren:
$_SESSION['var'] = '';
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle ist offline  
Alt 15.10.2007, 14:17  
Benutzer
 
Registriert seit: 02.10.2007
Beiträge: 52
DJ Nuno befindet sich auf einem aufstrebenden Ast
Standard

Leider hat es nichts gebracht die Sessions vorher zu löschen, bzw. zu leeren.

Hier mal der ganze Quellcode wenn jemand weitere tipps oder vorschläge hat bin ich sehr dankbar.


PHP-Code:
<?
    
include("errors.php");
    
$error "";
    
$blocked false;
    unset(
$_SESSION['nick']);
    unset(
$_SESSION['id']);
    unset(
$_SESSION['rank']);
    unset(
$_SESSION['email']);
    unset(
$_SESSION['eingelogt']);
    
        if (isset(
$_POST['Login'])) {
            
$pass trim(md5($_POST['Pass']));
            
            
$db mysql_connect('localhost''***''***') or die("MySQL Connect Error!");
            
mysql_select_db('usr_web680_2'$db) or die("Database Select Error!");
            
$sql "SELECT * FROM reg_user";
            
$result mysql_query($sql) or die(mysql_error());
            
$num mysql_numrows($result);
            
            for (
$i 0$i $num$i++) {
                
$row mysql_fetch_array($result);
                echo 
"User: ".$row['user'].'<br/>';;
                echo 
"Pass: ".$row['pass'].'<br/>';;
                echo 
"Post User: ".$_POST['User'].'<br/>';;
                echo 
"Post Pass: ".$pass.'<br/>';;
                if (
$row['user'] == $_POST['User']) {
                    echo 
'User Erkannt!<br />';
                    if(
trim($row['pass']) == $pass) {
                        echo 
'Passwort Erkannt!<br />';
                        if (
$row['blocked'] == "1") {
                            
$blocked true;
                            echo 
'Geblockt!<br />';
                        } else {
                            echo 
'Nicht Geblockt!<br />';
                            
$_SESSION['nick'] = $row['nick'];
                            
$_SESSION['id'] = $row['id'];
                            
$_SESSION['rank'] = $row['rank'];
                            
$_SESSION['email'] = $row['email'];
                            
$_SESSION['eingelogt'] = true;
                        }
                    } else {    
                        
$_SESSION['eingelogt'] = false;
                        
$error $err12;
                        echo 
'Passwort Falsch!<br />';
                    }
                } else {
                    
$_SESSION['eingelogt'] = false;
                    
$error $err12;
                    echo 
'User Falsch!<br />';
                }
                echo 
'<p></p>';
            }
        }

    if(
$_SESSION['eingelogt'] == true) {
        echo 
'<meta http-equiv="Refresh" content="2;URL='.$_SERVER['PHP_SELF'].'?link=news" />
              <div align="center"><strong>Willkommen '
.$_SESSION['nick'].'!</strong></div>';
    } elseif(
$blocked == true) {
        echo 
'<div class="rotfett" align="center"><strong>Du Wurdest Geblockt!</strong></div>';
    } else {
        echo 
'<form id="Login" name="Login" method="post" action="'.$_SERVER['PHP_SELF'].'?link=login&user='.$_POST['User'].'">
          <table width="100%" border="0" cellspacing="2">
            <tr>
              <td width="40%" colspan="2"><div class="rotfett" align="center">'
.$error.'</div></td>
            </tr>
            <tr>
              <td width="40%">&nbsp;</td>
              <td width="60%">&nbsp;</td>
            </tr>
            <tr>
              <td><div align="right"><strong>Username:</strong></div></td>
              <td><label>
                <input class="input" name="User" type="text" id="User" size="30" value="'
.$_GET['user'].'">
              </label></td>
            </tr>
            <tr>
              <td><div align="right"><strong>Passwort:</strong></div></td>
              <td><label>
                <input class="input" name="Pass" type="password" id="Pass" size="30">
              </label></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td><input class="button" type="submit" name="Login" id="Login" value="Login"></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td>&nbsp;</td>
            </tr>
            <tr>
              <td height="21" colspan="2"><div align="center"><a href="'
.$_SERVER['PHP_SELF'].'?link=forgotpw">Passwort vergessen</a><br />
                <a href="'
.$_SERVER['PHP_SELF'].'?link=register">Registrieren</a></div>
              <label></label></td>
            </tr>
          </table>
        </form>'
;
    }
?>
in der Datenbank steht folgendes:

id | blocked | indi | datum | user | pass | nick
1 | 0 | 123456 |15.10.2007 06:29:36 | DJ Nuno | e10adc3949ba59abbe56e057f20f883e | DJ Nuno
17 | 0 |123456 |15.10.2007 07:05:51 |bla |85c6ed79dc9359fadab3d3b521813b5a |Hans
16 | 0 | 123456 | 15.10.2007 06:33:48 | log | e10adc3949ba59abbe56e057f20f883e | hallo

Der einzige User der funktioniert ist "log"...

Geändert von DJ Nuno (15.10.2007 um 14:25 Uhr).
DJ Nuno ist offline  
Alt 15.10.2007, 14:57  
Erfahrener Benutzer
 
Registriert seit: 14.10.2007
Beiträge: 306
PHP-Kenntnisse:
Fortgeschritten
Papst befindet sich auf einem aufstrebenden Ast
Standard

Frag doch den Query anders ab, da sparst du dir die Schleife.
PHP-Code:
<?php
$pass 
md5($_POST['Pass']);
$user addslashes($_POST['User']);
$result mysql_query("SELECT * FROM `reg_user` WHERE `user` = '{$user}' AND `pass` = '{$pass}'");
$userdata mysql_fetch_assoc($result);
if (!
$userdata)
 die(
'Falsche Daten');
?>
Papst ist offline  
Alt 16.10.2007, 01:05  
Benutzer
 
Registriert seit: 02.10.2007
Beiträge: 52
DJ Nuno befindet sich auf einem aufstrebenden Ast
Standard

Hab das Problem gefunden!
Darauf hätte ich eigenntlich schon früher kommen müssen, für die, die wissen wollen was das problem war:

PHP-Code:
 <?php
if (isset($_POST['Login'])) {
            
$pass md5($_POST['Pass']);
            
            
$db mysql_connect('localhost''***''***') or die("MySQL Connect Error!");
            
mysql_select_db('usr_web680_2') or die("Database Select Error!");
            
$sql "SELECT * FROM reg_user";
            
$result mysql_query($sql) or die(mysql_error());
            
$num mysql_numrows($result);
            
            for (
$i 0$i $num$i++) {
                
$row mysql_fetch_array($result);
                
                if (
$row[user] == $_POST['User']) { // Der erste User in der Dattenbank wird aufgerufen und verglichen
                    
if($row[pass] == $pass) {       // Alle Daten Stimmen
                        
if ($row[blocked] == "1") {
                            
$blocked true;        // User Nicht geblockt
                        
} else {
                            
$_SESSION['nick'] = $row['nick'];
                            
$_SESSION['id'] = $row['id'];
                            
$_SESSION['rank'] = $row['rank'];
                            
$_SESSION['email'] = $row['email'];
                            
$_SESSION['eingelogt'] = true;     // Eingelogt!
                        
}
                    } else {
                        
$_SESSION['eingelogt'] = false;
                        
$error $err12;
                    }
                } else { 
// Beim zweiten durchgang Stimmt der User nicht mehr!
                    
$error $err12;
                    
$_SESSION['eingelogt'] = false;  // Nicht mehr eingeloggt, also zugangsdaten Falsch, GANZ BÖSER FEHLER!  
                
}
            }
        } 
?>
Erklärung warum sich nur einer einlogen konnte:
Der User stand in der Datenbank ganz am ende, also auch kein weiterer nick zu vergleichen. So konnte der fehler auch nicht auftretten.

Eine zeile die mich den ganzen tag beschäftigt hat

Vielen dank an alle die sich die mühe gemacht haben mit mir nach dem Problem zu suchen!
DJ Nuno ist offline  
Alt 16.10.2007, 08:26  
creek
Gast
 
Beiträge: n/a
Standard

Was ist denn das für ein abendteuerliches Login-Skript? Willst du jedesmal _alle_ Daten durchlaufen?

Und ganz wichtig: PHP: Arrays - Manual
 
Alt 16.10.2007, 16:44  
Benutzer
 
Registriert seit: 02.10.2007
Beiträge: 52
DJ Nuno befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von creek Beitrag anzeigen
Was ist denn das für ein abendteuerliches Login-Skript? Willst du jedesmal _alle_ Daten durchlaufen?
ist mir erstmal noch egal, ich bin PHP Anfänger (^_^).
Ich weiss ich könnte auch den SQL Befehl ändern z.B. in:

PHP-Code:
$user htmlspecialchars($_POST['User']);
$sql "SELECT * FROM reg_user WHERE user=".$user
Aber erstmal ist mir wichtig das es überhaupt funktioniert, aber vielen dank für den hinweiss.
__________________
MFG
DJ Nuno
DJ Nuno 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
PN System Problem gollum1990 PHP Tipps 2006 4 09.05.2006 21:52
Sicheres Login System? PHP Tipps 2006 11 14.03.2006 15:05
Problem mit Login Script PHP Tipps 2007 4 15.11.2005 17:29
problem mit login PHP Tipps 2005-2 11 28.10.2005 14:10
Problem mit Login Bereich (Sessions, MySQL) nicobischof PHP Tipps 2005-2 6 19.10.2005 09:54
Login System für die eigene HP? Datenbanken 1 05.10.2005 19:48
Login problem bei phpmyadmin PHP Tipps 2005-2 2 23.09.2005 13:15
problem mit login script PHP Tipps 2005 26 20.05.2005 22:10
Problem mit postaci E-Mail System PHP Tipps 2005 5 06.05.2005 13:17
login problem PHP Tipps 2005 19 01.01.2005 21:52
Session Problem beim Login PHP Tipps 2004-2 6 15.12.2004 09:37
[Erledigt] problem mit login skript | mysql | cookie PHP Tipps 2004-2 13 07.12.2004 19:01
problem nach login aircrash PHP Tipps 2004-2 5 22.11.2004 18:55
login problem PHP Tipps 2004 8 30.07.2004 20:41
[Erledigt] Problem mit Login PHP Tipps 2004 6 07.07.2004 15:17

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
login system, php login system session select funktioniert nicht, php login system mit rang, dj nuno php.de passwort:, 85c6ed79dc9359fadab3d3b521813b5a, php login system, php login-system mit rank

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:58 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