Seite 1 von 1

login - streikt!!!

Verfasst: 11.01.2006 15:07
von waldes
hallo

habe gerade probiert das login-tutorial von www.php-resource.de von mrhappiness auszuführen. habe eigentlich vorwiegend mit copy/paste gearbeitet. meine tabelle users schaut zwar anders aus, aber ich habe den code so umgeschrieben dass eigentlich alles passen müßte. habe noch nicht sehr viel erfahrung mit sessions und ähnlichem und folglich auch noch nicht ein auge dafür entwickelt, was noch fehlt bzw. falsch ist. vielleicht könnt ihr ja mal kurz einen blick drauf werfen.

PROBLEM:

habe in meiner tabelle users bis jetzt erst einen benutzer(nämlich mich)
id = 1
vorname = xxxxxx
nachname = xxxxxx
nickname = waldes
email = xxx@xxx.xx
passwort = a (mit MD5)
sessionID = NULL

Wenn ich mich einlogen probier: erhalte ich immer: Ihre Anmeldedaten waren nicht korrekt!

Außerdem würde mich interessieren, wo ich den Link nach erfolgreicher anmeldung zur nächsten Seite(folglich meine Startseite) setzten kann.

Aber zuerst müß ja mal das Problem behoben werden, dass ich mich nicht anmelden kann.


logged_in.php

Code: Alles auswählen

<?
session_start();
include 'sessionhelpers.inc.php';
echo 'Sie sind ';
if (!logged_in())
    echo 'nicht ';
echo 'eingeloggt.<p />';
echo '<a href="login.php">Start</a>';
?> 


login.php

Code: Alles auswählen

<?
session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['login']))
{
    $userid=check_user($_POST['username'], $_POST['userpass']);
    if ($userid!=false)
        login($userid);
    else
        echo 'Ihre Anmeldedaten waren nicht korrekt!';
}
if (!logged_in())
    echo '<form method="post" action="login.php">
        <label>nickname</label><input name="username" type="text"><br>
        <label>passwort</label><input name="userpass" type="password" id="userpass"><br>
        <input name="login" type="submit" id="login" value="Einloggen">
    </form>';
else
    echo '<a href="login.php">Ausloggen</a>';
	echo '<p /><a href="logged_in.php">Check</a>';
?>
logout.php

Code: Alles auswählen

<?
session_start();
include 'sessionhelpers.inc.php';
echo 'Sie sind ';
if (!logged_in())
    echo 'nicht ';
echo 'eingeloggt.<p />';
logout();
echo 'Sie sind ';
if (!logged_in())
    echo 'nicht ';
echo 'eingeloggt.< p/>';
echo '<a href="login.php">Einloggen</a>';
?> 


sessionhelpers.inc.php

Code: Alles auswählen

<?
function connect()
{
    $con= mysql_connect('localhost','root','') or die(mysql_error());
     mysql_select_db('wm2006',$con) or die(mysql_error());
}

function check_user($name, $pass)
{
    $sql="SELECT id
    FROM users
    WHERE nickname='".$name."' AND passwort=('".$pass."')
    LIMIT 1";
    $result= mysql_query($sql) or die(mysql_error());
    if ( mysql_num_rows($result)==1)
    {
        $user=mysql_fetch_assoc($result);
        return $user['id'];
    }
    else
        return false;
}

function login($userid)
{
    $sql="UPDATE users
    SET sessionID'".session_id()."'
    WHERE id=".$userid;
     mysql_query($sql);
}

function logged_in()
{
    $sql="SELECT users.id
    FROM users
    WHERE sessionID='".session_id()."'
    LIMIT 1";
    $result= mysql_query($sql);
      return ( mysql_num_rows($result)==1);
}

function logout()
{
    $sql="UPDATE users
    SET sessionID=NULL
    WHERE sessionID'".session_id()."'";
     mysql_query($sql);
}

connect();
?> 

Verfasst: 11.01.2006 15:47
von fanrpg

Code: Alles auswählen

function check_user($name, $pass) 
{ 
    $sql="SELECT id 
    FROM users 
    WHERE nickname='".$name."' AND passwort=('".md5($pass)."') 
    LIMIT 1"; 
    $result= mysql_query($sql) or die(mysql_error()); 
    if ( mysql_num_rows($result)==1) 
    { 
        $user=mysql_fetch_assoc($result); 
        return $user['id']; 
    } 
    else 
        return false; 
}
Das sollte so schon eher gehen.

Verfasst: 11.01.2006 16:22
von waldes
hallo

danke für die bemühung, aber ich glaube es liegt woanders. ich habe die alte function durch deine ersetzt.
das ergebnis: ich gebe nickname=waldes und passwort=a ein. es passiert nix, aber es kommt auch keine fehlermeldung wie "die anmeldedaten waren nicht korrekt" zurück. außerdem ist die sessionID in der users-tabelle immer noch auf NULL.

somit muss das problem wohl wo anders liegen. aber dass muss ja nicht heißen dass deine methode falsch ist, ich glaub auch dass deine methode richtiger ist(MD5 halt).

ich verstehe nur nicht, wann und wo ich nach korrekter eingabe meiner benutzerdaten(nickname, passwort) auf die hauptseite(startseite.htm) gelang. ich muss doch irgendwann mal im code stehen haben: (mal ganz simpl)= wenn login erfolgreich href to startseite.html.

hoffe auf deine antwort, waldes

Verfasst: 11.01.2006 16:27
von fanrpg
Soll ja auch keinen Test zurückgeben wenn man erfolgreich eingeloggt worden ist. So eine Meldung müsstest du dann selbst reinschreiben.

Verfasst: 11.01.2006 16:37
von waldes
problem 1: sessionID immer noch auf NULL

problem 2: wenn ich den link "Check" ausführe - der unter den schaltflächen liegt - bekomme ich als antwort: Sie sind nich eingeloggt!

problem 3: wo muss ich im code hinschreiben, dass nach korrekter eingabe der benutzerdaten, der user automatisch zum geschützten bereich weitergeleitet wird. sprich zur startseite. das ist im prinzip ja nur eine zeile.

problem 3: wenn ich den link "Check" ausführe - der unter dem schaltflächen liegt - bekomme ich als antwort: Sie sind nich eingeloggt!

problem 4: verstehe nicht ganz, was du mit "test" meinst.

danke, waldes