Seite 2 von 2

Verfasst: 03.01.2008 18:54
von ~| Marc |~
@michstro vielen Dank, hat wunderbar funktioniert!

Der Name wird nun bei mir angezeigt, wäre es auch möglich, neue private Nachrichten sowie einen Ausloggen-Link zur Verfügung zu stellen? Den entsprechenden Code habe ich schon in der ucp.php gefunden, nur wie füge ich diesen dann richtig ein?

Code: Alles auswählen

	case 'logout':
		if ($user->data['user_id'] != ANONYMOUS && isset($_GET['sid']) && !is_array($_GET['sid']) && $_GET['sid'] === $user->session_id)
		{
			$user->session_kill();
			$user->session_begin();
			$message = $user->lang['LOGOUT_REDIRECT'];
		}
		else
		{
			$message = ($user->data['user_id'] == ANONYMOUS) ? $user->lang['LOGOUT_REDIRECT'] : $user->lang['LOGOUT_FAILED'];
		}
		meta_refresh(3, append_sid("{$phpbb_root_path}index.$phpEx"));
	
		$message = $message . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid("{$phpbb_root_path}index.$phpEx") . '">', '</a> ');
		trigger_error($message);

Verfasst: 04.01.2008 14:58
von michstro
Hallo zusammen,
also habe heute mal einwenig an dem neuen Login Version 3.0.0 auf Basis von dem Login der Version 2.0.22 gebastelt.

Code: Alles auswählen

define('IN_PHPBB', true);
$phpbb_root_path = '/var/www/pfad/zur/seite/'; 
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();

if ($user->data['user_id'] != ANONYMOUS) {
echo ($user->data['username']);
} else {
echo ('Anonymous');
}
Nur oben den Pfad anpassen, der Rest ist selbsterklärend.
denke das man so auch an die anderen Variablen herankommt.
$user->data['user_unread_privmsg'] und ähnliches.......

Gruß Mike

Verfasst: 07.01.2008 20:46
von ~| Marc |~
Vielen Dank, hat mit den Nachrichten auch super geklappt ;)

Habe jetzt schon fast alles geschafft, nur fehlt mir noch der Ausloggen-Link ... bekommt jemand diesen Code-Schnipsel auch noch programmiert?

Wäre auf alle Fälle grandios!

Mit freundlichen Grüßen,
Marc

Verfasst: 11.01.2008 08:39
von michstro

Code: Alles auswählen

<a href="http://www.domain.de/forum/ucp.php?sid=<?php echo ($user->data['session_id']); ?>&mode=logout">logout</a>
so zum Beispiel Redirect habe ich nicht ans laufen gebracht. Vielleicht hat jemand anderes eine Idee.
Gruß Mike

Verfasst: 11.01.2008 20:03
von ~| Marc |~
Grandios, funktioniert auch tadellos!

Eine Frage hätte ich jedoch noch. Ich habe mir über dein Script das User-Avatar geholt:

Code: Alles auswählen

if ($user->data['user_id'] != ANONYMOUS) {
echo ($user->data['user_avatar']);
} else {
echo ('Anonymous');
} 
Wird somit auch tadellos angezeigt, nur besteht das Problem, dass ein rotes Kreuz erscheint, sobald der Benutzer kein Avatar sein eigen nennt. Kann man hier ein Script erstellen, dass ein Bild anzeigt, wenn der Benutzer kein Avatar hochgeladen hat?

EDIT: Was mir auch gerade aufgefallen ist, dass ich im IE diese Meldung beim Script bekomme (eingebunden in der Homepage):

Code: Alles auswählen

[phpBB Debug] PHP Notice: in file /includes/session.php on line 885: Cannot modify header information - headers already sent by (output started at /home/www/sp01_57/html/head.inc.php:59)
In der Zeile 885 steht folgendes:

Code: Alles auswählen

header('Set-Cookie: ' . $name_data . '; expires=' . $expire . '; path=' . $config['cookie_path'] . $domain . ((!$config['cookie_secure']) ? '' : '; secure') . '; HttpOnly', false);
Mit freundlichen Grüßen,
Marc

Verfasst: 12.02.2008 18:02
von Kevinq
@ ~| Marc |~
mach bei der avatar anzeige einfach noch eine Prüfung hinein, die guck ob das feld ausgefüllt ist, also z.b.

Code: Alles auswählen

if($user->data['user_avatar'] != "")
{
//der ausgabe code
}
und headers already sent bedeutet beim phpbb meist das bereits irgendwas an den Browser ausgegeben wurde bevor die template engine gestartet wurde. und da wurde in deiner zeile 885 ja bereits tatsächlich etwas an den Browser gesendet, da die Funktion header() benutzt wurde.

----

ich habe da mal eine frage, ich versuche derzeit auf einer Seite die abgesehen vom templatesystem ins phpBB3 eingebunden ist eine einfache Loginmaske zu erstellen. ich möchte garnicht das meine Seite unbedingt selbst den Benutzer einloggt, sondern einfach nur das ausgefüllte Formular an die ucp.php weiterleitet.

habe dazu folgenden Code verwendet

Code: Alles auswählen

<form action="<?php echo append_sid('forum/ucp.php?mode=login'); ?>" method="post">
<input type="text" name="username" tabindex="1" size="15"/><br/>
<input type="password" name="password" tabindex="2" size="15" /><br/>
<input type="hidden" name="redirect" value="../index.php" />
<input type="hidden" name="sid" value="<? echo $user->session_id; ?>" />
<input type="submit" value="Login" /></form>
was dann im html Code so aussieht

Code: Alles auswählen

<form action="forum/ucp.php?mode=login" method="post">
<b>my Account</b><br/>
<input type="text" name="username" tabindex="1" size="15"/><br/>
<input type="password" name="password" tabindex="2" size="15" /><br/>
<input type="hidden" name="redirect" value="../index.php" />
<input type="hidden" name="sid" value="5d014605b2159d4b3fbc7ab0e18ede5d" />
<input type="submit" value="Login" />
</form>
nur leider werde ich auf die loginseite weitergelietet ohne eingeloggt zu werden, und auch ohne das irgendwelche formular vorausgefüllt sind. woran kann das liegen?

Verfasst: 13.02.2008 15:31
von ~| Marc |~
Habe das mit der session und dem Avatar in einem anderen Thread schon hinbekommen, trotzdem vielen Dank!

Nun zu deinem Problem:

Bei mir klappt das ganze so:

Code: Alles auswählen

<form action="../community/ucp.php?mode=login" method="post">
<input tabindex="1" name="username" id="username" size="20" value="Benutzer" class="inputbox autowidth" type="text" onfocus="javascript:this.value='';"><br><br>
<input tabindex="2" id="password" name="password" size="20" value="Passwort" class="inputbox autowidth" type="password" onfocus="javascript:this.value='';"><br><br>
<input name="autologin" id="autologin" tabindex="4" type="checkbox"> Automatisch anmelden<br><br>
<input name="redirect" value="../community/index.php" type="hidden">
<input name="login" tabindex="6" value="Anmelden" class="button1" type="submit">
</form>
Klappt bei mir wunderbar, werde auf die Login-Seite weitergeleitet und bin eingeloggt!

Verfasst: 13.02.2008 16:19
von Kevinq
thx, hat geklappt, frage mich nur wieso meine Version nicht geklappt hat, habe ja schließlich nur das Formular vom subsilver 2 template genommen und danach Pfad und Design angepasst.