| Line | |
|---|
| 1 | <?php |
|---|
| 2 | if (!defined('XOOPS_ROOT_PATH')) { |
|---|
| 3 | exit(); |
|---|
| 4 | } |
|---|
| 5 | |
|---|
| 6 | if (!function_exists('session_regenerate_id')) { |
|---|
| 7 | if (!defined('XOOPS_SALT')) { |
|---|
| 8 | define('XOOPS_SALT', substr(md5(XOOPS_DB_PREFIX . XOOPS_DB_USER . XOOPS_ROOT_PATH), 5, 8)); |
|---|
| 9 | } |
|---|
| 10 | // session_regenerate_id compatible function for PHP Version< PHP4.3.2 |
|---|
| 11 | function session_regenerate_id() { |
|---|
| 12 | srand(microtime() * 100000); |
|---|
| 13 | $random = md5(XOOPS_SALT . uniqid(rand(), true)); |
|---|
| 14 | if (session_id($random)) { |
|---|
| 15 | return true; |
|---|
| 16 | } else { |
|---|
| 17 | return false; |
|---|
| 18 | } |
|---|
| 19 | } |
|---|
| 20 | } |
|---|
| 21 | |
|---|
| 22 | // Regenerate New Session ID & Delete OLD Session |
|---|
| 23 | function xoops_session_regenerate() { |
|---|
| 24 | $old_sessid = session_id(); |
|---|
| 25 | session_regenerate_id(); |
|---|
| 26 | $new_sessid = session_id(); |
|---|
| 27 | session_id($old_sessid); |
|---|
| 28 | session_destroy(); |
|---|
| 29 | $old_session = $_SESSION; |
|---|
| 30 | session_id($new_sessid); |
|---|
| 31 | $sess_handler =& xoops_gethandler('session'); |
|---|
| 32 | session_set_save_handler(array(&$sess_handler, 'open'), array(&$sess_handler, 'close'), array(&$sess_handler, 'read'), array(&$sess_handler, 'write'), array(&$sess_handler, 'destroy'), array(&$sess_handler, 'gc')); |
|---|
| 33 | session_start(); |
|---|
| 34 | $_SESSION = array(); |
|---|
| 35 | foreach (array_keys($old_session) as $key) { |
|---|
| 36 | $_SESSION[$key] = $old_session[$key]; |
|---|
| 37 | } |
|---|
| 38 | } |
|---|
| 39 | ?> |
|---|
Note: See
TracBrowser
for help on using the repository browser.