Zum Inhalt springen

[PHP] sessions


Empfohlene Beiträge

hi leute,

ich hab hier ne site und verwende darauf sessions.

folgende funktion:


function getUserSettings () {
global $db, $_TABLE, $_SESSION;

// Alle User Settings aus der User und der Session Tabelle auslesen und in die Session speichern
$iQueryId = $db->query( "select * from ". $_TABLE["user"] .", ". $_TABLE["session"]. " where ". $_TABLE["user"] .".user_id=". $_TABLE["session"]. ".user_id and ". $_TABLE["user"] .".user_id='". $_SESSION["user_id"] ."'");

while ( $aResult = $db->fetchArray( $iQueryId)) {
foreach ( $aResult as $sFieldName => $sFieldValue) {
$_SESSION[ $sFieldName] = $sFieldValue;
}
}
}

[/PHP]

in dieser funktion möchte ich alle daten aus den beiden tabellen in meine session reinschreiben!

Nur leider wenn ich auf meine nächste seite weitersurfe, dann hat er die variablen nicht mehr in der session gespeichert!

diese sehe ich mit folgender Funktioion

[PHP]
Session Variablen:<br>
<?php

foreach ( $_SESSION as $sVarName => $sVarValue) {
echo "Name: <b>". $sVarName ."</b>, Wert: <b>". $sVarValue ."</b><br>\n";
}

?>

also wenn ich diese funktion oben aufrufe dann geht alles wie es sein soll.

jeder session variable ist mit den richtigen werten gefüllt ( laut den ausgaben des scripts s.o.)

wenn ich nur aber auf nen link drücke den ich auf der seite habe und rufe dann wieder dieses scirpt (s.o.) auf, dann sind meine session variablen wieder leer!

wenn ich mir meine cookie variablen ausgebe, dann ist auf jeder seite das cookie mit der session id vorhanden!!!

bin ich nur zu blöd oder warum geht das nicht?!

danke + gruss,

kills

Link zu diesem Kommentar
Auf anderen Seiten teilen

also mir kommt das so vor, als würde das super globale array ( $_SESSION) nicht gefüllt werden.

irgendwie füllt der mir in den funktionen nur ein lokales/globales array?!

weiss jmd warum?!

so starte ich mein script:


require( "config.php");

session_name( $_CONFIG["session_name"]);
session_start();
$sSessionId = session_id();
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

es muss irgendwie an dieser funktion liegen:


// Session-Daten in die DB schreiben ( für WhoIsOnline usw.)
function session_pagestart( $sSessionId, $sSection) {
global $db, $_TABLE;

// Prüfen ob die Aktuelle Sessin gültig ist!
session_validate();

$sRemoteIp = $_SERVER["REMOTE_ADDR"];

$iQueryId = $db->query( "select user_id from ". $_TABLE["session"] ." where session_id='". $sSessionId ."'");
if ( $aResult = $db->fetchArray( $iQueryId)) {
// Session Daten Updaten
$iQueryId = $db->query( "update ". $_TABLE["session"] ." set section = '". $sSection ."', client_ip='". $sRemoteIp ."' where session_id='". $sSessionId ."'");
} else {
// Session Daten anlegen
$iQueryId = $db->query( "insert into ". $_TABLE["session"] ." set section = '". $sSection ."', client_ip='". $sRemoteIp ."', session_id='". $sSessionId ."'");
}

}


function session_validate () {
global $db, $_TABLE, $_SESSION;

// Session eingeloggt?
if ( isset ( $_SESSION["username"]) && isset ( $_SESSION["password"])) {

$iQueryId = $db->query( "select user_id from ". $_TABLE["user"]. " where username='". $_SESSION["username"] ."' and password='". $_SESSION["password"] ."'");

// User vorhanden?
if ( $aResult = $db->fetchArray( $iQueryId)) {

// Passt die eingeloggte User_id zu der User_id in der DB?
if ( $aResult[ "user_id"] != $_SESSION["user_id"]) {
error( 10);
}

} else {
error( 10);
}
}
}

[/PHP]

weil das geht:

[PHP]
if ( $show == "members") {
$_SESSION["testvar"] = 12;
}
session_pagestart( $sSessionId, $show);

und so gehts nicht:


session_pagestart( $sSessionId, $show);
if ( $show == "members") {
$_SESSION["testvar"] = 12;
}

[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich hab den fehler gefunden!!!

geht:


function testfunction () {
$_SESSION["test"] = 1;

}
[/PHP]

[b]geht nicht:[/b]

[PHP]
function testfunction () {
global $_SESSION;
$_SESSION["test"] = 1;

}

komischerweise wenn ich die Super globale variable $_COOKIE nehme, dann gehen beide varianten!,,....

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...