Steeds uitgelogd worden

Installatie lukt niet? Plotseling een foutmelding. Of weet je niet hoe iets werkt. Problemen met phpBB2 kun je in dit archief opzoeken.
Forumregels

Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.
phpBB2.0.x
Gesloten
Mandrake Linux
Berichten: 521
Lid geworden op: 29 jan 2004, 22:41
Contacteer:

Steeds uitgelogd worden

Bericht door Mandrake Linux » 13 jan 2005, 19:24

Hoi
ik heeft net een DB upgadate van een andere forum en op mijne gezet
maar als ik dan naar staff ofzo gaat wordt uiitgelogd
alle DB zooi is uitgevoerd
ik snap er niks meer van :?

Gebruikersavatar
Bee
Berichten: 13403
Lid geworden op: 29 aug 2004, 10:30

Bericht door Bee » 13 jan 2005, 21:22

Je ziet geen fouten ofzo? Vroeger ook geen problemen mee gehad? Weet je zeker dat alle bestanden exact hetzelfde zijn?
... Maar ik modereer (nog) niet.

Mandrake Linux
Berichten: 521
Lid geworden op: 29 jan 2004, 22:41
Contacteer:

Bericht door Mandrake Linux » 13 jan 2005, 21:23

ja dat is hem hem nu juist
geen enekel fout gehad !
niks noppes
gewoon hard uitgelogd
en moet ik me weer inlogge

Gebruikersavatar
Bee
Berichten: 13403
Lid geworden op: 29 aug 2004, 10:30

Bericht door Bee » 13 jan 2005, 21:27

Owkee, duidelijk is nu dat het aan de sessions ligt. Eens kijken wat er fout zou kunnen zijn...
... Maar ik modereer (nog) niet.

Mandrake Linux
Berichten: 521
Lid geworden op: 29 jan 2004, 22:41
Contacteer:

