php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.06.2010, 12:58  
Benutzer
 
Registriert seit: 14.06.2010
Beiträge: 72
PHP-Kenntnisse:
Anfänger
Aydin zeigte ein beschämendes Verhalten in der Vergangenheit
Standard problem beim login.php

Hallo Forum,

ich bin hier neu,
tut mir leid, wenn ich mein Thema in falsche Kategorie postere:


Ich bin noch PHP ein Einsteiger,
es geht um den folgenden Tutorial YouTube - PHP Tutorials: Register & Login: User login (Part 2) (Teil 2).

Mein Script:

PHP-Code:
<?php

    session_start
();

    
$username $_POST["username"];
    
$password $_POST["password"];
    
    if (
$username&&$password)                 // Wenn Benutzerdaten im folgendem Datenbank gefunden werden, dannn ----> else
    
{
        
$connect mysql_connect("localhost","root","") or die("Couldn´t connect!");
        
mysql_select_db("phplogin") or die("Couldn´t find Database!");
        
        
$query mysql_query("SELECT * FROM users WHERE username='$username'");            // TABELLE users muss angelegt werden
        
        
$numrows mysql_num_rows($query);
        
        if(
$numrows!=0)
        {
            while (
$row mysql_fetch_assoc($query));            
            {
                
$dbusername $row["username"];    
                
$dbpassword $row["password"];
            }
            
            
//check to see if they match!
            
if ($username==$dbusername&&$password==$dbpassword)
            {                
                echo 
"Sie sind erfolgreich angemeldet!";
            }
            
            else
                echo 
"Bitte überprüfen Sie Ihr Kennwort!";
        }        
        else
            die (
'Der Benutzer exestiert nicht!');  //Falls keine richtige Benuterdaten angegeben werden, kommt die Fehlermeldung
        
    
}

    else
        die(
'Bitte geben sie Ihre Zugangsdaten');    // Falls nichts eingegeben wird und auf LogIn geklickt wird kommt die Fehlermeldung






























?>
Mein Problem ist, wenn ich meine richtige Zugangsdaten angebe (ich habe einen User angelegt)
bekomme ich die Fehlermeldung: "Bitte überprüfen Sie Ihr Kennwort!"

Ich bin mir sicher, dass meine Zugangsdaten richtig sind und mein mysql_connect auch stimmt.

Kann mir bitte jemand helfen?
Auf einen Tipp würde ich mich sehr freuen


Mit freundlichen Grüßen
Aydin



------> Aydin-G
Aydin ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 14.06.2010, 13:11  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Dann lass dir doch mal den Username aus der Eingabe und den Username aus der Datenbank ausgeben (bzw. das Passwort). Dann siehst du ja welches der beiden Teile nicht richtig ist.

Und zum anderen solltest du dich um SQL Injection schlau machen. Dein Skript würde, wenn es so online verwendet werden würde, eine gefährliche Sicherheitslücke haben durch die ein paar Probleme entstehen können.
Flor1an ist offline  
Alt 14.06.2010, 13:13  
Erfahrener Benutzer
 
Registriert seit: 15.04.2010
Beiträge: 813
PHP-Kenntnisse:
Fortgeschritten
Paul.Schramenko befindet sich auf einem aufstrebenden Ast
Standard

Welche fehler werden ausgegeben? error_reporting an?

Außerdem
Am besten machst du die Abfrage direkt auf
Code:
$query = mysql_query("SELECT  COUNT(id) 
FROM users 
WHERE username='" .  mysql_real_escape_string($username) . "' AND password='" . md5(password)  . "'"); 
Und überprüfst dann ob Ergenisse zurückkommen, bspw. mit mysql_num_rows > 0
__________________
"My software never has bugs, it just develops random features."
"Real programmers don't comment. If it was hard to write, it should be hard to understand!"
Positive Bewertungen sind nicht unwillkommen...
Paul.Schramenko ist offline  
Alt 14.06.2010, 13:15  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
PHP-Code:
          while ($row mysql_fetch_assoc($query)); 
FInde ich auch sehr merkwürdig für den Anwendungszweck.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 14.06.2010, 13:16  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Eventuell ein Kandidat für den Code-Smell-Artikel, nikosch.

[edit] Das Semikolon ist wohl der Übeltäter. Bin mir nicht sicher, ob du darauf hinauswolltest.
Asipak ist offline  
Alt 14.06.2010, 13:18  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Definitiv sollten wir das in Code-Smells einbauen, sieht man sehr oft dass einzelne Zeilen in einer Schleife aufgerufen werden.
Flor1an ist offline  
Alt 14.06.2010, 13:18  
Erfahrener Benutzer
 
Registriert seit: 10.02.2009
Beiträge: 929
ragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Mensch
Standard

Zitat:
Zitat von Asipak Beitrag anzeigen
Eventuell ein Kandidat für den Code-Smell-Artikel, nikosch.
Definitiv.
Ist ja echt ein Wahnsinn, was man alles für "Schwachsinn" im Netz und auch in der Literatur findet..
ragtek ist offline  
Alt 14.06.2010, 13:19  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

Am Rande: Ist
PHP-Code:
$username==$dbusername 
nicht unnötig?
Trainmaster ist gerade online  
Alt 14.06.2010, 13:21  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Wow, das Semikolon hatte ich gar nicht gesehen! Ich meinte nur, dass ein Login-DS normalerweise einmalig pro Tabelle sein sollte.

Das semikolon habe ich schon bei Standardfehler drinnen, aber die unnütze Schleife nehme ich auf.

[edit]

Das dürfte dann auch die Lösung der Frage sein.
Wenn PHP wieder aus der Schleife herauskommt ist $row ja false, also leer. Damit auch $row["username"] und $row["password"] und damit $dbusername und $dbpassword.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 14.06.2010, 13:22  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Der einzige Fehler ist das Youtube-Tutorial!

Wenn ich noch mal nachdenke, macht das Semikolon wohl doch nichts kaputt, bricht nur die Schleife nach der ersten Zeile ab, oder? Bin mir gerade nicht mehr sicher.

[edit] Okay, also doch das Semikolon.
Asipak 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
Problem mit Basedir in PhP cmuch05 Datenbanken 9 08.01.2009 14:17
[Erledigt] Problem: PHP Selbe Datei mehr als 1 Mal soulan PHP Tipps 2008 13 28.11.2008 22:51
Problem Upload mehrere Dateien und schreiben in DB Lapje PHP Tipps 2008 1 22.10.2008 13:12
utf8 Problem (Daten aus DB auslesen) go1denboy PHP Tipps 2008 1 23.09.2008 12:19
Problem mit swfobjects R4v3r JavaScript, Ajax und mehr 8 21.09.2008 14:17
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
Problem mit Smarty ccfirefox HTML, Usability und Barrierefreiheit 1 25.10.2007 16:19
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem bei sessions in komb. m. cookies. header umgehen? Promaetheus PHP Tipps 2006 10 02.05.2006 15:52
Problem mit height Party-Pix HTML, Usability und Barrierefreiheit 3 29.03.2006 14:17
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34
Login Problem PHP Tipps 2004 4 04.06.2004 18:46

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
login php defekt, rorum-rauchfrei.de/login.php, login.php mit mehreren benutzernamen -mysql, or

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