Webdesign in Siegen

Userpanel - Update Session ID

Fragen zum Thema PHP können hier gestellt werden

Moderator: Basti

Userpanel - Update Session ID

Beitragvon =Max= am 21.09.2007, 15:37

Hallo habe mir ein Login System Tutorial bisschen an meine Bedürfnisse angepasst. Und zwar habe ich es so angepasst das es die Userdaten nicht aus der ursprünglichen tabelle user sondern aus dem forum us list (tabelle: php_users) Die Session ID wird in der spalte user_session_time geupdatet. Aber wenn man einmal in dem Teil eingeloggt war und sich wieder ausloggt updatet es die session id auf 0 (vorher z.b. 16534225) Jetzt geht auch das ein loggen nich mehr. Hier mal die Codes:

login.php
Code: Alles auswählen
<?php

session_start();
include_once('sessionhelpers.inc.php');

if ( isset($_POST['login']) ) {
    $userid = check_user($_POST['username'], $_POST['user_password']);
    if ( $userid ) {
        login($userid);
    } else {
        echo '<p>Ihre Anmeldedaten waren nicht korrekt!</p>';
    }
}

if ( !logged_in() ) {
    echo <<<END
<form method="post" action="login.php">
<label>Benutzername:</label> <input name="username" type="text"><br />
<label>Passwort:</label> <input name="user_password" type="password" id="user_password"><br />
<input name="login" type="submit" id="login" value="Einloggen">
</form>
END;
} else {
echo 'Du hast ';
$sql = 'SELECT user_id FROM phpbb_users WHERE user_session_time = \'' . session_id() . '\'';
}

?>


logout.php
Code: Alles auswählen
<?php

session_start();
include_once('sessionhelpers.inc.php');

echo '<p>Sie sind ';
if ( !logged_in() ) {
    echo 'nicht ';
}
echo 'eingeloggt.</p>';

logout();

echo '<p>Sie sind ';
if ( !logged_in() ) {
    echo 'nicht ';
}
echo 'eingeloggt.</p>';

echo '<p><a href="login.php">Einloggen</a></p>';

?>


sessionhelpers.inc.php
Code: Alles auswählen
<?php


/**
* @return void
*/
function connect () {
    $con = mysql_connect('localhost', '**********', '******') or exit(mysql_error());
    mysql_select_db('habbo-fans', $con) or exit(mysql_error());
}


/**
* @param string $name
* @param string $pass
* @return boolean
*/
function check_user ( $name, $pass ) {
    // magic quotes anpassen
    if ( get_magic_quotes_gpc() ) {
        $name = stripslashes($name);
        $pass = stripslashes($pass);
    }
    // escapen von \x00, \n, \r, \, ', " und \x1a
    $name = mysql_real_escape_string($name);
    // escapen von % und _
    $name = str_replace('%', '\%', $name);
    $name = str_replace('_', '\_', $name);

    $sql = 'SELECT user_id FROM phpbb_users WHERE username = \'' . $name . '\' AND user_password=\'' . md5($pass) . '\'';
    if ( !$result = mysql_query($sql) ) {
        exit(mysql_error());
    }
    if ( mysql_num_rows($result) == 1 ) {
        $user = mysql_fetch_assoc($result);
        return ( $user['user_id'] );
    } else {
        return ( false );
    }
}


/**
* @param int $userid
* @return void
*/
function login ( $userid ) {
    $sql = 'UPDATE phpbb_users SET user_session_time = \'' . session_id() . '\' WHERE user_id = ' . ((int)$userid);
    if ( !mysql_query($sql) ) {
        exit(mysql_error());
    }
}


/**
* @return boolean
*/
function logged_in () {
    $sql = 'SELECT user_id FROM phpbb_users WHERE user_session_time = \'' . session_id() . '\'';
    if ( !$result = mysql_query($sql) ) {
        exit(mysql_error());
    }
    return (mysql_num_rows($result) == 1);
}


/**
* @return void
*/
function logout () {
    $sql = 'UPDATE phpbb_users SET user_session_time = NULL WHERE user_session_time = \'' . session_id() . '\'';
    if ( mysql_query($sql) ) {
        exit(mysql_error());
    }
}

connect();

?>


soll-geschuetzt-werden.php
Code: Alles auswählen
<?php

session_start();
include_once('sessionhelpers.inc.php');

echo 'Sie sind ';
if ( !logged_in() ) {
    echo 'nicht ';
}
echo 'eingeloggt.<p />';

if ( !logged_in() ) {
    echo '<p><a href="login.php">Anmelden</a></p>';
}



if ( logged_in() ) {
    echo '<p>Geschützter Bereich</p>';

    echo '<p><a href="logout.php">Ausloggen</a></p>';
}

?>


Ich hoffe jemand kann mir helfen! Das einloggen im Forum funktioniert trotzdem
=Max=
Mitglied
 
Beiträge: 399
Registriert: 14.01.2007

Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast