Forums-Logout auf Webseite

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
legiondesringes
Mitglied
Beiträge: 4
Registriert: 09.09.2007 19:04

Forums-Logout auf Webseite

Beitrag 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
Benutzeravatar
Underhill
Mitglied
Beiträge: 1180
Registriert: 24.09.2003 11:40
Wohnort: 742 Evergreen Terrace

Beitrag 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
legiondesringes
Mitglied
Beiträge: 4
Registriert: 09.09.2007 19:04

Beitrag 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
Benutzeravatar
Underhill
Mitglied
Beiträge: 1180
Registriert: 24.09.2003 11:40
Wohnort: 742 Evergreen Terrace

Beitrag von Underhill »

Hi,

teste mal

Code: Alles auswählen

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


Gruß
Underhill
legiondesringes
Mitglied
Beiträge: 4
Registriert: 09.09.2007 19:04

Beitrag 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
Benutzeravatar
Underhill
Mitglied
Beiträge: 1180
Registriert: 24.09.2003 11:40
Wohnort: 742 Evergreen Terrace

Beitrag 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
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag 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.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
legiondesringes
Mitglied
Beiträge: 4
Registriert: 09.09.2007 19:04

Beitrag 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
              	}
              ?>
onken
Mitglied
Beiträge: 66
Registriert: 23.03.2006 16:35
Wohnort: Oldenburg
Kontaktdaten:

Beitrag von onken »

danke legiondesringes ;-)
Antworten

Zurück zu „Coding & Technik“