Seite 1 von 2
Externer Log-In
Verfasst: 24.09.2007 18:16
von Kewwwin
Hallo phpBB-Gemeinde,
da ich mich jetzt das erste Mal mit dem neuen phpBB3 beschäftige, kommen ein paar Fragen auf. Wir wollen für unser neues Projekt einen externen Login einbauen der immer oben rechts erscheint. In etwa so:
Klick hier
Beim erfolgreichen Log-In sollte dann da natürlich nicht mehr das Log-In Feld sein, sondern ein Text wie der hier:
Klick hier
Soweit kein Problem. Doch wir wissen nicht, wie wir es schaffen sollen, dass die Funktion korrekt funktioniert. Wir haben verschiedenes probiert. Dabei konnte man sich zwar einloggen und wurde danach wieder an die vorherige Seite gebracht, doch dann war man wieder ausgeloggt. Zuerst stand da auch das wie am zweiten Bild aber nur an dieser einer Seite. Sobald man die Seite wechselte war wieder der Log-In da. Wir wissen nicht, wie wir das anstellen sollen.
Beim phpBB2 hat das noch ganz gut geklappt aber jetzt will es einfach nicht hinhauen. Hat vielleicht jemand eine fertige Lösung?
Danke
Gruß
Kevin
Verfasst: 25.09.2007 18:29
von Kewwwin
Hallo,
hat denn niemand eine Idee?
Gruß
Verfasst: 26.09.2007 19:17
von Kewwwin
Hallo,
wir haben bereits eine Lösugn gefunden!
Gruß
Verfasst: 26.09.2007 20:35
von Dr.Death
Hi,
dann trage doch etwas zur Community bei und poste uns Deine Lösung.
Verfasst: 27.09.2007 17:20
von Kewwwin
Hallo,
es hat meine Programmiererin gemacht. Mal fragen, ob sie was dagegen hat. Ggf. poste ich es dann.
Gruß
Verfasst: 27.09.2007 17:26
von Kewwwin
index.php ein Verzeichnis außerhalb des Forums:
Anfangscode zur Ermittlung der Variablen:
Code: Alles auswählen
// (C) Kewwwin.de
// Autor: Sandy Möller & Kevin Domani, 2007
session_start();
//define('IN_PHPBB', true);
//$phpbb_root_path = './forum/';
//$phpEx = 'php';
//include($phpbb_root_path . 'common.' . $phpEx);
//include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
//Session auslesen und Benutzer-Informationen laden
//$user->session_begin();
//$auth->acl($user->data);
include_once('inc/#config.inc.php');
include_once('inc/#db.inc.php');
$header_refresh = "";
$mysql_connection = sqlconnect($config['dbhost'], $config['dbuser'], $config['dbpass']);
unset($config['dbpass']);
Weiterer Code an gewünscht Stelle:
Code: Alles auswählen
// Forum Login-Form
$forum_loginform = "";
if (checklogin()) {
$sql_user = "SELECT username, group_id FROM ".USERS_T." WHERE user_id = '".$c_u."'";
$sql_user = mysql_db_query($config['dbname_db1'], $sql_user, $mysql_connection) or (die (mysql_error()));
$sql_user = mysql_fetch_array($sql_user);
if (in_array($sql_user['group_id'], $config['admin_login_show'])) {
$adminbereich = ' | <a href="admin">Admin-Bereich</a>';
} else {
$adminbereich = '';
}
$forum_loginform .= '<center><font size=4>Eingeloggt als<br /><strong>'.$sql_user['username'].'</strong></font><p><a href="forum/ucp.php?mode=logout&sid='.$c_sid.'">Abmelden</a>'.$adminbereich.'</center></p>';
} else {
$forum_loginform .= '<form action="forum/ucp.php?mode=login" method="post" target="_top"> Username: <input type="text" class="login" name="username" size="15" maxlength="40" value="" /><br> Passwort: <input type="password" class="login" name="password" size="15" maxlength="32" /><br> Auto-Login: <input type="checkbox" name="autologin" /> <input type="hidden" name="redirect" value="../index.php?view='.$_GET['view'].'" /> <input type="submit" class="login_button" name="login" value="Anmelden" class="button1" /> <p><a href="forum/ucp.php?mode=register"><img src="forum/styles/prosilver/theme/images/icon_register.gif"> Registrieren</a>
</form>';
}
Die #config.inc.php:
Code: Alles auswählen
<?php
// DB-Konfiguration
$config['dbuser'] = "user";
$config['dbpass'] = "pwd";
$config['dbhost'] = "localhost";
$config['dbname_db1'] = "name";
// Forum
$config['prfx_forum'] = "phpbb_"; // Tabellenpräfix Forum
$config['cookiename_forum'] = "phpbb3_sw8xl_"; // Cookiename Forum
Die #db.inc.php:
Code: Alles auswählen
<?php
// (C) Kewwwin.de
// Autor: Kevin Domani und Sandy Möller, 2007
$c_sid = $_COOKIE[$config['cookiename_forum'].'sid'];
$c_u = $_COOKIE[$config['cookiename_forum'].'u'];
define(USERS_T, $config['prfx_forum']."users");
define(SESSIONS_T, $config['prfx_forum']."sessions");
define(POST_T, $config['prfx_forum']."posts");
define(TOPIC_T, $config['prfx_forum']."topics");
function sqlconnect($dbhost, $dbuser, $dbpass) {
$mysql_connection = @mysql_connect($dbhost, $dbuser, $dbpass);
if (!$mysql_connection) {
echo "Es konnte leider keine Verbindung zur Datenbank hergestellt werden, bitte versuch es später noch einmal!\n";
exit;
}
return $mysql_connection;
}
function sqldisconnect($mysql_connection) {
mysql_close($mysql_connection);
}
?>
Hier mal etwas zusammengefasst. Ein paar Teile sind noch unnötig waren aber für unsere Verhältnisse notwendig. Ich hoffe ich konnte helfen =)
Gruß
Verfasst: 29.09.2007 15:40
von PS2000
Hallo Leute,
vielen Dank erstmal an Kewwwin, dass du den Code hier reingestellt hast. Aber ich habe da noch ein paar kleine Probleme und zwar mit der Funktion checklogin().
Ich gehe mal davon aus, dass die nicht in den Dateien von phpBB3 definiert ist, oder vllt doch? Wenn nicht, kannst du den Code für diese Funktion bitte noch posten?
Verfasst: 30.09.2007 16:23
von marioaldag
bei mir gibt er teile des codes aus (im login fenster). Habe aber nirgendswo einen Echo befehl... Ich habe php zwischen HTML eingebettet.
Verfasst: 30.09.2007 16:53
von niffi
Keine Ahnung was ihr daoben mit dem Script macht, aber den ganzen Russ kannst Du Dir im Grunde auch sparen, denn wenn Du nur Deinen Login auf eine Extra-Seite packen willst, reicht folgender Code völlig zu:
Code: Alles auswählen
if ($user->data['user_id'] == ANONYMOUS)
{
echo '<table width="140" border="0" cellspacing="3" cellpadding="3" bgcolor="#EAEAEA">
<form action="forum/ucp.php" method="post" target="_top">
<input type="hidden" name="mode" value="login" />
<input type="hidden" name="autologin" value="1" />
<tr>
<td align="left" valign="top"><span class="small">Benutzername:</span><br>
<input type="text" name="username" size="23" class="inputbox" maxlength="55" value="" /></td>
</tr>
<tr>
<td align="left" valign="top"><span class="small">Passwort:</span><br>
<input type="password" name="password" size="23" class="inputbox" maxlength="55" value="" /></td>
</tr>
<tr>
<td align="center"><input type="hidden" name="redirect" value="../main.php" /><input type="submit" name="login" class="logout" value="Login" /></td>
</tr>
<tr>
<td align="center" height="16" valign="middle"><a href="forum/ucp.php?mode=register" class="link_small">Jetzt registrieren!</a></td>
</tr>
</form>
</table>';
}
else {
echo '<table width="140" border="0" cellspacing="3" cellpadding="0" bgcolor="#EAEAEA">
<tr>
<td align="center" valign="top"><span class="small">Du bist derzeit<br />eingeloggt.<br /><br /></span></td>
</tr>
<tr>
<td align="center"><a href="'.append_sid("{$phpbb_root_path}ucp.php").'?mode=logout&sid='.$user->data['session_id'].'" class="logout"> Logout </a></td>
</tr>
</table>';
}
Das Problem bestehtz eher darin, denn ich hab es auch immernoch und es nervt mich, den Loginstatus beim Verlassen des Forums auf meiner normalen WebSite bestehen zu halten. Und da Du bzw. deine Programmierein beim Anfangscode schonmal alle Funktionen zur Sessionbehandlung diesbezüglich auskommentiert, versteh ich nicht so ganz was der lange Code noch bringen soll?!
Falls jemand eine Idee hat, wie man nach dem Login irgendwo innerhalb der Anmeldephase von phpbb3 noch eine Sessionvariable definieren kann, die ich dann gesondert auf jeder Seite abfragen kann, wäre es schön wenn das mal jemand hier posten kann. Oder eine andere Alternative zum Erhalt des Loginstatus. Danke.
Verfasst: 30.09.2007 19:00
von marioaldag
das hatte ich mir auch schonmal gedacht, aber was packst du davor? Was includest du, damit das heir geht?