Seite 1 von 2

einloggen über eine andere seite(aber auch in phpbb2)

Verfasst: 31.12.2003 21:30
von Shadowman
also, ich habe eine homepage erstellt, auf derman sich einloggen kann, nun möchte ich aber nicht, dass man sich einmal im forum registrieren lassen muss, und einmal auf der homepage. deswegen würde ich gerne wissen, wie in phpbb das einloggen funktioniert, also mit session start und cookies. wär echt toll wenn ich auch gleich den code haben könnte, falss er nicht zu lang ist.

Verfasst: 01.01.2004 09:32
von Nico Haase
folgendes funktionier bei mir einwandfrei:

Code: Alles auswählen

<?php
include_once("defines.php");
define('IN_PHPBB', true);
define('PHP_BBINSTALLED', '1');
$phpbb_root_path = './forum/';
include_once($phpbb_root_path . 'extension.inc');
include_once($phpbb_root_path . 'common.php');

$linkslogin = FALSE;
$loginformopen = '<form method="post" action="'./forum/login.php"';
$login1 ='<a name="login">&nbsp;&nbsp;</a><b>Login</b><br />'."\n".
 'Username: <input type="text" name="username" size="10" />'."\n".
 '<br />Passwort:'."\n".
 '<input type="password" name="password" size="10" maxlength="32" />'."\n".
 '<br />Autologin'."\n".
 '<input type="checkbox" name="autologin" /><br />'."\n".
 '<input type="submit" name="login" value="Login" />'."\n".
 '<input type="hidden" name="redirect" value="'.getthisurl($_SERVER["PHP_SELF"]);
$login2 = '"><br /><br /><a href = "'./forum/profile.php?mode=register">Anmelden</a>';

$loginform = $login1.$login2;

$login = session_pagestart($user_ip, PAGE_LOGIN);

if ($login["user_id"] == "-1" || !isset($login)) $logingeschehen = FALSE;
else
 {
    $redirect = $_SERVER["PHP_SELF"];
    $logingeschehen = TRUE;
 	$linkslogin = ":. Du bist eingeloggt als ".$login["username"]."&nbsp;.::.&nbsp;<a href = \""./forum/profile.php?mode=editprofile\">Profil</a>&nbsp;.::.&nbsp;".
	"<a href = \""./forum/login.php?logout=true&redirect=".$redirect."\">Logout</a>\n\n";

	$linkslogin .= " .:";
 }


function makelogin($ersetzen = FALSE, $formopen = FALSE) {
	global $loginform;
	global $loginformopen;
	global $linkslogin;
	global $logingeschehen;
	$returnvars = "";
	if ($logingeschehen == FALSE)
	 {
	 	if (isset($ersetzen)) $loginform = str_replace("<br />", $ersetzen, $loginform);
	 	if ($formopen == FALSE) $returnvars.= $loginformopen;
	 	$returnvars.=$loginform;
	 }
	else $returnvars = "&nbsp;&nbsp;".$linkslogin;
	return $returnvars;
}

function checklogin() {
	global $logingeschehen;
	if ($logingeschehen == FALSE)
	 {
	 	global $login1;
	 	global $login2;
	 	$returnvars = "Diese Funktion kannst du nicht nutzen, da du nicht eingeloggt bist. Das kannst du hier nachholen:<br /><br />".makelogin();
	 }
	else $returnvars = "ok";
	return $returnvars;
}
?>
einfach da, wo du's brauchst, die funktion checklogin() einbauen und auf ausgabe prüfen (wenn ok -> login vorgenommen, wenn anders -> login noch nicht)

Verfasst: 02.01.2004 10:57
von ChrisyX
Da ich nicht der Programmier-Profi bin:

Wo muss ich den oberen Code einbauen und welche Variablen muss ich verändern?

Vielen Dank!

Verfasst: 03.01.2004 02:10
von Shadowman
hm, kann ich einfach nur defines.php einbinden und dann überprüfen ob man eingeloggt ist?? das wäre einfacher....

Verfasst: 03.01.2004 02:41
von Pyramide
Dieses ist der minimale Code, den man benötigt, um die Login-Daten von phpBB zu nutzen: KB:phpbb_seite

