Seite 1 von 1

Forums-Logout auf Webseite

Verfasst: 06.10.2007 17:35
von legiondesringes
Hallo, ich bin noch ein absoluter php-Neuling und habe ein kleines (evtl. auch mittleres) Problem. Ich habe auf meiner Homepage ein Login-Formular für das phpbb-Forum eingebaut. Das klappt auch sehr gut. Nun wollte ich als nächste Stufe erreichen, dass nach dem Login der Logout-Button anstelle des Login-Forms erscheint. Dies klappt leider nicht. Ich es wird immer nur wieder das Loginform angezeigt. Hier mal der Code:

Code: Alles auswählen

<?php
         if ($user->data['user_id'] == 0)
        {
?>
              <form action="/Forum/login.php" method="post" style="background-image:url(images/gen_background.jpg)">
              Benutzername:<br>
              <input class="login" type="text" name="username"><br>
              Passwort:<br>
              <input class="login" type="password" name="password"><br>
              Eingeloggt bleiben
              <input class="checkbox" type="checkbox" name="autologin"><br>
              <input type="hidden" name="redirect" value="../index2.php"/>
              <input class="mainoption" type="submit"  name="login" value="Login">
              </form>
<?php
        }
         else
        {
?>
              <form action="/Forum/index.php?mode=logout&sid=<?php echo $user->data['session_id']; ?>" method="post">
              <input type="hidden" name="redirect" value="../index2.php" />
              <input type="submit" value="Logout" /></form><br>
<?php
        }
?>
Ich hoffe ihr könnt mir weiterhelfen. In der Suche habe ich nämlich nichts gefunden.
Vielen Dank im Vorraus

Tim

Verfasst: 07.10.2007 08:33
von Underhill
Hi,

ist denn nach dem Login

Code: Alles auswählen

$user->data['user_id']
vorhanden? oder welcher Wert ist da drinn?

Einfach mit mal

Code: Alles auswählen

<?php
echo $user->data['user_id'] . '<hr />'; 
if ($user->data['user_id'] == 0)
ausgeben lassen..

Ich gehe mal davon aus, dass da nichts anderes ausser NULL drinn sein kann..


Gruß
Underhill

Verfasst: 07.10.2007 15:18
von legiondesringes
Danke erst einmal für deine Hilfe.
Ich habe deine Code-Zeile eingefügt.
Underhill hat geschrieben:
Einfach mit mal

Code: Alles auswählen

<?php
echo $user->data['user_id'] . '<hr />'; 
if ($user->data['user_id'] == 0)
ausgeben lassen..

Ich gehe mal davon aus, dass da nichts anderes ausser NULL drinn sein kann..
Tatsächlich gibt er mir gar nichts aus. Es erscheint nur die <hr>-Linie.
Also wird scheinbar gar keine user_id geladen.

Ich poste mal sämtlichen php-Code meiner Seite:

Anfang:

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);
?>
Loginform:

Code: Alles auswählen

<?php
         echo $user->data['user_id'] . '<hr />';
         if ($user->data['user_id'] == 0) 
        { 
?> 
              <form action="/Forum/login.php" method="post" style="background-image:url(images/gen_background.jpg)"> 
              Benutzername:<br> 
              <input class="login" type="text" name="username"><br> 
              Passwort:<br> 
              <input class="login" type="password" name="password"><br> 
              Eingeloggt bleiben 
              <input class="checkbox" type="checkbox" name="autologin"><br> 
              <input type="hidden" name="redirect" value="../index2.php"/> 
              <input class="mainoption" type="submit"  name="login" value="Login"> 
              </form> 
<?php 
        } 
         else 
        { 
?> 
              <form action="/Forum/index.php?mode=logout&sid=<?php echo $user->data['session_id']; ?>" method="post"> 
              <input type="hidden" name="redirect" value="../index2.php" /> 
              <input type="submit" value="Logout" /></form><br> 
<?php 
        } 
?> 
Ich hoffe ihr könnt mir weiterhelfen.

Gruß

Tim

Verfasst: 07.10.2007 16:07
von Underhill
Hi,

teste mal

Code: Alles auswählen

$userdata['user_id']
Ist da etwas nach der Anmledung drinn?


Gruß
Underhill

Verfasst: 07.10.2007 22:42
von legiondesringes
Zuerst einmal: Herzlichen Dank.
Mit

Code: Alles auswählen

$echo userdata['user_id']
wird die ID nun tatsächlich ausgegeben.

Nicht eingeloggt: ID=-1
Eingeloggt: ID= 17

Leider kam nach dem Login noch nicht der Logout-Button.

Ich habe dann rumexperimentiert und in der If-Bedingung auch
user->data durch userdata ersetzt. Außerdem musste noch was in Form action etwas geändert werden.
Jetzt klappt das wunderbar.

Ich habe nur noch eine Frage: Wann benutze ich user->data und wann userdata?

Gruß

Tim

Verfasst: 08.10.2007 16:26
von Underhill
Hi,

$userdata[] ist ein Array das nach den nötigen phpBB-Includes verfügbar ist.

mit $user->data[] wird innerhalb der phpbb Datei mit einem Array gearbeitet (gepusht?)


Gruß
Underhill

Verfasst: 08.10.2007 21:51
von gn#36
Arbeitest du mit phpbb2 oder phpbb3?
Die beiden Versionen verwenden unterschiedliche Variablen.
In phpbb2 stehen alle Userdaten in $userdata und es gibt das Objekt $user nicht (zu dem auch $user->data gehört). Phpbb3 kennt dagegen $userdata nicht.
Aus den eingebundenen Includes würde ich schließen dass du phpbb2 nutzt, daher solltest du alles auf $userdata umstellen.

Verfasst: 20.11.2007 14:41
von legiondesringes
ich hab jetzt folgendes eingebaut. Klappt bestens:

Code: Alles auswählen

<?php
//Benoetigte 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);
//fuer LogOut Button
if ($_POST['ausloggen'] == 1){
$userdata = array();
$_SESSION = array();
}
?>
(das ist im Kopf)

login/ Logout selbst:

Code: Alles auswählen

<?php
		if ($userdata['user_id'] == -1)
		{
              ?>
                         <tr>
                         	<td>Login</td>
                         </tr>
                         <tr>

                        	<td>

			    <form action="/FORUM/login.php" method="post"
                             	  >
			    	Benutzername:<br>
                                 <input class="login" type="text" name="username"><br>
                                 Passwort:<br>
                                 <input class="login" type="password" name="password"><br>
				Eingeloggt bleiben
	                        <input class="checkbox" type="checkbox" name="autologin"><br>
                                 <input type="hidden" name="redirect" value="../index2.php"/>
                                 <input type="submit"  name="login" value="Login">
	       		    </form>
                             <a  style="font-size:12px; color:#733A1A;" href="/FORUM/profile.php?mode=register&sid=<?php echo $userdata['session_id']; ?>">Registrieren</a>
              <?php
              	}
                 else
                 {
              ?>
                         <tr>
                         	<td>Logout</td>
                         </tr>
                         <tr>

                        	<td>
	                    <form action="/FORUM/login.php?logout=true&sid=<?php echo $userdata['session_id']; ?>"
                                   method="post">
			    	<input type="hidden" name="redirect" value="../index.php" />
				<input  type="submit" value="Logout"  />
                             </form><br>
	     <?php
              	}
              ?>

Verfasst: 20.11.2007 21:25
von onken
danke legiondesringes ;-)