Ankündigung

Einklappen
Keine Ankündigung bisher.

phpBB Loginscript in eigenes Login Script einbinden

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • phpBB Loginscript in eigenes Login Script einbinden

    Hallo,

    wie in der Überschrift schon steht will ich das phpBB Loginscript in mein eigenes Login Script einbinden. D.h, dass man sich nicht extra im Forum einloggen muss, wenn man sich schon bei meinem Login Script angemeldet hat.

    Also hab ich bei meinen Login Script den session Eintrag in der DB des Forums machen lassen (dabei auch die IP nach der phpBB methode encoded) und die session_id dann geloggt.

    Beim Aufruf des Forums hab ich dann den Parameter ?sid=[session_id] angehängt, und gedacht, dass müsste eingentlich funktionieren, wenn ich mir das Login Script so anschaue...

    aber geht irgendwie ned.

    phpBB erstellt einen 2ten Eintrag in der sessions table. die IP ist aber die selbe, daher kann das nicht kommen...

    also vielleicht kann mir von euch einer helfen?


    hier der relevante Teil des Login Scripts von phpBB
    Code:
    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 = '';
    	}
    
    	$thispage_id = (int) $thispage_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 )
    				{
    					// A little trick to reset session_admin on session re-usage
    					$update_admin = (!defined('IN_ADMIN') && $current_time - $userdata['session_time'] > ($board_config['session_length']+60)) ? ', session_admin = 0' : '';
    
    					$sql = "UPDATE " . SESSIONS_TABLE . " 
    						SET session_time = $current_time, session_page = $thispage_id$update_admin
    						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);
    						}
    					}
    
    					session_clean($userdata['session_id']);
    
    					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;
    
    }

  • #2
    Also hab ich bei meinen Login Script den session Eintrag in der DB des Forums machen lassen (dabei auch die IP nach der phpBB methode encoded) und die session_id dann geloggt.
    Diese Aufgabe und
    Beim Aufruf des Forums hab ich dann den Parameter ?sid=[session_id] angehängt
    hast Du hoffentlich komplett vom phpBB Code übernehmen lassen, sprich: die Funktionen, die auch der phpBB Code aufruft, benutzt?

    Kommentar


    • #3
      bei ersterem schon...

      beim 2. hab ich einfach "phpBB2/index.php?sid=[session_id]" in den Link geschrieben

      Kommentar


      • #4


        peinlich peinlich peinlich ....

        es lag an den cookies

        ansonsten functioniert es eh so, wie ich's berechnet hab

        Kommentar


        • #5
          Sende dein Formular mit dem Login einfach an die entsprechende Datei von phpbb.
          Ich weiß zwar nicht ob das so geht aber so habe ich es früher schon mit ein paar Scripten gemacht. Es kann natürlich sein dass du dann nach dem Login der php Datei auf eine andere Seite weiterleiten musst.

          Kommentar

          Lädt...
          X