Hallo zusammen,
habe gestern das Tutorial von MrHappiness gefunden und bin auch schwer
begeistert davon. Gut und leicht verständlich geschrieben, mit vielen für
Anfänger nicht unwichtigen Randbemerkungen. Danke für deine Mühe und
dein Engagement.
Leider funktioniert es bei mir nicht so prima, wie bei den vielen Anderen
hier im Forum, die von dieser klasse Arbeit schon profitiert haben. Sieht
(nach längerer Recherche) auch so aus, als habe niemand die Probleme, die
ich damit habe. Was aber nichts heißen muss, da ich kein großer Coder bin.
Habe alle Skripte per Copy&Paste 1:1 aus dem Tutorial
[COLOR=blue]http://php-resource.de/tutorials/read/38/4/[/COLOR]
übernommen und alle Dateien wie beschrieben benannt. Die DB-Tabelle
ebenfalls 1:1 angelegt.
Meine Probleme:
Nach erfolgreichem Login zeigt mir die login.php wie gewünscht zwei Links
an "Ausloggen" und "Check". Die Session-ID wird in die DB geschrieben.
1. Bei Klick auf "Check" sagt mir die logged_in.php an, dass ich nicht
eingelogged bin und bietet mir den Link "Start" an, um mich erneut
einzuloggen.
2. Bei Klick auf "Ausloggen" komme ich auf die logout.php, auf der dann
zweimal "Sie sind nicht eingeloggt." steht. ? Darüber hinaus wird in der DB
das Feld "UserSession" nicht auf NULL gesetzt, was die
Überprüfungsfunktion "logged_in()" in der sessionhelpers.inc.php natürlich
unmöglich macht.
Frage:
Kennt oder findet jemand die Probleme und mögliche Abhilfe?
Code login.php:
Code logged_in.php:
Code logout.php:
Code sessionhelpers.inc.php:
habe gestern das Tutorial von MrHappiness gefunden und bin auch schwer
begeistert davon. Gut und leicht verständlich geschrieben, mit vielen für
Anfänger nicht unwichtigen Randbemerkungen. Danke für deine Mühe und
dein Engagement.
Leider funktioniert es bei mir nicht so prima, wie bei den vielen Anderen
hier im Forum, die von dieser klasse Arbeit schon profitiert haben. Sieht
(nach längerer Recherche) auch so aus, als habe niemand die Probleme, die
ich damit habe. Was aber nichts heißen muss, da ich kein großer Coder bin.
Habe alle Skripte per Copy&Paste 1:1 aus dem Tutorial
[COLOR=blue]http://php-resource.de/tutorials/read/38/4/[/COLOR]
übernommen und alle Dateien wie beschrieben benannt. Die DB-Tabelle
ebenfalls 1:1 angelegt.
Meine Probleme:
Nach erfolgreichem Login zeigt mir die login.php wie gewünscht zwei Links
an "Ausloggen" und "Check". Die Session-ID wird in die DB geschrieben.
1. Bei Klick auf "Check" sagt mir die logged_in.php an, dass ich nicht
eingelogged bin und bietet mir den Link "Start" an, um mich erneut
einzuloggen.
2. Bei Klick auf "Ausloggen" komme ich auf die logout.php, auf der dann
zweimal "Sie sind nicht eingeloggt." steht. ? Darüber hinaus wird in der DB
das Feld "UserSession" nicht auf NULL gesetzt, was die
Überprüfungsfunktion "logged_in()" in der sessionhelpers.inc.php natürlich
unmöglich macht.
Frage:
Kennt oder findet jemand die Probleme und mögliche Abhilfe?
Code login.php:
PHP-Code:
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>Benutzername:</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="logout.php">Ausloggen</a>';
echo '<p /><a href="logged_in.php">Check</a>';
PHP-Code:
session_start();
include 'sessionhelpers.inc.php';
echo 'Sie sind ';
if (!logged_in())
echo 'nicht ';
echo 'eingeloggt.<p />';
echo '<a href="login.php">Start</a>';
PHP-Code:
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>';
PHP-Code:
function connect()
{
$con= mysql_connect('servername','benutzer','passwort')
or die (mysql_error());
mysql_select_db('datenbankname',$con)
or die(mysql_error());
}
function check_user($name, $pass)
{
$sql="SELECT UserId
FROM users
WHERE UserName='".$name."' AND UserPass=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['UserId'];
}
else
return false;
}
function login($userid)
{
$sql="UPDATE users
SET UserSession='".session_id()."'
WHERE UserId=".$userid;
mysql_query($sql);
}
function logged_in()
{
$sql="SELECT UserId
FROM users
WHERE UserSession='".session_id()."'
LIMIT 1";
$result= mysql_query($sql);
return ( mysql_num_rows($result)==1);
}
function logout()
{
$sql="UPDATE users
SET UserSession=NULL
WHERE UserSession='".session_id()."'";
mysql_query($sql);
}
connect();
Kommentar