Bericht door Mandrake Linux » 13 jan 2005, 21:33

  • <?php
    /***************************************************************************
    * sessions.php
    * -------------------
    * begin : Saturday, Feb 13, 2001
    * copyright : (C) 2001 The phpBB Group
    * email : support@phpbb.com
    *
    * $Id: sessions.php,v 1.58.2.11 2004/07/11 16:46:19 acydburn Exp $
    *
    *
    ***************************************************************************/

    /***************************************************************************
    *
    * This program is free software; you can redistribute it and/or modify
    * it under the terms of the GNU General Public License as published by
    * the Free Software Foundation; either version 2 of the License, or
    * (at your option) any later version.
    *
    ***************************************************************************/

    //
    // Adds/updates a new session to the database for the given userid.
    // Returns the new session ID on success.
    //
    function session_begin($user_id, $user_ip, $page_id, $auto_create = 0, $enable_autologin = 0)
    {
    global $db, $board_config;
    global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;

    $cookiename = $board_config['cookie_name'];
    $cookiepath = $board_config['cookie_path'];
    $cookiedomain = $board_config['cookie_domain'];
    $cookiesecure = $board_config['cookie_secure'];

    if ( isset($HTTP_COOKIE_VARS[$cookiename . '_sid']) || isset($HTTP_COOKIE_VARS[$cookiename . '_data']) )
    {
    $session_id = isset($HTTP_COOKIE_VARS[$cookiename . '_sid']) ? $HTTP_COOKIE_VARS[$cookiename . '_sid'] : '';
    $sessiondata = isset($HTTP_COOKIE_VARS[$cookiename . '_data']) ? unserialize(stripslashes($HTTP_COOKIE_VARS[$cookiename . '_data'])) : array();
    $sessionmethod = SESSION_METHOD_COOKIE;
    }
    else
    {
    $sessiondata = array();
    $session_id = ( isset($HTTP_GET_VARS['sid']) ) ? $HTTP_GET_VARS['sid'] : '';
    $sessionmethod = SESSION_METHOD_GET;
    }

    //
    if (!preg_match('/^[A-Za-z0-9]*$/', $session_id))
    {
    $session_id = '';
    }

    $last_visit = 0;
    $current_time = time();
    $expiry_time = $current_time - $board_config['session_length'];

    //
    // Try and pull the last time stored in a cookie, if it exists
    //
    $sql = "SELECT *
    FROM " . USERS_TABLE . "
    WHERE user_id = $user_id";
    if ( !($result = $db->sql_query($sql)) )
    {
    message_die(CRITICAL_ERROR, 'Could not obtain lastvisit data from user table', '', __LINE__, __FILE__, $sql);
    }

    $userdata = $db->sql_fetchrow($result);

    if ( $user_id != ANONYMOUS )
    {
    $auto_login_key = $userdata['user_password'];

    if ( $auto_create )
    {
    if ( isset($sessiondata['autologinid']) && $userdata['user_active'] )
    {
    // We have to login automagically
    if( $sessiondata['autologinid'] == $auto_login_key )
    {
    // autologinid matches password
    $login = 1;
    $enable_autologin = 1;
    }
    else
    {
    // No match; don't login, set as anonymous user
    $login = 0;
    $enable_autologin = 0;
    $user_id = $userdata['user_id'] = ANONYMOUS;
    }
    }
    else
    {
    // Autologin is not set. Don't login, set as anonymous user
    $login = 0;
    $enable_autologin = 0;
    $user_id = $userdata['user_id'] = ANONYMOUS;
    }
    }
    else
    {
    $login = 1;
    }
    }
    else
    {
    $login = 0;
    $enable_autologin = 0;
    }

    //
    // Initial ban check against user id, IP and email address
    //
    preg_match('/(..)(..)(..)(..)/', $user_ip, $user_ip_parts);

    $sql = "SELECT ban_ip, ban_userid, ban_email
    FROM " . BANLIST_TABLE . "
    WHERE ban_ip IN ('" . $user_ip_parts[1] . $user_ip_parts[2] . $user_ip_parts[3] . $user_ip_parts[4] . "', '" . $user_ip_parts[1] . $user_ip_parts[2] . $user_ip_parts[3] . "ff', '" . $user_ip_parts[1] . $user_ip_parts[2] . "ffff', '" . $user_ip_parts[1] . "ffffff')
    OR ban_userid = $user_id";
    if ( $user_id != ANONYMOUS )
    {
    $sql .= " OR ban_email LIKE '" . str_replace("\'", "''", $userdata['user_email']) . "'
    OR ban_email LIKE '" . substr(str_replace("\'", "''", $userdata['user_email']), strpos(str_replace("\'", "''", $userdata['user_email']), "@")) . "'";
    }
    if ( !($result = $db->sql_query($sql)) )
    {
    message_die(CRITICAL_ERROR, 'Could not obtain ban information', '', __LINE__, __FILE__, $sql);
    }

    if ( $ban_info = $db->sql_fetchrow($result) )
    {
    if ( $ban_info['ban_ip'] || $ban_info['ban_userid'] || $ban_info['ban_email'] )
    {
    message_die(CRITICAL_MESSAGE, 'You_been_banned');
    }
    }

    //
    // Create or update the session
    //
    $sql = "UPDATE " . SESSIONS_TABLE . "
    SET session_user_id = $user_id, session_start = $current_time, session_time = $current_time, session_page = $page_id, session_logged_in = $login
    WHERE session_id = '" . $session_id . "'
    AND session_ip = '$user_ip'";
    if ( !$db->sql_query($sql) || !$db->sql_affectedrows() )
    {
    $session_id = md5(uniqid($user_ip));

    $sql = "INSERT INTO " . SESSIONS_TABLE . "
    (session_id, session_user_id, session_start, session_time, session_ip, session_page, session_logged_in)
    VALUES ('$session_id', $user_id, $current_time, $current_time, '$user_ip', $page_id, $login)";
    if ( !$db->sql_query($sql) )
    {
    message_die(CRITICAL_ERROR, 'Error creating new session', '', __LINE__, __FILE__, $sql);
    }
    }

    if ( $user_id != ANONYMOUS )
    {// ( $userdata['user_session_time'] > $expiry_time && $auto_create ) ? $userdata['user_lastvisit'] : (
    $last_visit = ( $userdata['user_session_time'] > 0 ) ? $userdata['user_session_time'] : $current_time;

    $sql = "UPDATE " . USERS_TABLE . "
    SET user_session_time = $current_time, user_session_page = $page_id, user_lastvisit = $last_visit
    WHERE user_id = $user_id";
    if ( !$db->sql_query($sql) )
    {
    message_die(CRITICAL_ERROR, 'Error updating last visit time', '', __LINE__, __FILE__, $sql);
    }

    $userdata['user_lastvisit'] = $last_visit;

    $sessiondata['autologinid'] = ( $enable_autologin && $sessionmethod == SESSION_METHOD_COOKIE ) ? $auto_login_key : '';
    $sessiondata['userid'] = $user_id;
    }

    $userdata['session_id'] = $session_id;
    $userdata['session_ip'] = $user_ip;
    $userdata['session_user_id'] = $user_id;
    $userdata['session_logged_in'] = $login;
    $userdata['session_page'] = $page_id;
    $userdata['session_start'] = $current_time;
    $userdata['session_time'] = $current_time;

    setcookie($cookiename . '_data', serialize($sessiondata), $current_time + 31536000, $cookiepath, $cookiedomain, $cookiesecure);
    setcookie($cookiename . '_sid', $session_id, 0, $cookiepath, $cookiedomain, $cookiesecure);

    $SID = 'sid=' . $session_id;

    return $userdata;
    }

    //
    // Checks for a given user session, tidies session table and updates user
    // sessions at each page refresh
    //
    function session_pagestart($user_ip, $thispage_id)
    {
    global $db, $lang, $board_config;
    global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;

    $cookiename = $board_config['cookie_name'];
    $cookiepath = $board_config['cookie_path'];
    $cookiedomain = $board_config['cookie_domain'];
    $cookiesecure = $board_config['cookie_secure'];

    $current_time = time();
    unset($userdata);

    if ( isset($HTTP_COOKIE_VARS[$cookiename . '_sid']) || isset($HTTP_COOKIE_VARS[$cookiename . '_data']) )
    {
    $sessiondata = isset( $HTTP_COOKIE_VARS[$cookiename . '_data'] ) ? unserialize(stripslashes($HTTP_COOKIE_VARS[$cookiename . '_data'])) : array();
    $session_id = isset( $HTTP_COOKIE_VARS[$cookiename . '_sid'] ) ? $HTTP_COOKIE_VARS[$cookiename . '_sid'] : '';
    $sessionmethod = SESSION_METHOD_COOKIE;
    }
    else
    {
    $sessiondata = array();
    $session_id = ( isset($HTTP_GET_VARS['sid']) ) ? $HTTP_GET_VARS['sid'] : '';
    $sessionmethod = SESSION_METHOD_GET;
    }

    //
    if (!preg_match('/^[A-Za-z0-9]*$/', $session_id))
    {
    $session_id = '';
    }

    //
    // Does a session exist?
    //
    if ( !empty($session_id) )
    {
    //
    // session_id exists so go ahead and attempt to grab all
    // data in preparation
    //
    $sql = "SELECT u.*, s.*
    FROM " . SESSIONS_TABLE . " s, " . USERS_TABLE . " u
    WHERE s.session_id = '$session_id'
    AND u.user_id = s.session_user_id";
    if ( !($result = $db->sql_query($sql)) )
    {
    message_die(CRITICAL_ERROR, 'Error doing DB query userdata row fetch', '', __LINE__, __FILE__, $sql);
    }

    $userdata = $db->sql_fetchrow($result);

    //
    // Did the session exist in the DB?
    //
    if ( isset($userdata['user_id']) )
    {
    //
    // Do not check IP assuming equivalence, if IPv4 we'll check only first 24
    // bits ... I've been told (by vHiker) this should alleviate problems with
    // load balanced et al proxies while retaining some reliance on IP security.
    //
    $ip_check_s = substr($userdata['session_ip'], 0, 6);
    $ip_check_u = substr($user_ip, 0, 6);

    if ($ip_check_s == $ip_check_u)
    {
    $SID = ($sessionmethod == SESSION_METHOD_GET || defined('IN_ADMIN')) ? 'sid=' . $session_id : '';

    //
    // Only update session DB a minute or so after last update
    //
    if ( $current_time - $userdata['session_time'] > 60 )
    {
    $sql = "UPDATE " . SESSIONS_TABLE . "
    SET session_time = $current_time, session_page = $thispage_id
    WHERE session_id = '" . $userdata['session_id'] . "'";
    if ( !$db->sql_query($sql) )
    {
    message_die(CRITICAL_ERROR, 'Error updating sessions table', '', __LINE__, __FILE__, $sql);
    }

    if ( $userdata['user_id'] != ANONYMOUS )
    {
    $sql = "UPDATE " . USERS_TABLE . "
    SET user_session_time = $current_time, user_session_page = $thispage_id
    WHERE user_id = " . $userdata['user_id'];
    if ( !$db->sql_query($sql) )
    {
    message_die(CRITICAL_ERROR, 'Error updating sessions table', '', __LINE__, __FILE__, $sql);
    }
    }

    //
    // Delete expired sessions
    //
    $expiry_time = $current_time - $board_config['session_length'];
    $sql = "DELETE FROM " . SESSIONS_TABLE . "
    WHERE session_time < $expiry_time
    AND session_id <> '$session_id'";
    if ( !$db->sql_query($sql) )
    {
    message_die(CRITICAL_ERROR, 'Error clearing sessions table', '', __LINE__, __FILE__, $sql);
    }

    setcookie($cookiename . '_data', serialize($sessiondata), $current_time + 31536000, $cookiepath, $cookiedomain, $cookiesecure);
    setcookie($cookiename . '_sid', $session_id, 0, $cookiepath, $cookiedomain, $cookiesecure);
    }

    return $userdata;
    }
    }
    }

    //
    // If we reach here then no (valid) session exists. So we'll create a new one,
    // using the cookie user_id if available to pull basic user prefs.
    //
    $user_id = ( isset($sessiondata['userid']) ) ? intval($sessiondata['userid']) : ANONYMOUS;

    if ( !($userdata = session_begin($user_id, $user_ip, $thispage_id, TRUE)) )
    {
    message_die(CRITICAL_ERROR, 'Error creating user session', '', __LINE__, __FILE__, $sql);
    }

    return $userdata;

    }

    //
    // session_end closes out a session
    // deleting the corresponding entry
    // in the sessions table
    //
    function session_end($session_id, $user_id)
    {
    global $db, $lang, $board_config;
    global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;

    $cookiename = $board_config['cookie_name'];
    $cookiepath = $board_config['cookie_path'];
    $cookiedomain = $board_config['cookie_domain'];
    $cookiesecure = $board_config['cookie_secure'];

    $current_time = time();

    //
    // Pull cookiedata or grab the URI propagated sid
    //
    if ( isset($HTTP_COOKIE_VARS[$cookiename . '_sid']) )
    {
    $session_id = isset( $HTTP_COOKIE_VARS[$cookiename . '_sid'] ) ? $HTTP_COOKIE_VARS[$cookiename . '_sid'] : '';
    $sessionmethod = SESSION_METHOD_COOKIE;
    }
    else
    {
    $session_id = ( isset($HTTP_GET_VARS['sid']) ) ? $HTTP_GET_VARS['sid'] : '';
    $sessionmethod = SESSION_METHOD_GET;
    }

    if (!preg_match('/^[A-Za-z0-9]*$/', $session_id))
    {
    return;
    }

    //
    // Delete existing session
    //
    $sql = "DELETE FROM " . SESSIONS_TABLE . "
    WHERE session_id = '$session_id'
    AND session_user_id = $user_id";
    if ( !$db->sql_query($sql) )
    {
    message_die(CRITICAL_ERROR, 'Error removing user session', '', __LINE__, __FILE__, $sql);
    }

    setcookie($cookiename . '_data', '', $current_time - 31536000, $cookiepath, $cookiedomain, $cookiesecure);
    setcookie($cookiename . '_sid', '', $current_time - 31536000, $cookiepath, $cookiedomain, $cookiesecure);

    return true;
    }

    //
    // Append $SID to a url. Borrowed from phplib and modified. This is an
    // extra routine utilised by the session code above and acts as a wrapper
    // around every single URL and form action. If you replace the session
    // code you must include this routine, even if it's empty.
    //
    function append_sid($url, $non_html_amp = false)
    {
    global $SID;

    if ( !empty($SID) && !preg_match('#sid=#', $url) )
    {
    $url .= ( ( strpos($url, '?') != false ) ? ( ( $non_html_amp ) ? '&' : '&' ) : '?' ) . $SID;
    }

    return $url;
    }

    ?>
