• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

$_SESSION Problem

Anusha

Mitglied
HI,

folgendes problem:
Warum funktionert folgendes nicht:
PHP:
if(isset($_SESSION[$id]) {
    // tu was
} 

$_SESSION[$id] = true;
also $_SESSION[$id] wird hier nie als true ausgewertet...
wenn ich statt der variable $id aber nen String nehm, dann gehts...
Kann man in der Session keinen Variablen Index machen?
 
Zuletzt bearbeitet:
Werbung:
Anhand deines Beispiels, kann ich dir das sehr leicht erklären:

session_start wurde nicht aufgerufen.
$id wurde nicht deklariert.
Der Inhalt der Bedingung ist leer.
 
ja session_start() hab ich natuerlich aufgerufen und $id ist auch deklariert.
Hab nur den relevanten Teil kopiert. Sorry fuer das missverstaendnis ;)
 
Werbung:
also folgendes:

PHP:
session_start();

$id = 1 // irgend ne zahl

if(isset($_SESSION[$id]) {
   // tu was 
}

$_SESSION[$id] = true;

wenn ich die seite jetzt neu lade und $id den gleichen wert hat, dann muesste doch

$_SESSION[$id] schon gesetzt sein oder?

Ich habs auch schon mit mit '$id' und "$id" probiert geht beides nicht.
Wenn ich stattdessen mach

$_SESSION['test'] = true;

und auf das pruefe, dann gehts...
 
Werbung:
Siehe dir
PHP:
if(isset($_SESSION[$id]) {
nochmal genauer an. Du hast vergessen eine runde Klammer zu schließen.

Gruß
 
Komisch, darüber habe ich noch nie nachgedacht, da ich immer Strings als Index einsetze, aber wenn ich mich recht erinnere ist es so:

Mal abgesehen von den Syntax-Fehlern ($id = 1; es fehlt das Semikolon):
Nummerische Indizes (Schlüssel) werden nur für die Laufzeit des Scriptes gespeichert und danach wieder gelöscht, Strings hingegen werden als Superglobale registriert und wiederverwendet und dürfen auch als Array verwendet werden.

Setzt du also am Anfang deines Scripts $_SESSION[1] = 'Bla';, kannst du bis zum Ende deines Scriptes diese Variable verwenden, es wird aber keine Superglobale registriert. Nach einem Refresh ist die Variable wieder weg.
Setzt du $_SESSION['Foo'] = 'Bar'; Wird eine Superglobale registriert und kann wieder verwandet werden.

PS
Du kannst natürlich immer ein Array auf eine Session mit string-Schlüsseln erzeugen, die als Superglobale registreirt werden, $_SESSION['a'][$id] sollte also klappen
 
Zuletzt bearbeitet von einem Moderator:
Sorry, ich hab wohl das Skript ein wenig schnell eingetippt ins Forum, an Syntax-Fehlern lag es jedenfalls nicht ;

Aber sysop hat mir die perfekte Antwort geliefert.
Wieder was nuetzliches gelernt.
Vielen vielen dank ;)
 
Werbung:
Zurück
Oben