Login-Check funktioniert nicht!
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
check
code
eingegeben code
einloggen
fehlerhafte kombination
fehlermeldung
feld
folgendes verwenden
header
http
index
limit
login
meldung
session
system
url
vergessen
-
Hallo,
ich habe gerade auf localhost ein Login-System programmiert.
Das Einloggen funktioniert ja auch, aber die Überprüfung, ob ein User eingeloggt ist funktioniert nicht!
Ich bekomme zwar keine Fehlermeldung angezeigt, aber wenn ich eingeloggt bin, kommt die Meldung, das ich nicht eingeloggt bin. -.-
Die login.php
<?php if(isset($_POST['submit']) AND $_POST['submit']=='Login'){ if(trim($_POST['Username'])=='Username') { $_POST['Username'] = ''; } if(trim($_POST['Password'])=='Passwort') { $_POST['Password'] = ''; } if (('' == $Username = trim($_POST['Username'])) OR ('' == $Password = trim($_POST['Password']))) { echo "<div class=\"fehler\">Bitte füllen Sie alle Felder aus!</div>"; } else { $sql22 = "SELECT id, username FROM user WHERE username = '".mysql_real_escape_string(trim($_POST['Username']))."' AND password = '".md5(trim($_POST['Password']))."' "; $result22 = mysql_query($sql22) OR die("<pre>\n".$sql22."</pre>\n".mysql_error()); $row22 = mysql_fetch_assoc($result22); if (mysql_num_rows($result22)==1){ $UserID = $row22['id']; $Hash = md5(trim($_POST['Password'])); $Username = $row22['username']; setcookie('UserID', $UserID, strtotime("+1 month")); setcookie('Password', $Hash, strtotime("+1 month")); setcookie('Username', $Username, strtotime("+1 month")); $_COOKIE['UserID'] = $UserID; $_COOKIE['Password'] = $Hash; $_COOKIE['Username'] = $Username; header("Location: ../user/index.php"); } else{ echo "<div class=\"fehler\">Sie konnten nicht eingeloggt werden.<br>\n". "Username oder Passwort fehlerhaft.<br>\n". "\n". "</div><a href=\"passwortvergessen\">Passwort vergessen?</a><br>\n"; } } } ?>
Die check.php
<?php session_start(); if (isset($_SESSION['user'])) {} else { if (isset($_COOKIE['UserID'])) { $sql33 = "SELECT id, username, password FROM user WHERE id = '".$_COOKIE['UserID']."' "; $result33 = mysql_query($sql33) OR die("<pre>\n".$sql33."</pre>\n".mysql_error()); $row33 = mysql_fetch_assoc($result33); if($_COOKIE['Username'] == $row33['username'] AND $_COOKIE['Password'] == $row33['password']) { $_SESSION['user'] = $row33['username']; setcookie('UserID', $_COOKIE['UserID'], strtotime("+1 month")); setcookie('Password', $row33['password'], strtotime("+1 month")); setcookie('Username', $row33['username'], strtotime("+1 month")); } } } ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Als erstes solltest du dir angewöhnen, deinen Code richtig einzurücken.
Es geht eigentlich viel einfacher:
login.php
<?php if(isset($_POST['username']) || isset($_POST['password'])) { $checkuser = $db->fetch_array($db->query("SELECT * FROM users WHERE username = '".$_POST['username']."' AND password = '".$_POST['password']."' LIMIT 1;")); if($checkuser['id'] > 0) { $_SESSION["id"] = $checkuser['id']; header("Location: check.php"); } else { echo "Du hast eine fehlerhafte Kombination von Nutzername und Passwort eingegeben."; } ?>
check.php
<?php @session_start(); if(!isset($_SESSION['id'])) { echo "Du bist nicht eingeloggt."; exit; } ?>
Du solltest das ganze noch bzgl. SQLi (http://www.lima-city.de/board/action:jump/1050627) schützen und das Passwort hashen. -
ufa schrieb:
Du solltest das ganze noch bzgl. SQLi (http://www.lima-city.de/board/action:jump/1050627) schützen und das Passwort hashen.
Die Passwörter sind mit md5 gehasht und ich möchte, das mein User eingeloggt bleibt, also ist deine Variante ohne Cookies für mich unbrauchbar. -
Ehm, die Session Variable erstellt ein Cookie, ist eben nur moderner wie $_COOKIE.
MD5 ist grob fahrlässig, verwende lieber hash_hmac mit sha512 sowie einem salting. -
Falls "isset" nicht funktioniert (was es bei mir häufig nicht tut) kannst du auch folgendes verwenden:
<?php @session_start(); if(($_SESSION['id']) == false) { echo "Du bist nicht eingeloggt."; exit; } ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage