if ( $userdata['session_logged_in'] ) so richtig verwendet?

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
dama
Mitglied
Beiträge: 24
Registriert: 02.08.2004 10:18

if ( $userdata['session_logged_in'] ) so richtig verwendet?

Beitrag von dama »

Hallo,

hab mal wieder ein Problem... Ich möchte auf der Startseite meiner Homepage einen Login machen. Allerdings sollen die Eingabefelder nur dann angezeigt werden, wenn der User ausgeloggt ist. Ansonsten soll einfach die Nachricht angezeigt werden "du bist schon eingeloggt" Ich habe schon etwas versucht allerdings funktioniert es nicht richtig. Es werden immer beide HTML Teile gleichzietig angezeigt, Die if funktion bringt irgendwie gar nix. Darf man in die if-Funktion überhaupt HTML-Text schreiben? Wie würdet ihr das Lösen? Der Login selber funktioniert aber schon problemlos.

Hier der Quelltext:
<?php
//Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = 'forum';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
//Session auslesen und Benutzer-Informationen laden
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);

if ( $userdata['session_logged_in'] )
{
<tr>
<td height="181" valign="top"> <p align="center" class="Stil5">
<strong>Du bist bereits eingeloggt</strong>
</p>
</td>
</tr>
}
else
{
<tr>
<td valign="top"><p><span class="Stil9">Login
<form action="forum/login.php" method="post">
<span class="Stil10">Benutzername</span>
<span class="Stil2"><br>
<input type="text" name="username">
</span>
<span class="Stil10">Passwort</span>
<span class="Stil2"> <br>
<input type="password" name="password">
</span>
<span class="Stil10">Autologin?</span>
<span class="Stil2">
<input type="checkbox" name="autologin">
</span>
<input type="hidden" name="redirect" value="../thema.htm">
<br>
<input type="submit" name="login" value="go">
</form>
</span></p></td></tr>
}
?>

Viele Grüße aus dem heißen, sonnigen Stuttgart...
Benutzeravatar
Leuchte
Ehemaliges Teammitglied
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Leuchte »

Du darfst nich PHP und HTML mischen.
Entweder beendest du vor dem HTML-Kram PHP oder machst es mit Templates wie phpBB.
So könnte es z.B. aussehen
//Session auslesen und Benutzer-Informationen laden
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);

if ( $userdata['session_logged_in'] )
{
?>
<tr>
<td height="181" valign="top"> <p align="center" class="Stil5">
<strong>Du bist bereits eingeloggt</strong>
</p>
</td>
</tr>
<?php
}
else
{
?>
<tr>
<td valign="top"><p><span class="Stil9">Login
<form action="forum/login.php" method="post">
<span class="Stil10">Benutzername</span>
<span class="Stil2"><br>
<input type="text" name="username">
</span>
<span class="Stil10">Passwort</span>
<span class="Stil2"> <br>
<input type="password" name="password">
</span>
<span class="Stil10">Autologin?</span>
<span class="Stil2">
<input type="checkbox" name="autologin">
</span>
<input type="hidden" name="redirect" value="../thema.htm">
<br>
<input type="submit" name="login" value="go">
</form>
</span></p></td></tr>
<?php
}
?>
Desweiteren bitte die

Code: Alles auswählen

-Tags benutzen.
Scoutman
Mitglied
Beiträge: 278
Registriert: 11.02.2004 17:15
Wohnort: .at

Beitrag von Scoutman »

du darfst php und html nicht vermischen!

edit: ok da war einer schneller. dann brauch i nicht nochmal alles posten.
KEIN Support per PM!!!
Benutzeravatar
jasc
Ehemaliges Teammitglied
Beiträge: 2497
Registriert: 24.05.2001 02:00
Wohnort: Hergensweiler bei Lindau/B

Beitrag von jasc »

Code: Alles auswählen

<?php
//Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = 'forum';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
//Session auslesen und Benutzer-Informationen laden
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);

