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

Hallo,

ich wollte einfach mal fragen ob sich jemand schonmal mit der session_set_save_handler() funtion auseinander gesetzt hat ?!

Also die Benutzerdefinierte Session-Speicherfunktion von PHP. Bei mir funktioniert insoweit alles, er speichert die Session + Daten in einer DB und liest sie auch wieder aus. Der session_destroy() mit der Datenbank funktioniert auch, nur die function sec_gc() funktioniert einfach nicht. Er löscht den Garbage nach einer bestimmten Zeit einfach nicht. Dieses Problem hatte ich auch schon mit dem definierten session.gc_maxlifetime Wert in der php.ini, wenn ich den Intervall auf 10sec gesetzt habe wurde die session auch nie gelöscht, also ein allgemeines Problem von PHP ?!

Leider gibt einem die PHP-Hilfe wenig hilfreiches über dieses Thema ...

Ich habe mein Script mal gepostet ...

<?

$current_session_name = false;

function connectDB(){

$db = "db-rz-09-idl10";

mysql_connect("db-rz-09", "-", "-");

mysql_select_db($db);

}

function disconnectDB(){

mysql_close();

}

function sec_open($save_path, $session_name) {

GLOBAL $current_session_name;

$current_session_name = $session_name;

}

function sec_close() {

return true;

}

function sec_read($key) {

GLOBAL $current_session_name;

connectDB();

$r = "SELECT value FROM session WHERE idkey = '$key' AND name = '$current_session_name'";

$result = mysql_query($r);

if (mysql_num_rows($result) == 1) {

$session_data = mysql_result($result,0,'value');

return $session_data;

} else {

return "";

}

disconnectDB();

}

function sec_write($key, $value) {

GLOBAL $current_session_name;

connectDB();

$r = mysql_query("SELECT idkey FROM session WHERE idkey = '$key' AND name = '$current_session_name'");

if (mysql_num_rows($r)==0) {

mysql_query("INSERT INTO session (name,idkey,value,timestamp) VALUES ('$current_session_name','$key','$value',".time().")");

} else {

mysql_query("UPDATE session SET value = '$value', timestamp = ".time()." WHERE name = '$current_session_name' AND idkey = '$key'");

}

return true;

disconnectDB();

}

function sec_destroy($key) {

GLOBAL $current_session_name;

connectDB();

if (!mysql_query("DELETE FROM session WHERE idkey = '$key' AND name = '$current_session_name'")) {

return false;

} else {

return true;

}

disconnectDB();

}

function sec_gc($maxlifetime) {

GLOBAL $current_session_name;

connectDB();

$r = mysql_query("SELECT idkey FROM session WHERE name = '".$current_session_name."' AND timestamp < ".(time()-$maxlifetime));

if (!$r) {

return false;

}

for ($i=0; $i < mysql_num_rows($r); $i++) {

$row = mysql_fetch_array($r,$i);

sec_destroy($row["key"]);

}

return true;

disconnectDB();

}

session_set_save_handler ("sec_open", "sec_close", "sec_read", "sec_write", "sec_destroy", "sec_gc");

session_start();

?>

Wäre genial wenn jemand wüsste woran es liegt und wie man es beheben kann, also das mit der sec_gc() ...

MfG

7-Zip

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.