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

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
Shadowman
Mitglied
Beiträge: 170
Registriert: 16.12.2003 19:01
Wohnort: Vaterstetten

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

Beitrag 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.
Proud Admin & Webmaster of http://www.broxx-com.de
Benutzeravatar
Nico Haase
Mitglied
Beiträge: 1100
Registriert: 10.08.2003 15:19
Wohnort: Neu-Anspach / Darmstadt
Kontaktdaten:

Beitrag 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)
Buchtips.net bietet mehr als 2500 Buchrezensionen
ChrisyX
Mitglied
Beiträge: 10
Registriert: 30.12.2003 12:28

Beitrag 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!
Benutzeravatar
Shadowman
Mitglied
Beiträge: 170
Registriert: 16.12.2003 19:01
Wohnort: Vaterstetten

Beitrag von Shadowman »

hm, kann ich einfach nur defines.php einbinden und dann überprüfen ob man eingeloggt ist?? das wäre einfacher....
Proud Admin & Webmaster of http://www.broxx-com.de
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Dieses ist der minimale Code, den man benötigt, um die Login-Daten von phpBB zu nutzen: KB:phpbb_seite
Benutzeravatar
Shadowman
Mitglied
Beiträge: 170
Registriert: 16.12.2003 19:01
Wohnort: Vaterstetten

Beitrag von Shadowman »

danke hat prima gefunzt :)
das nächste mal werde ich denken bevor ich poste :)
Proud Admin & Webmaster of http://www.broxx-com.de
Benutzeravatar
SirBerberitz
Mitglied
Beiträge: 8
Registriert: 17.02.2004 01:42
Wohnort: OktoberfestCity

Beitrag 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
Benutzeravatar
Nico Haase
Mitglied
Beiträge: 1100
Registriert: 10.08.2003 15:19
Wohnort: Neu-Anspach / Darmstadt
Kontaktdaten:

Beitrag 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.
Buchtips.net bietet mehr als 2500 Buchrezensionen
Benutzeravatar
SirBerberitz
Mitglied
Beiträge: 8
Registriert: 17.02.2004 01:42
Wohnort: OktoberfestCity

Beitrag 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
Die Hoelle, das sind die anderen. J.P. Satre
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

KB:headers_already_sent
Gesperrt

Zurück zu „Coding & Technik“