if ( $userdata['session_logged_in'] )
{
echo '<tr>
<td height="181" valign="top"> <p align="center" class="Stil5">
<strong>Du bist bereits eingeloggt</strong>
</p>
</td>
</tr>'
}
else
{
echo '<tr>
<td valign="top"><p><span class="Stil9">Login
<form action="forum/login.php" method="post">
<span class="Stil10">Benutzername</span>
<span class="Stil2"><br>
<input type="text" name="username">
</span>
<span class="Stil10">Passwort</span>
<span class="Stil2"> <br>
<input type="password" name="password">
</span>
<span class="Stil10">Autologin?</span>
<span class="Stil2">
<input type="checkbox" name="autologin">
</span>
<input type="hidden" name="redirect" value="../thema.htm">
<br>
<input type="submit" name="login" value="go">
</form>
</span></p></td></tr>'
}
?> 
Probier es mal so. Du solltest dir vielleicht nochmal das Kapitel PHP und HTML kombinieren durchlesen ;-).
dama
Mitglied
Beiträge: 24
Registriert: 02.08.2004 10:18

Beitrag von dama »

@leuchte
wenn ich es nach deiner Methode mache wird einfach immer alles angezeigt, egal ob ein oder ausgeloggt. Hier mal die URL
http://mitglied.lycos.de/ellentalabi2005/

@jasc
wenn ich es so mache wird nie etwas angezeigt.

stimmt vielleicht der Befehl if ( $userdata['session_logged_in'] ) so nicht ? Er ist jedenfalls in der Dokumentation so angegeben.
http://www.phpbb.de/doku/kb/artikel.php?artikel=72
...nach dem Shema hab ich des gemacht.
Benutzeravatar
Leuchte
Ehemaliges Teammitglied
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Leuchte »

Setz mal vor die if ( ... Konstruktion dieses hier

Code: Alles auswählen

$sql = "SELECT session_logged_in
		FROM ".SESSIONS_TABLE;
	if( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not obtain online information', '', __LINE__, __FILE__, $sql);
	}
http://www.phpbb.de/doku/kb/artikel.php?artikel=72
...nach dem Shema hab ich des gemacht.
Das stimmt auch, allerdings wird dort die page_header.php includet wo die o.g. Abfrage bereits enthalten ist.
dama
Mitglied
Beiträge: 24
Registriert: 02.08.2004 10:18

Beitrag von dama »

so hab jetzt nochmal probiert, ob es so geht. Allerdings kommt es zum gleichen Fehler. Irgendwie scheint er das auch nicht so als PHP zu akzeptieren - es wird teilweise angezeigt...(siehe Homepage)
Ich hab auch nochmal mit dem Header und footer probiert. Das geht aber auch nicht :(
Benutzeravatar
Leuchte
Ehemaliges Teammitglied
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Leuchte »

Wenn ich mir die Seite so ansehe - dort steht Code einfach auf der Seite. Hast du die Datei auch als *.php abgespeichert?
Ansonsten verlinke die Datei mal hier.. da ist noch einiges durcheinander.
dama
Mitglied
Beiträge: 24
Registriert: 02.08.2004 10:18

Beitrag von dama »

so hier nun der .txt link:
http://mitglied.lycos.de/ellentalabi2005/thema.txt

ich hatte die Datei nicht als *.php abgespeichert. Jetzt hab ich es aber gemacht. Wenn man jetzt auf die Homepage zugreift wird die thema.php aufgerufen. Allerdings kommt ein Fehler, der für mich natürlich auch keinen Sinn macht - einfach hier klicken:

http://mitglied.lycos.de/ellentalabi2005
Benutzeravatar
jasc
Ehemaliges Teammitglied
Beiträge: 2497
Registriert: 24.05.2001 02:00
Wohnort: Hergensweiler bei Lindau/B

Beitrag von jasc »

Du schließt die if-Anweisung ja auch zweimal ab bevor das else kommt, das kann also nicht gehen. Entferne mal die } über dem else.
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“