Hallo ihr PhP'ler,
Ich habe mich mal an ein User Login System gewagt und bin auch schon recht weit:
Testen unter:
www.zeeus.de/operator.php
gast
gast
Es funzt soweit sogut, aber sobald ich eine neue Seite aufrufe per link und dort die session starte, erstellt er eine neue SessionID!
Das besondere ist ich habe eine operator.php:
Diese stellt also eine Virtuelle Frametabelle her
die menue ist die navigationsseite
die loginseite loggt den user ein
diese holt sich die Functionen und Daten aus der secure.inc.php
So, das funktioniert nun alles, nun zu meinem Problem:
Über die menue.php(Navigationsseite) lade ich das Control Panel
control.php
Dort kann ich keine Daten mehr zum eingeloggten User abfragen, da er mir dort immer eine neue SessionID creiert.. und diese mit der in der DB vergleicht!
Ich probiere nun tagelang herum.. möchte die Sid eigentlich nur in der DB haben und nicht per Link mitführen!
Ich danke schonmal im Voraus
Mfg Pierre
Ich habe mich mal an ein User Login System gewagt und bin auch schon recht weit:
Testen unter:
www.zeeus.de/operator.php
gast
gast
Es funzt soweit sogut, aber sobald ich eine neue Seite aufrufe per link und dort die session starte, erstellt er eine neue SessionID!
Das besondere ist ich habe eine operator.php:
PHP-Code:
<?php
// -- zeeus.de webdesign -- modern art of style and fashion -- //
session_start();
include('../phptmp/config.inc.php');
include('../phptmp/datavars.inc.php');
echo("<html>\n");
echo(" <head>\n");
echo(" <title>");echo $title; echo("</title>\n");
echo(" </head>\n");
echo(" <body>\n");
echo("<table style=\"width: 100%\">\n");
echo(" <tr>\n");
echo(" <td colspan=\"2\">\n");
include("login.php");
echo(" </td>\n");
echo(" </tr>\n");
echo(" <tr>\n");
echo(" <td style=\"width: 200px\">\n");
include("menue.php");
echo(" </td>\n");
echo(" <td>\n");
include("../phptmp/link.inc.php");
echo(" </td>\n");
echo(" </tr>\n");
echo(" <tr> \n");
echo(" <td colspan=\"2\">\n");
include("unten.php");
echo(" </td>\n");
echo(" </tr>\n");
echo("</table>\n");
echo(" </body>\n");
echo("</html>\n");
?>
die menue ist die navigationsseite
die loginseite loggt den user ein
PHP-Code:
<?
session_start();
include('../phptmp/secure.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='$PHP_SELF'> ");
echo("<label>Benutzername:</label><input name='username' type='text'> ");
echo("<br> ");
echo(" <label>Passwort: </label><input name='userpass' type='password' id='userpass'> ");
echo("<br> ");
echo(" <input name='login' type='submit' id='login' value='Einloggen'> ");
echo("</form>");
}
// -----------------------------------------------------
if (logged_in())
{
$sql="SELECT UserName, UserLevel, UserLogin FROM users WHERE UserSession='".session_id()."'LIMIT 1";
$result= mysql_query($sql);
if (mysql_num_rows($result)) {
$row = mysql_fetch_array($result);
$UserName = $row['UserName'];
$UserLevel = $row['UserLevel'];
$UserLogin = $row['UserLogin'];
}
echo "Benutzername: ".$UserName;
echo "<br>";
echo "Userlevel: ".$UserLevel."<br>";
echo "<br>";
echo "Dein letzter Login: ".$UserLogin."<br>";
echo "<br>";
echo("<form method='post' action='logout.php'> ");
echo(" <input name='abmelden' type='submit' value='abmelden' > ");
echo("</form>");
echo "<hr>";
}
?>
PHP-Code:
<?
function connect()
{
$con=mysql_connect('xxx','xxx','xxx') or die(mysql_error());
mysql_select_db('xxx',$con) or die(mysql_error());
}
function check_user($name, $pass)
{
$sql="SELECT UserId, Userlogin, UserSession 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()."', Userlogin=now() WHERE UserId=".$userid;
mysql_query($sql);
}
function logout_idle()
{
$sql="UPDATE users SET UserSession=NULL WHERE Userlogin < NOW() - INTERVAL 5 MINUTE";
mysql_query($sql) or die(mysql_error());
}
function logged_in()
{
logout_idle();
$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();
?>
Über die menue.php(Navigationsseite) lade ich das Control Panel
control.php
Dort kann ich keine Daten mehr zum eingeloggten User abfragen, da er mir dort immer eine neue SessionID creiert.. und diese mit der in der DB vergleicht!
PHP-Code:
<?
session_start();
include('../phptmp/secure.inc.php');
// -----------------------------------------------------
$sql="SELECT Userid, UserName, UserLevel, UserLogin FROM users Where UserSession='".session_id()."' LIMIT 1";
$result= mysql_query($sql);
if (mysql_num_rows($result)) {
$row = mysql_fetch_array($result);
$UserName = $row['UserName'];
$UserLevel = $row['UserLevel'];
$UserLogin = $row['UserLogin'];
}
echo "Dein Name: ".$UserName;
echo "<br>";
echo "Dein Benutzerlevel: ".$UserLevel."<br>";
echo "<br>";
echo "Dein letzter Login: ".$UserLogin."<br>";
echo "<br>";
echo("</form>");
echo "<hr>";
?>
Ich danke schonmal im Voraus
Mfg Pierre
Kommentar