Autor
|
Thread
|
17.08.2008 21:00 Uhr
|
Login geht nicht
|
wmmk
|
Forenuser
|
|
registriert
|
17.08.2008
|
wohnt in
|
|
Beiträge
|
10
|
|
erst mal thx für dsa gute script. wwenn ich mich einloggen will steht da immer dann falses passowrt oder falscher nickname. aber beide sind richtig geschreiben. hab den code nicht veraendert. bhitte um schnelle antwort.
mfg wmmk
|
|
|
17.08.2008 22:59 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
Nen paar mehr daten brauch ich schon
haste die datenbank kontrolliert, also steht auch wirklich was drin? ist das passwort mit md5() codiert?
Lass dir mal den Query zum auslesen aus der Datenbank ausgeben (der, der ausgeführt wird, wenn du den Loginbutton drückst).
Un poste mal den entsprechenden Quellcode
|
|
|
18.08.2008 07:54 Uhr
|
|
wmmk
|
Forenuser
|
|
registriert
|
17.08.2008
|
wohnt in
|
|
Beiträge
|
10
|
|
so in der db steht was drin! der quellcode:
Code:
<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- TemplateBeginEditable name="doctitle" -->
<title>TsG Clan - Login</title>
<!-- TemplateEndEditable -->
<!-- TemplateBeginEditable name="head" -->
<!-- TemplateEndEditable -->
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<?php
error_reporting(E_ALL);
$MYSQL_HOST = 'localhost';
$MYSQL_USER = 'tsg-clan_wmmk';
$MYSQL_PASS = '*************';
$MYSQL_DATA = 'tsg-clan_wmmk';
$connid = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) OR die("Error: ".mysql_error());
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());
// liefert die Rechte eines Users ..
function getRights()
{
$rights = array();
// .. indem die Rechte eines User aus der Datenbank ausgewählt werden..
if(isset($_SESSION['UserID'])){
$sql = "SELECT
Recht
FROM
Rechte
WHERE
UserID = '".$_SESSION['UserID']."'
";
$result = mysql_query($sql) OR die ("<pre>\n".$sql."</pre>\n".mysql_error());
$rights = array();
// .. und als array zurückgegeben werden
while($row = mysql_fetch_assoc($result))
$rights[] = $row['Recht'];
}
return $rights;
}
// Loggt einen User ein, ..
function doLogin($ID, $Autologin=false)
{
// .. indem die aktuelle Session ID in der Datenbank gespeichert wird
$sql = "UPDATE
User
SET
SessionID = '".mysql_real_escape_string(session_id())."',
Autologin = NULL,
IP = '".$_SERVER['REMOTE_ADDR']."',
Letzte_Aktion = '".mysql_real_escape_string(time())."',
Letzter_Login = '".mysql_real_escape_string(time())."'
WHERE
ID = '".$ID."'
";
mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
// Wenn 'eingeloggt bleiben' aktiviert wurde
if($Autologin){
// Zufallscode erzeugen
$part_one = substr(time()-rand(100, 100000),5,10);
$part_two = substr(time()-rand(100, 100000),-5);
$Login_ID = md5($part_one.$part_two);
// Code im Cookie speichern, 10 Jahre dürfte genügen
setcookie("Autologin", $Login_ID, time()+60*60*24*365*10);
$sql = "UPDATE
User
SET
Autologin = '".$Login_ID."'
WHERE
ID = '".$ID."'
";
mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
}
// Daten des Users in der Session speichern
$sql = "SELECT
Nickname
FROM
User
WHERE
ID = '".$ID."'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
$row = mysql_fetch_assoc($result);
$_SESSION['UserID'] = $ID;
$_SESSION['Nickname'] = $row['Nickname'];
// Rechte in der Session speichern
$_SESSION['Rechte'] = getRights();
}
if(isset($_POST['submit']) AND $_POST['submit']=='Einloggen'){
// Falls der Nickname und das Passwort übereinstimmen..
$sql = "SELECT
ID
FROM
User
WHERE
Nickname = '".mysql_real_escape_string(trim($_POST['Nickname']))."' AND
Passwort = '".md5(trim($_POST['Passwort']))."'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
// wird die ID des Users geholt und der User damit eingeloggt
$row = mysql_fetch_assoc($result);
// Prüft, ob wirklich genau ein Datensatz gefunden wurde
if (mysql_num_rows($result)==1){
doLogin($row['ID'], isset($_POST['Autologin']));
echo "<h4>Willkommen ".$_SESSION['Nickname']."</h4>\n";
echo "Sie wurden erfolgreich eingeloggt.<br>\n".
"Zur <a href=\"index.php\">Startseite</a>\n";
}
else{
echo "Sie konnten nicht eingeloggt werden.<br>\n".
"Nickname oder Passwort fehlerhaft.<br>\n".
"Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Login-Formular</a>\n";
}
}
else{
echo "<form ".
" name=\"Login\" ".
" action=\"".$_SERVER['PHP_SELF']."\" ".
" method=\"post\" ".
" accept-charset=\"ISO-8859-1\">\n";
echo "Nickname :\n";
echo "<input type=\"text\" name=\"Nickname\" maxlength=\"32\">\n";
echo "<br>\n";
echo "Passwort :\n";
echo "<input type=\"password\" name=\"Passwort\">\n";
echo "<br>\n";
echo "eingeloggt bleiben :\n";
echo "<input type=\"checkbox\" name=\"Autologin\" value=\"1\">\n";
echo "<br>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"Einloggen\">\n";
echo "<br>\n";
echo "<a href=\"passwort.php\">Passwort vergessen</a> oder noch nicht <a href=\"registrierung.php\">registriert</a>?\n";
echo "</form>\n";
}
?>
</body>
</html>
! so habe nru die db User_Rechte in Rechte umbenannt weil es so net ging! so in md5() ist es auch codiert. sry wegen der schreibweise gestern... war schon müde..^^ joa dat wars ja erst ma wieder
Dieser Beitrag wurde am 18.08.2008 um 07:55:51 Uhr von wmmk zum 1. Mal editiert.
|
|
|
18.08.2008 13:15 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
Mach mal bitte die Testausgaben.
Ich möchte gern wissen, was in den Variblen $sql und $row drin steht.
PHP:
<?php
// Das unten stehende $sql bitte mir var_dump() ausgeben lassen
$sql = "SELECT
ID
FROM
User
WHERE
Nickname = '".mysql_real_escape_string(trim($_POST['Nickname']))."' AND
Passwort = '".md5(trim($_POST['Passwort']))."'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
// Das unten stehende $row bitte mir var_dump() ausgeben lassen
$row = mysql_fetch_assoc($result);
?>
Und nimm zum formatieren bitte die PHP tags
Ich hoffe du hast auf Groß- und Kleinschreibung geachtet
|
|
|
18.08.2008 13:32 Uhr
|
|
wmmk
|
Forenuser
|
|
registriert
|
17.08.2008
|
wohnt in
|
|
Beiträge
|
10
|
|
wo soll i den code einfügen? in ne datei? einfach so
|
|
|
18.08.2008 16:47 Uhr
|
|
gizzy2k7
|
User
|
|
registriert
|
18.08.2008
|
wohnt in
|
|
Beiträge
|
4
|
|
schreib einfach unter die stelle die flitze gepostet hat
var_dump($row);
var_dump($sql);
Rufe die Seite nochmal auf und poste hier, was dort steht
Dieser Beitrag wurde am 18.08.2008 um 16:47:50 Uhr von gizzy2k7 zum 1. Mal editiert.
|
|
|
18.08.2008 17:43 Uhr
|
|
wmmk
|
Forenuser
|
|
registriert
|
17.08.2008
|
wohnt in
|
|
Beiträge
|
10
|
|
Code:
bool(false) string(237) "SELECT ID FROM User WHERE Nickname = 'wmmk' AND Passwort = 'e2a01d1603e3403d4c76ef14618b79ce' " Sie konnten nicht eingeloggt werden.
Nickname oder Passwort fehlerhaft.
Zurück zum Login-Formular
so .^^ anscheinend steh ja was drin
..
Dieser Beitrag wurde am 18.08.2008 um 17:43:31 Uhr von wmmk zum 1. Mal editiert.
|
|
|
19.08.2008 13:07 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
nimm mal die Passwortbedingung raus,
also so, dass die WHERE-Bedingung nur den Usernamen enthält
wenns klappt stimmt was mit dem Passwort nicht, dann musste vllt noma den user neu anlegen.
ich hoffe, dass das Passwort in der MySQL-Datenbank auch verschlüsselt steht, ja ?
|
|
|
20.08.2008 09:43 Uhr
|
|
wmmk
|
Forenuser
|
|
registriert
|
17.08.2008
|
wohnt in
|
|
Beiträge
|
10
|
|
also veschlüsselt is es in der db auch mit der Where Bedingung probier ichs aus und guck dann schreib ichs hier
|
|
|
20.08.2008 09:44 Uhr
|
|
wmmk
|
Forenuser
|
|
registriert
|
17.08.2008
|
wohnt in
|
|
Beiträge
|
10
|
|
ok login geht. aber man kann auch nur nen existierenden nickname eingeben und kein password und er logt trotzdem ein. scheint wohl dran zuliegen das i die pw bediungng ruasgenommen habe...
Dieser Beitrag wurde am 20.08.2008 um 09:50:11 Uhr von wmmk zum 1. Mal editiert.
|
|
|