login - streikt!!!

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
waldes
Mitglied
Beiträge: 11
Registriert: 18.12.2005 12:53

login - streikt!!!

Beitrag 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();
?> 
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag 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.
waldes
Mitglied
Beiträge: 11
Registriert: 18.12.2005 12:53

Beitrag 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
Zuletzt geändert von waldes am 11.01.2006 16:31, insgesamt 1-mal geändert.
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

Soll ja auch keinen Test zurückgeben wenn man erfolgreich eingeloggt worden ist. So eine Meldung müsstest du dann selbst reinschreiben.
waldes
Mitglied
Beiträge: 11
Registriert: 18.12.2005 12:53

Beitrag 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
Antworten

Zurück zu „Coding & Technik“