[PHP] Login funktioniert nicht

Xoneris

Stammgast
Hallo Leute

Ich kriege gleich Störungen !

Ich habe ein kleines Login gemacht aber dieses teil checkt das einfach nicht.
hier mal der Code

Code:
<?php
include("function.php");
include("errors.php");
dbconnect();
head();
if (isset($_POST["login"]))
{
	$benutzer = $_POST["username"];
	$pw = md5($_POST["passwd"]);
	
	$db_abfrg = mysql_query("SELECT passwort FROM users WHERE benutzername = '".$benutzer."'") or die(mysql_error());
	$row = mysql_fetch_object($db_abfrg);
	$pass = $row->passwort;
	
	if ($pw == $pass)
	{
	echo "es hat geklappt =D";
	}
	else
	{
	echo "<br />es hat nicht geklappt -.-";
	}
	
	
}
else
{
echo "
<body>
	<form method='post' action='index.php'>
		<center>
		<fieldset id='login'>
			<legend>Login</legend>
				<table>
					<tr>
						<td colspan='2'><h2>Login</h2></td>
					</tr>
					
					<tr>
						<td>Benutzername:</td>
						<td><input type='text' name='username'/><br/></td>
					</tr>
					
					<tr>
						<td>Passwort:</td>
						<td><input type='password' name='passwd' /><br/></td>
					</tr>
					
					<tr>
						<td colspan='2'><input type='submit' name='login' value='Login' /></td>
					</tr>
				</table>
		</fieldset>
		</center>
	</form>
</body>
</html>
";
}
?>

Ich schaffe es einfach nicht das $pass und $pw gleich sind aber ich hab schon alles 10 mal durchkontoroliert.
-> Ich hab verbindung zur DB
-> Alle Namen stimmen
-> Daten sind in der DB vorhanden

Das Problem ist so wie ich es bis jetzt herausgefunden habe, das er keinen Wert aus der DB holen kann, aber ich weiss nicht wieso. Alle Namen stimmen hab alles sicher 10 mal durchkontoroliert.

Könnt ihr mir helfen ? <.<

MFG Xoneris
 

Nebuk

PCtipp-Moderation
Teammitglied
Ich kenne mich zwar noch nicht so gut mit PHP aus, jedoch konnte ich keinen Fehler finden. Vielleicht tröstet dich das, dass du nicht der einzigste bist.

Evtl. eine falsche Bezeichnung/Bezug (z.B. der PW-Spalte) :-(
 

Google

Stammgast
Ich seh den Fehler jetzt auch nicht gerade, doch ich kann dir gleichwohl einen Tipp geben.

Ich mach das immer so: Lass einfach mal zum Test die beiden Variablen ausgeben. (echo()).

Höchstwahrscheinlich wird eine Variable gar keinen Wert annehmen, oder du merkst dass das md5 in der Datenbank falsch ist (hab ich auch schon geschafft =) )

Gruss
 

Stromer92

Stammgast
Ersetze dein Script mal probehalber durch das folgende:
PHP:
<?php
include("function.php");
include("errors.php");
dbconnect();
head();
if (isset($_POST["login"]))
{
    $benutzer = $_POST["username"];
        $errlog = 'Benutzername Zeile8: '.$benutzer;
    $pw = md5($_POST["passwd"]);
        $errlog .= '<br>Passwort Zeile10: '.pw;
    $query = "SELECT passwort FROM users WHERE benutzername = '".$benutzer."'";
        $errlog .= '<br>Datenbankabfrage Zeile12: '.$query;
    $db_abfrg = mysql_query($query) or die(mysql_error());
    $row = mysql_fetch_object($db_abfrg);
        $errlog .= '<br>Passwort Zeile16: '.$row->passwort;
    $pass = $row->passwort;
        $errlog .= '<br>Passwort Zeile18: '.$pass;
        $errlog .= '<br><br>Passwortvergleich $pw:'.$pw.'$pass: '.$pass;
    if ($pw == $pass)
    {
    echo "es hat geklappt =D";
    }
    else
    {
    echo "<br />es hat nicht geklappt -.-";
    }
    
    
}
else
{
echo "
<body>
    <form method='post' action='index.php'>
        <center>
        <fieldset id='login'>
            <legend>Login</legend>
                <table>
                    <tr>
                        <td colspan='2'><h2>Login</h2></td>
                    </tr>
                    
                    <tr>
                        <td>Benutzername:</td>
                        <td><input type='text' name='username'/><br/></td>
                    </tr>
                    
                    <tr>
                        <td>Passwort:</td>
                        <td><input type='password' name='passwd' /><br/></td>
                    </tr>
                    
                    <tr>
                        <td colspan='2'><input type='submit' name='login' value='Login' /></td>
                    </tr>
                </table>
        </fieldset>
        </center>
    </form>
</body>
</html>
";
}
echo '<br><br><br>Errorlog:<br>--------------<br>';
echo $errlog;
echo '<br>--------------';
?>

Poste dann das Ergebnis vom Errorlog.

Das Script ist ungestetet. Vllt hat sich irgendwo der Fehlerteufel eingeschlichen. Aber ich denke, du erkennst den sinn davon, also kannst du das auch selbst korrigieren.
 

Dragonlord

PCtipp-Moderation
Teammitglied
Titel

Ich habe einmal den Titel von "Ich verzweifle ..." auf das echte Problem abgeändert.

lg Roger
 

Xoneris

Stammgast
So ich habe das Script nun mal probiert, danke übrigens ^^

Code:
es hat nicht geklappt -.-

Errorlog:
--------------
Benutzername Zeile8: Test
Passwort Zeile10: 81dc9bdb52d04dc20036dbd8313ed055
Datenbankabfrage Zeile12: SELECT passwort FROM users WHERE benutzername = 'Test'
Passwort Zeile16: 
Passwort Zeile18: 

Passwortvergleich 
$pw: 81dc9bdb52d04dc20036dbd8313ed055
$pass:

Ich habe Errorlog zwar noch nie benutzt aber ich seh schon den sinn und ich sehe das einiges nicht so läuft wie es laufen sollte...

Er kann also das Passwort nicht aus der DB holen aber ich weiss echt nicht warum. Das Atribute passwort exisitert die Tabelle users gibts auch und dadrin ist auch ein user mit benutzernamen Test

schaut selber:
http://www1.minpic.de/bild_anzeigen.php?id=97710&key=52111887&ende
http://www1.minpic.de/bild_anzeigen.php?id=97711&key=16674334&ende

hatte übrigens doch noch einen kleinen fehler drin irgendwo wurde das '$' vergessen, aber egal ^^

PS: Wie macht man so ein PHP Code quote ?
 
Zuletzt bearbeitet:

Dragonlord

PCtipp-Moderation
Teammitglied
SQL-Query

Ich gebe einmal stark davon aus, dass Du MySQL verwendest. Versuche doch einmal den folgenden Code für die Abfrage:
PHP:
$query =  mysql_query("SELECT passwort, benutzername FROM users WHERE benutzername = '.$benutzer.'");

lg Roger
 
Zuletzt bearbeitet:

Xoneris

Stammgast
@nebuk
danke für die Info ^^

@Dragonlord
Ich habe es nun so probiert:
PHP:
$query = "SELECT benutzername, passwort FROM users WHERE benutzername = '".$benutzer."'";
aber es löst das Problem nicht wirklich es bleibt immer noch beim alten, also nix...


€DIT:

Leute ich habe den Fehler gefunden... und ich bin seit 5minuten dabei meinen Kopf gegen den Tisch zu hauen...
Beim meinem PHP script wo die benutzer erstellt werden habe ich zwischen den INSERTS ein leerzeichen deswegen hatte der jetzt bei jedem DB Eintrag ein leerzeichen davor... -.-
trozdem danke für die schnelle HIlfe.
 
Zuletzt bearbeitet:
Oben