kostenloser Webspace werbefrei: lima-city


Login-Check funktioniert nicht!

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    webfreclan

    Kostenloser Webspace von webfreclan

    webfreclan hat kostenlosen Webspace.

    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"));
       }
    }
    }
    ?>
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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.
  4. Autor dieses Themas

    webfreclan

    Kostenloser Webspace von webfreclan

    webfreclan hat kostenlosen Webspace.

    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.
  5. 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.
  6. 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;
    	}
    ?>
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!