Seite 1 von 2

phpBB LogIn Formular in die eigene Homepage einbinden

Verfasst: 15.10.2005 19:56
von stuntman
Hallo,

mit Hilfe diesen Artikels:
http://www.phpbb.de/doku/kb/artikel.php?artikel=106
habe ich es geschafft das LogIn Formular in meine Homepage zu integrieren.

Dies klappt auch wunderbar.
Das einzige Problem ist nur, dass dieses LogIn Formular permanent zu sehen ist. Also wenn der User auf der Homepage sich einloggt landet er in meinem phpBB. Geht er dann wieder zurück auf die Homepage ist das Formular immernoch zu sehn. Das wirkt dann als wäre er garnicht eingeloggt. Ist es möglich dieses nur anzeigen zu lassen wenn der User noch nicht eingeloggt ist? Fall er schon eingeloggt ist sollte am besten statt dem Formular das Usermenü mit PN's, LogOut, Suchen, etc. angezeigt werden.

Ich habe dazu noch folgenden Artikel gefunden:
http://www.phpbb.de/doku/kb/artikel.php ... hpbb_seite

Wenn ich das recht verstehe ist das im Prinzip was ich suche. Jedoch muss ich mit dieser Variante meine komplette Homepage in das phpBB integrieren? Dies fände ich nicht so gut. Gibts keine Möglichkeit ausserhalb des phpBB zu prüfen ob jemand eingeloggt ist oder nicht.




Vielen Dank im Voraus![/url]

Verfasst: 15.10.2005 20:07
von Mungo
Hast du deine Homepage ins phpBB integriert?
Zum Beispiel mit Hilfe von "KB:72" ?

Verfasst: 16.10.2005 01:24
von stuntman
Die Seite komplett ins phpBB zu integrieren hatte ich eigentlich nicht vor.
Ich habe mir die Anleitung mal etwas genauer angeschaut.

Grob ist das bei mir so:
Ich habe meine Homepage in einem Ordner. In einem "Forum" Verzeichnis befindet sich dann das Forum.

Wie ich gelesen habe kann ich über $userdata['session_logged_in'] den LogIn Status eines Users abfragen.

Ist dies nicht auch von aussen her möglich? Muss dazu wirklich meine komplette restliche Seite ins phpBB integriert werden?

Der Grund warum ich ungern meine Seite ins phpBB intergrieren will ist dass doch dann meine ganze Struktur verloren geht? Oder nicht?

Ich hab die Seite in PHP/CSS/XHTML gemacht und hab streng auf Trennung von Design/Layout und Inhalt gelegt. Oder verstehe ich da was falsch?

Verfasst: 16.10.2005 10:33
von Mungo
Um die Box auszublenden muss die Seite ins phpBB integriert werden. Sonst wäre der User ja nicht im Forum angemeldet, wenn er sich auf der Seite befindet. Er würde also immer die Box angezeigt bekommen.
Wenn nicht jede Seite im phpBB integriert ist, dann wird User abgemeldet sobald er eine Seite deiner Homepage aufruft, die nicht im phpBB integriert ist.

Die Trennung von Inhalt und Layout bleibt ja bestehen, wenn du die Homepage integrierst. Du kannst dann sogar das Templatesystem des phpBB verwenden, so dass du auch noch deinen PHP- und HTML-Code trennen kannst.

Verfasst: 16.10.2005 16:22
von stuntman
Ich hatte mir die Integration in das phpBB etwas blöder vorgestellt :)
Das klappt ja wunderbar und bringt keine Nachteile mit sich.

Vielen Dank für Deine Hilfe! 8)

Verfasst: 16.10.2005 17:00
von stuntman
Jetzte habe ich doch noch eine Frage.

Ich bin nun so weit, dass meine LogIn Box nur angezeigt wird wenn jemand nicht eingeloggt ist.

Wenn jemand eingeloggt ist sollen aber nun die Links zum LogOut, zum Profil, zur Suche, etc. dortstehen.

Ich habs damit versucht:

Code: Alles auswählen

 <a href="{U_LOGIN_LOGOUT}"><br \>{L_LOGIN_LOGOUT}</a><br \>
                <a href="{U_REGISTER}">{L_REGISTER}</a><br \>
                <a href="{U_PROFILE}">{L_PROFILE}</a><br \>
                <a href="{U_MEMBERLIST}">{L_MEMBERLIST}</a><br \>
                <a href="{U_SEARCH}">{L_SEARCH}</a><br \>
                <a href="{U_FAQ}">{L_FAQ}</a><br \>
                <a href="{U_PRIVATEMSGS}">{PRIVATE_MESSAGE_INFO}</a><br \>
