Mailinglisten-Archive |
<?php /************************************************************************************ * Hallo Liste, * * jemand schon einmal php4 Session Storage mit einer * MySQL Datenbank gemacht ? * Ich habe da nämlich eine Anwendung die sich über mehrere * Server erstreckt und aus diesem Grund hätte ich gerne eine * zentrale Sessiondatenbank.... * Wie auch immer - irgendwie möchte z.B. die Gargabe Collection * nicht so wie ich es gerne hätte.... Die Sessions leben quasi ewig. * * Desweiteren würde ich gerne den ganzen Session Kram in * eine Klasse packen aber das will auch nicht so recht. * * Ciao, * Holger (hb_(at)_waldorf-gmbh.de) * * * CREATE TABLE sessions ( * session_id char(32) NOT NULL, * session_data char(255) NOT NULL, * timestamp timestamp(14), * UNIQUE session_id (session_id) * ); * ************************************************************************************/ // class my_weird_session_stuff { function connect() { mysql_pconnect("YOUR_MYSQL_HOST_HERE","YOUR_USER_HERE","YOUR_PASSWORD_HERE"); mysql_select_db("YOUR_DATABASE_NAME_HERE"); return true; } function read_insert__select_inserted($key) { $retval = mysql_query("SELECT session_data FROM sessions WHERE session_id = '$key'"); $result = mysql_fetch_row($retval); if (!$result) { $actual_time_at_this_moment_on_this_server = time(); mysql_query("INSERT INTO sessions (session_id, timestamp) VALUES ('$key', '$actual_time_at_this_moment_on_this_server')"); $retval = mysql_query("SELECT session_data FROM sessions WHERE session_id = '$key'"); $result = mysql_fetch_row($retval); } return $result[0]; } function close_after_destroy() { print "FUNCTION CLOSE is/was EXECUTED<p>"; mysql_close(); // ????? where to put _close && / || _free_result return true; } function update($key, $val) { $actual_time_at_this_moment_on_this_server = time(); $retval = mysql_query("UPDATE sessions SET session_id = '$key', session_data = '$val', timestamp = '$actual_time_at_this_moment_on_this_server' WHERE session_id = '$key'"); return $retval; } function prepare_to_close ($key) { $retval = mysql_query("DELETE FROM sessions WHERE session_id = '$key'"); return $retval; } function mysterious_garbager ($maxlifetime) { $actual_time_at_this_moment_on_this_server = time(); $query = "DELETE FROM sessions WHERE timestamp < ($actual_time_at_this_moment_on_this_server - $maxlifetime)"; mysql_query($query); return true; } function my_weird_session_stuff() { // Constructor session_set_save_handler("connect", "close_after_destroy", "read_insert__select_inserted", "update", "prepare_to_close", "mysterious_garbager"); } // } //end CLASS // session_set_save_handler() = new my_weird_session_stuff(); session_set_save_handler("connect", "close_after_destroy", "read_insert__select_inserted", "update", "prepare_to_close", "mysterious_garbager"); session_start (); session_register("count"); ?> <body bgcolor = "#FAE7AD"> <? $count++; if ($count==6) { session_destroy(); echo '<b>5</b> Times is Enough !<p><A HREF="sessioning.php">No ! Again !!</A>'; } else { ?> Hello,<br> our <A HREF="http://www.php.net/manual/ref.session.php3">Manual</A> has no deep explanation of the user session storage topic,<br> but anyway, you have seen this page <b><?php echo $count; ?></b> times.<p> To continue, <A HREF="sessioning.php?<?=SID?>">click here</A> <?}?>
php::bar PHP Wiki - Listenarchive