php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.12.2005, 20:20   #1 (permalink)
Benutzer
 
Registriert seit: 28.09.2004
Beiträge: 40
2wuck
Standard 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;

}
2wuck ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.12.2005, 21:24   #2 (permalink)
Gast
 
Beiträge: n/a
Standard

Zitat:
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
Zitat:
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?
 
Alt 19.12.2005, 21:50   #3 (permalink)
Benutzer
 
Registriert seit: 28.09.2004
Beiträge: 40
2wuck
Standard

bei ersterem schon...

beim 2. hab ich einfach "phpBB2/index.php?sid=[session_id]" in den Link geschrieben
2wuck ist offline  
Alt 19.12.2005, 22:24   #4 (permalink)
Benutzer
 
Registriert seit: 28.09.2004
Beiträge: 40
2wuck
Standard



peinlich peinlich peinlich ....

es lag an den cookies

ansonsten functioniert es eh so, wie ich's berechnet hab
2wuck ist offline  
Alt 19.12.2005, 23:10   #5 (permalink)
Erfahrener Benutzer
 
Registriert seit: 02.08.2004
Beiträge: 472
duderino
Standard

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.
duderino ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Login Script (ohne Werbung) Aoz Scriptbörse 9 30.12.2007 19:41
Eigenes "Ping" (xml-rpc) Script WTB PHP-Fortgeschrittene 0 17.11.2007 16:58
Forum in eigenes Projekt einbinden SingleSignOn agrajag PHP Tipps 2008 4 12.10.2007 15:15
brauche dringend hilfe für ein login script PHP Tipps 2005 17 22.05.2005 21:56
problem mit login script PHP Tipps 2005 26 20.05.2005 22:10
phpBB login funktioniert nicht. PHP Tipps 2005 3 31.03.2005 17:12
Login Script: sicher oder nicht sicher? PHP Tipps 2005 26 23.02.2005 12:18
login script spuckt PHP Tipps 2005 13 28.01.2005 16:37
Eigenes Script archiv script? Beitragsarchiv 2 20.01.2005 21:39
Eigenes Loginscript - bitte hilfe PHP Tipps 2005 7 06.01.2005 16:15
Login Script Tschuu PHP Tipps 2004-2 5 12.11.2004 22:33
Teamspeak user ADD im Login script von Home page PHP Tipps 2004 1 13.10.2004 19:49
asp + php script gemeinsam in HTML einbinden PHP Tipps 2004 7 25.08.2004 18:14
Kleines Prob mit Login Script PHP Tipps 2004 2 09.07.2004 01:39
Fehler im Login Script PHP Tipps 2004 3 06.07.2004 20:37

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
phpbb login script, phpbb3 login script, phpbb login in seite einbinden, phpbb login, phpbb3 login, login script einbinden, phpbb3 index.php seite weiterleiten, login script, eigenes login script, phpbb3 eigenes login, html login script, phpbb script, phpbb2 login, login scripts, php3 login script, phpbb3 login einbinden, phpbb3 compatible login script, if user log in phpbb, phpbb3 eigenes html, phpbb3 eigene scripts

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:57 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.