Funktioniert leider nicht. In der Template Anleitung steht, dass diese zuerst geladen werden müssen um sie verwenden zu können!
Jedoch weiß ich nicht welche Datei ich reinladen muss um die oben gewünschten Templates benutzen zu können.

Verfasst: 16.10.2005 17:35
von Mungo
Die includes/page_header.php hast du in deinem php-Skript includet?

Verfasst: 16.10.2005 18:18
von stuntman
Nein, das hatte ich noch nicht :)
Aber nun habe ich das Problem, dass die page_header.php mir den kompletten Forums-Header in meine Site schreibt. Genau das wollte ich nicht, da meine Seitenlayout von dem des Forums abweicht.

Gibt es eine andere Möglichkeit?

Verfasst: 16.10.2005 21:22
von Mungo
Auf die schnelle würde ich sagen du musst folgendes in deine php-Datei einfügen:

Code: Alles auswählen

if ( $userdata['session_logged_in'] )
{
	$u_login_logout = 'login.'.$phpEx.'?logout=true&sid=' . $userdata['session_id'];
	$l_login_logout = $lang['Logout'] . ' [ ' . $userdata['username'] . ' ]';
}
else
{
	$u_login_logout = 'login.'.$phpEx;
	$l_login_logout = $lang['Login'];
}

//
// Obtain number of new private messages
// if user is logged in
//
if ( ($userdata['session_logged_in']) && (empty($gen_simple_header)) )
{
	if ( $userdata['user_new_privmsg'] )
	{
		$l_message_new = ( $userdata['user_new_privmsg'] == 1 ) ? $lang['New_pm'] : $lang['New_pms'];
		$l_privmsgs_text = sprintf($l_message_new, $userdata['user_new_privmsg']);

		if ( $userdata['user_last_privmsg'] > $userdata['user_lastvisit'] )
		{
			$sql = "UPDATE " . USERS_TABLE . "
				SET user_last_privmsg = " . $userdata['user_lastvisit'] . "
				WHERE user_id = " . $userdata['user_id'];
			if ( !$db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, 'Could not update private message new/read time for user', '', __LINE__, __FILE__, $sql);
			}

			$s_privmsg_new = 1;
			$icon_pm = $images['pm_new_msg'];
		}
		else
		{
			$s_privmsg_new = 0;
			$icon_pm = $images['pm_new_msg'];
		}
	}
	else
	{
		$l_privmsgs_text = $lang['No_new_pm'];

		$s_privmsg_new = 0;
		$icon_pm = $images['pm_no_new_msg'];
	}

	if ( $userdata['user_unread_privmsg'] )
	{
		$l_message_unread = ( $userdata['user_unread_privmsg'] == 1 ) ? $lang['Unread_pm'] : $lang['Unread_pms'];
		$l_privmsgs_text_unread = sprintf($l_message_unread, $userdata['user_unread_privmsg']);
	}
	else
	{
		$l_privmsgs_text_unread = $lang['No_unread_pm'];
	}
}
else
{
	$icon_pm = $images['pm_no_new_msg'];
	$l_privmsgs_text = $lang['Login_check_pm'];
	$l_privmsgs_text_unread = '';
	$s_privmsg_new = 0;
}

$template->assign_vars(array(
	'PRIVATE_MESSAGE_INFO' => $l_privmsgs_text,
	'PRIVATE_MESSAGE_INFO_UNREAD' => $l_privmsgs_text_unread,
	'PRIVATE_MESSAGE_NEW_FLAG' => $s_privmsg_new,

	'PRIVMSG_IMG' => $icon_pm,

	'L_LOGIN_LOGOUT' => $l_login_logout,
	'L_REGISTER' => $lang['Register'],
	'L_PROFILE' => $lang['Profile'],
	'L_SEARCH' => $lang['Search'],
	'L_FAQ' => $lang['FAQ'],

	'U_REGISTER' => append_sid('profile.'.$phpEx.'?mode=register'),
	'U_PROFILE' => append_sid('profile.'.$phpEx.'?mode=editprofile'),
	'U_PRIVATEMSGS' => append_sid('privmsg.'.$phpEx.'?folder=inbox'),
	'U_SEARCH' => append_sid('search.'.$phpEx),
	'U_FAQ' => append_sid('faq.'.$phpEx),
	'U_LOGIN_LOGOUT' => append_sid($u_login_logout))
);

Verfasst: 23.10.2005 13:26
von stuntman
Ich danke Dir!
Es funktioniert nun perfekt!