Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[PHP] sessions

Empfohlene Antworten

Veröffentlicht

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

<?

session_start (); // Starte eine Session

?>

haste das am anfang der 2 seite benutzt ? muss vor allem anderem stehen ...

ja das hab ich drinne.

sonst würde er doch das $_SESSION array nicht füllen könne oder?

das array existiert dann garnicht erst ;)

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]

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]

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!,,....

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.