include in Tabelle bei Login mit switch

stega

Erfahrenes Mitglied
Hi!
Folgendes Problem: Ich habe eine Homepage, die aus Tabellen konstruiert ist. Auf dieser Homepage soll es einen für registrierte User vorbehaltenen geschützen Bereich geben.
Das ist klar, wie man das soweit mit Session macht.
Das Problem ist, dass ich ja das Loginformular in eine der Tabellen include und dann beim Einloggen zurück auf die Startseite verweise, aber dann nicht mehr das Loginformular einblenden will, sondern eben dann dauerhaft (bis zum UAsloggen bzw. Session löschen) die Navigationsleiste für reg. User.

Mein Prblem ist noch bisschen weiter komplex:
ich habe ein "Homepageinterface", in das dann entsprechend der angeklickten Links in die Mitte mit switch der Inhalt der geklickten Seite included wird.
Also so:
PHP:
<table> //jetzt vereinfacht
<tr><td><?
switch ($link) {
case "aktuell":
include "aktuell.inc.php";
case "schreiben":
include "schreiben.inc.php";
}
?>
</td></tr></table>

D.h. ich habe nach dem Login theoretisch zwei siwtschanweisungen gleichzeitig laufen, die eine, die sich ständig ändern durch das anklicken der links und die andere, die sagt, on der user eingeloggt ist oder nicht.
wie kann ich das lösen? hilft hier MySQL-Datenbank weiter?

Bitte helft mir, bei Fragen beantworte ich sie gerne
lg
 
was hältst du davon:
PHP:
<?
if (USER_IST_EINGELOGGT) {
   switch ($link) {
      case "aktuell":
         include "aktuell.inc.php";
         break;
      case "schreiben":
         include "schreiben.inc.php";
         break;
      default:
         echo 'Error 404: Seite nicht gefunden';
   }
} else {
   login_formular_anzeigen();
}
?>
 
mh...das ist glaub ich net was ich suche :rolleyes:
und zwar hab ich schon eine Navigationsleiste, dort ist das mit der switch($link)-Anweisung.
Dann gibts ne Tabelle mit dem Loginformular, das dann beim Einloggen ausgetauscht werden soll mit der Navigationsleiste für die reg. User...
d.h. ich brauche im Prinzip 2 switch-Anweisungen:
a) Für die link=xyz aus der Navigationsleiste
b) für eingeloggt --> dann navi für reg User anzeigen oder nicht eingeloggt --> dann Loginformular

verständlich so?
mfg
 
Das was er dir gezeigt hat entspricht genau dem was du wolltest, genauer lesen...

Hier nochmal etwas leichter erklärt.

Du fügst zu deiner Session eine Variable $loggedin oder ähnlich zu und gibst ihr je nachdem ob eingeloggt oder nicht eben einen Wert. Diesen Wert überprüfst du dann mit einer If-Abfrage und wenn er halt eingeloggt ist packst du das entsprechende rein. Ungefähr so:

PHP:
if($loggedin == "true")
{
Menustruktur + verborgenes Menu
}
else
{
Menustruktur + Loginformular
}

Das entspricht dem oben. Bedenke, dass es egal ist was du in die if-schleife reinpackst, ob das eine switch-anweisung ist oder einfach nur Text ist prinzipiell egal...
 
so, hab das mal jetzt versucht, aber es funktioniert absolut nicht...
hier könnt ihr euch das mal ansehen.
Ich habs folgendermaßen gemacht:
Es gibt das Loginscript. Das wird an eine Datei geschickt, die das verarbeiten soll. Die Datei sieht so aus:
PHP:
<?
// Session starten
session_start ();
include("inc.php");

$connectionid = mysql_connect ($host, $user, $password);
if (!mysql_select_db ($db, $connectionid))
{
  die ("Keine Verbindung zur Datenbank");
}
$query = "SELECT * FROM user WHERE user='".$_REQUEST["user"]."'";
$result = mysql_query($query);


if (mysql_num_rows ($result) > 0)
{
$data = mysql_fetch_array($result);

  $_SESSION["id"] = $data["id"];
  $_SESSION["user"] = $data["user"];
  $_SESSION["vorname"] = $data["vorname"];
  $_SESSION["name"] = $data["name"];
  $_SESSION["user_mail"] = $data["mail"];
  $_SESSION["logged"] = 1;

  header ("Location: logged.php");
}
else {
header ("Location:".$hauptlink."start");
}
?>
Wenn das jetzt eingeloggt ist, dann leitet er an die Datei logged.php weiter, dort steht nur, dass man eingeloggt wurde. Wenn dann wieder auf die Startseite verlinkt wird, muss doch eigentlich die Navigationsleiste für die registreirten USer zu sehen sein.
Die Navigationsleiste sieht wie folgt aus: (verkürzt)
PHP:
<? include("inc.php"); ?> 
<table width="80%%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td height="13"><font size=2><b>Writer's Area</b></font></td>
  </tr>
  <tr>
    <td><? if ($_SESSION["logged"]== "1" ) {  // Wenn logged= 1 is, soll er die Navigation für die registrierten User anzeigen
	  include ("navi.inc.m.php");
	  }
	  else {                                        // Wenn nicht, dann das login-Formular
	  include ("login.inc.php");
	  }
	  ?></td>
  </tr>
</table>
Aber warum funktioniert das dann nicht? Bitte helft mir!
Danke!

P.S.: sorry, hab vergessen, mit dem username test und dem passwort test könnt ihr das einloggen mal anschauen.... =)
 
Erstens solltes du auch das Passwort überprüfen lassen wenn du schon so einen Login machst. Denn im Moment reicht es aus, wenn man den Benutzername test eingibt und dann auf Login klickt.

Nun zu deinem eigentlichen Problem. Führst du auf start.php denn auch einmal session_start aus? Dies solltest du auf jeder Seite machen damit deine Sessionvariabel auch immer benutzt wird. Ohne ein session_start hast du keinen Zugriff auf die Session Variabel, da ja keine Session läuft.
Wenn dies so ist lasse doch mal den ganzen inhalt von $Session ausgeben um zu prüfen, was dort genau drin steht.
 
Zurück