Variabel mitnehmen ?

toboli

Erfahrenes Mitglied
Hallo,

ich möchte nach dem Login eines Users eine Variable mitnehmen. Diese wird aus einer
DB gelesen und ist für das Anzeigen des Adminmenüs des Users Wichtig. Je nach
Variable erhält dieser ein anderes Menü.

Gibt es eine Möglichkeit diese Variable über jede Seite mitzunehmen ohne Sie an die
URL zu übergeben oder in einen Cookie su schreiben ?

Die Funktion des Adminmenü wurde erst später in die Seite eingebunden, daher müssten
alle Links angepasst werden was eine Menge Arbeit wäre. Auf Cookies würde ich gern
verzichten wenn möglich.

Danke jetzt schon für Hilfe...
 
Ja schwer sind die schon :-)

Danke für die Links, habe mir das mal angeschaut. Mit ist aber nicht ganz klar, wie jetzt
genau die Variable da reinbringen. Also meine Session sieht so aus :

PHP:
$result_cms = mysql_query("SELECT * FROM $tab WHERE username ='$username'") or die(mysql_error());
$user_cms = mysql_fetch_array($result_cms);	
	
    if(!isset($username)) $username=$_POST ['username'];
    if(!isset($password)) $password=$_POST ['password'];

   session_start();

   if (!session_is_registered("login")) {
      if (isset($username) && ($username!="") && isset($password) && ($password!="")) {
        if (($password==$user_cms[passwort]) && ($user_cms[username]==$username))     session_register("login");
		}
	}
}
if (isset($logout) && ($logout==0)) {
	session_destroy();
}


Aber wie bekomme ich da jetzt die Id rein ? Das ist mir nicht ganz klar...?
 
Ersetze bitte mal session_is_registered("login") durch isset($_SESSION['login']) und session_register("login"); durch $_SESSION['login'] = $user_cms['username'];

Dann ist in der Variable $_SESSION['login'] der Username gespeichert.
Das kannst du natürlich auch für die ID aus der DB machen.
$_SESSION['id'] = $user_cms['name_der_id_in_der_datenbank'];

Wenn diese Variablen dann existieren, ist der User eingeloggt. Wenn nicht, dann nicht! ;-)
 
Aha, ok. Das mit der Session klappt. Code sieht jetzt so aus:

PHP:
session_start();

if (!isset($_SESSION['login'])) {
	
if (isset($username) && ($username!="") && isset($password) && ($password!="")) {
if (($password==$user_cms[passwort]) && ($user_cms[username]==$username)) {
$_SESSION['login'] = $user_cms['username'];
$_SESSION['id'] = $user_cms['id'];
	}
    }
}
if (isset($logout) && ($logout==0)) {
	session_destroy();
}

Jetzt aber noch ne Frage. Wie bekomme jetzt z.B. die User-ID an einen Link im Adminmenü dran?

Mit :
Code:
<a href="index.php?site=login&loginid=<?php echo $user_cms['id'] ?>">...</a>

komme ich nicht weit. Da wird leider nichts übernommen.
 
Übergib einfach die Session_id:
PHP:
<a href="index.php?site=login&<?php echo(SID); ?>">...</a>
Das wird "gekappt", wenns dein Server sowieso unterstützt.

Zugriff auf der neuen Seite mit $_SESSION['id'].
 
mhhhhh, da wird bei mir leider nichts übernommen. Hinter dem Link wird nichts angezeigt.
Muss ich denn das $_SESSION['fid']; in jeder Seite erneut aufrufen oder reichts das wenn
ich das nur in der index.php einbinden ? Arbeite ja mit nem Template.

Wie ist denn das wenn ich Daten des User per $result aus der DB holen will. Da muss ich
ja dann ebenfalls die ID irgendwie einbauen.

Ich glaube ich steh grad irgendwie auf dem Schlauch... :confused:
 
1.
Du musst die zugreifenden Datei auch mit [phpf]session_start[/phpf] beginnen.
Erst danach sind die _SESSION-Variablen verfügbar.

2.
$_SESSION['id'] = $user_cms['id'];
Hat danach die $_SESSION['id'] überhaupt einen Inhalt?
 
Also, der Code von den anderen Postings ist in der index.php am Anfang der Seite
eingebunden. Diese Seite wird ja bei jedem Aufruf der Unterseiten mit z.B.
index.php?site=home etc. aufgerufen.

Das Adminmenü wird per Include eingebunden und prüft bei Eingabe der Logindaten ob
User besteht oder nicht. Entsprechend wird dann entweder eine Fehlermeldung oder das
Adminmenü aufgerufen. Im Adminmenü sollte dann ja die User-ID an den Link übergeben
werden, damit ich aus der DB mit Result z.B. Daten für eine Profilformular auslesen kann.

Dann muss ich ja nicht mehr das session_start() in der Include-Datei übergeben. oder ?

Ich blick´s grad überhaupt nicht wie Du das meinst, sorry.
 
Zurück