( code kort hem in geloof ik )

Mandrake Linux
Berichten: 521
Lid geworden op: 29 jan 2004, 22:41
Contacteer:

Bericht door Mandrake Linux » 13 jan 2005, 22:23

ik weet wat de fout is ( dankzij bas :) )

Ik wil graag enkele links uit het menu in de header verplaatsen naar de footer. Nu wordt je uitgelogd als je op die links drukt, omdat de sessie niet meegaat. Weet iemand een manier om die sessie mee te nemen naar de pagina's die gelinkt staan in de footer?"

Gebruikersavatar
Bas
Berichten: 2741
Lid geworden op: 02 dec 2003, 17:38
Locatie: Omgeving Goslar (Duitsland)
Contacteer:

Bericht door Bas » 14 jan 2005, 09:01

In PHP-bestand kijken naar de andere links ('U_BESTAND' => append_sid("bestand.php"),), voeg dat toe bij elke link, en dan roep je ipv bestand.php hem aan als {U_BESTAND}, dan blijf je ingelogd... :roll:

Mandrake Linux
Berichten: 521
Lid geworden op: 29 jan 2004, 22:41
Contacteer:

Bericht door Mandrake Linux » 14 jan 2005, 16:33

Snap je antwoord niet zo 1 2 3 :D

Mandrake Linux
Berichten: 521
Lid geworden op: 29 jan 2004, 22:41
Contacteer:

Bericht door Mandrake Linux » 15 jan 2005, 11:12

kan uiemandme dat uitlechen :oops:

Gebruikersavatar
Luuk
Berichten: 7311
Lid geworden op: 22 okt 2003, 10:07
Locatie: Delft

Bericht door Luuk » 15 jan 2005, 11:56

Je moet in het tpl bestand iets gebruiken als {U_STAFF} en in het php bestand dan
'U_STAFF' => append_sid("staff.phpEx"),
bedoelt bast, maar volgens mij zit dat al in die mod :?
Afbeelding

Gebruikersavatar
Bee
Berichten: 13403
Lid geworden op: 29 aug 2004, 10:30

Bericht door Bee » 15 jan 2005, 12:13

Luuk schreef:Je moet in het tpl bestand iets gebruiken als {U_STAFF} en in het php bestand dan
'U_STAFF' => append_sid("staff.phpEx"),
bedoelt bast, maar volgens mij zit dat al in die mod :?
Klopt, dat is voor de header. Hij wil het in de footer, hij zal dus die instructies ook moeten uitvoeren voor page_tail.php
... Maar ik modereer (nog) niet.

Gesloten