Verfasst: 04.01.2004 01:27
von Shadowman
danke hat prima gefunzt :)
das nächste mal werde ich denken bevor ich poste :)

Verfasst: 17.02.2004 12:51
von SirBerberitz
Hallo,

ich versuche seit Stunden obige Funktion bei mir zu installieren. Da ich die "defines.php" in meinem phpBB Verzeichnis nicht finden konnte, habe ich einfach eine leere Datei mit selbigem Namen erstellt. Ich hoffe dass ist hier so angedacht ...

Leider wird mir immer der Fehler

Code: Alles auswählen

Fatal error: Call to undefined function: getthisurl() in /kunden/meine_domain.com/de/php/index.php on line 90
ausgeworfen.

Hat jemand eine Idee was ich hier falsch mache???

Many Thx

Verfasst: 17.02.2004 12:57
von Nico Haase
hehe, ich kenne die lösung. die funktion gibbet nich, weil ich die geproggt, aber nicht weitergegeben habe. die sieht folgendermaßen aus:

Code: Alles auswählen

function getthisurl($url)
 {
 	$querystring = "";
 	$thisurl = explode("/",$url);
    $countdirs = count($thisurl) - 1;
    if ($countdirs == DEEP) $returnurl = $thisurl[$countdirs];
    if ($countdirs > DEEP)
     {
     	$returnurl = "";
     	$back = "";
     	for ($i = $countdirs-1; $i < DEEP + 1; $i++)
     	 {
     	 	$returnurl .= $thisurl[$i]."/";
     	 }
     	for ($i = $countdirs-1; $i < DEEP; $i++)
     	 {
     	 	$back .= "../";
     	 }
     	$returnurl.= $thisurl[DEEP+1];
     	$returnurl = $back.$returnurl;
     }

    if (!empty($_SERVER["QUERY_STRING"]))
     {
     	$divquery = explode("&",$_SERVER["QUERY_STRING"]);
     	foreach ($divquery as $querys)
     	 {
     	 	$unterquerys = explode("=",$querys);
     	 	if ($unterquerys[0] != "sid" && !empty($unterquerys[1]))
     	 	 {
     	 	 	if (!empty($querystring)) $querystring.= "&";
     	 	 	if ($unterquerys[0] != "sid") $querystring.= $unterquerys[0]."=".$unterquerys[1];
     	 	 }
     	 }
	 	if (!empty($querystring))
 		 {
 	 		$returnurl.= "?".urlencode($querystring);
 	 	 }
     }

 	return append_sid("../".$returnurl);
 }
vorher musst du noch DEEP definieren, das ist 1 für den root deines servers, 2 für einen unterordner, 3 für einen unterordner eines unterordners etc. damit werden dann die pfadangaben für die weiterleitung geregelt.

Verfasst: 17.02.2004 18:05
von SirBerberitz
@ Nico Haase:

danke erstmal fuer die superschnelle Hilfe. Fette Sache das ...

Leider komm ich immer noch nicht klar :oops:

Erstens weiss ich nicht genau wie ich das von dir angesprochene "DEEP" definieren soll ...

hab ich jetzt mal so gemacht:

Code: Alles auswählen

define('DEEP', '1');
und zweitens wirft mir meine Seite wieder diesen doofen Fehler aus, den ich gestern schon mal hatte, als ich diese Sache von "Pyramide"

http://www.phpbb.de/doku/kb/artikel.ph ... pbb_seite

versucht habe:

Code: Alles auswählen

Warning: Cannot modify header information - headers already sent by (output started at /kunden/meine_domain.com/de/php/index.php:5) in /kunden/meine_domain.com/de/forum/includes/sessions.php on line 182

Warning: Cannot modify header information - headers already sent by (output started at /kunden/meine_domain.com/de/php/index.php:5) in /kunden/meine_domain.com/de/forum/includes/sessions.php on line 183

Hast du auch hierfuer noch eine Loesung?

Fettes Merci schon mal vorab!

Gruss

SirBerberitz

Verfasst: 17.02.2004 19:07
von Pyramide
KB:headers_already_sent