Seite 1 von 2

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

Verfasst: 03.08.2004 11:38
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...

Verfasst: 03.08.2004 11:44
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.

Verfasst: 03.08.2004 11:45
von Scoutman
du darfst php und html nicht vermischen!

edit: ok da war einer schneller. dann brauch i nicht nochmal alles posten.

Verfasst: 03.08.2004 11:48
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 ;-).

Verfasst: 03.08.2004 13:38
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.

Verfasst: 03.08.2004 13:50
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.

Verfasst: 03.08.2004 19:20
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 :(

Verfasst: 03.08.2004 19:23
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.

Verfasst: 03.08.2004 21:10
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

Verfasst: 03.08.2004 21:40
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.