/catalog/includes/functions/sessions.php

https://github.com/taoistmath/demo_app · PHP · 194 lines · 142 code · 42 blank · 10 comment · 43 complexity · 3d6f1ea9efb0b60d17f79b8b4fd18c62 MD5 · raw file

  1. <?php
  2. /*
  3. $Id$
  4. osCommerce, Open Source E-Commerce Solutions
  5. http://www.oscommerce.com
  6. Copyright (c) 2014 osCommerce
  7. Released under the GNU General Public License
  8. */
  9. if ( (PHP_VERSION >= 4.3) && ((bool)ini_get('register_globals') == false) ) {
  10. @ini_set('session.bug_compat_42', 1);
  11. @ini_set('session.bug_compat_warn', 0);
  12. }
  13. if (STORE_SESSIONS == 'mysql') {
  14. function _sess_open($save_path, $session_name) {
  15. return true;
  16. }
  17. function _sess_close() {
  18. return true;
  19. }
  20. function _sess_read($key) {
  21. $value_query = tep_db_query("select value from " . TABLE_SESSIONS . " where sesskey = '" . tep_db_input($key) . "'");
  22. $value = tep_db_fetch_array($value_query);
  23. if (isset($value['value'])) {
  24. return $value['value'];
  25. }
  26. return '';
  27. }
  28. function _sess_write($key, $value) {
  29. $check_query = tep_db_query("select 1 from " . TABLE_SESSIONS . " where sesskey = '" . tep_db_input($key) . "'");
  30. if ( tep_db_num_rows($check_query) > 0 ) {
  31. return tep_db_query("update " . TABLE_SESSIONS . " set expiry = '" . tep_db_input(time()) . "', value = '" . tep_db_input($value) . "' where sesskey = '" . tep_db_input($key) . "'");
  32. } else {
  33. return tep_db_query("insert into " . TABLE_SESSIONS . " values ('" . tep_db_input($key) . "', '" . tep_db_input(time()) . "', '" . tep_db_input($value) . "')");
  34. }
  35. }
  36. function _sess_destroy($key) {
  37. return tep_db_query("delete from " . TABLE_SESSIONS . " where sesskey = '" . tep_db_input($key) . "'");
  38. }
  39. function _sess_gc($maxlifetime) {
  40. return tep_db_query("delete from " . TABLE_SESSIONS . " where expiry < '" . (time() - $maxlifetime) . "'");
  41. }
  42. session_set_save_handler('_sess_open', '_sess_close', '_sess_read', '_sess_write', '_sess_destroy', '_sess_gc');
  43. }
  44. function tep_session_start() {
  45. global $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS;
  46. $sane_session_id = true;
  47. if ( isset($HTTP_GET_VARS[tep_session_name()]) ) {
  48. if ( (SESSION_FORCE_COOKIE_USE == 'True') || (preg_match('/^[a-zA-Z0-9,-]+$/', $HTTP_GET_VARS[tep_session_name()]) == false) ) {
  49. unset($HTTP_GET_VARS[tep_session_name()]);
  50. $sane_session_id = false;
  51. }
  52. }
  53. if ( isset($HTTP_POST_VARS[tep_session_name()]) ) {
  54. if ( (SESSION_FORCE_COOKIE_USE == 'True') || (preg_match('/^[a-zA-Z0-9,-]+$/', $HTTP_POST_VARS[tep_session_name()]) == false) ) {
  55. unset($HTTP_POST_VARS[tep_session_name()]);
  56. $sane_session_id = false;
  57. }
  58. }
  59. if ( isset($HTTP_COOKIE_VARS[tep_session_name()]) ) {
  60. if ( preg_match('/^[a-zA-Z0-9,-]+$/', $HTTP_COOKIE_VARS[tep_session_name()]) == false ) {
  61. $session_data = session_get_cookie_params();
  62. setcookie(tep_session_name(), '', time()-42000, $session_data['path'], $session_data['domain']);
  63. unset($HTTP_COOKIE_VARS[tep_session_name()]);
  64. $sane_session_id = false;
  65. }
  66. }
  67. if ($sane_session_id == false) {
  68. tep_redirect(tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false));
  69. }
  70. register_shutdown_function('session_write_close');
  71. return session_start();
  72. }
  73. function tep_session_register($variable) {
  74. global $session_started;
  75. if ($session_started == true) {
  76. if (PHP_VERSION < 4.3) {
  77. return session_register($variable);
  78. } else {
  79. if (!isset($GLOBALS[$variable])) {
  80. $GLOBALS[$variable] = null;
  81. }
  82. $_SESSION[$variable] =& $GLOBALS[$variable];
  83. }
  84. }
  85. return false;
  86. }
  87. function tep_session_is_registered($variable) {
  88. if (PHP_VERSION < 4.3) {
  89. return session_is_registered($variable);
  90. } else {
  91. return isset($_SESSION) && array_key_exists($variable, $_SESSION);
  92. }
  93. }
  94. function tep_session_unregister($variable) {
  95. if (PHP_VERSION < 4.3) {
  96. return session_unregister($variable);
  97. } else {
  98. unset($_SESSION[$variable]);
  99. }
  100. }
  101. function tep_session_id($sessid = '') {
  102. if (!empty($sessid)) {
  103. return session_id($sessid);
  104. } else {
  105. return session_id();
  106. }
  107. }
  108. function tep_session_name($name = '') {
  109. if (!empty($name)) {
  110. return session_name($name);
  111. } else {
  112. return session_name();
  113. }
  114. }
  115. function tep_session_close() {
  116. if (PHP_VERSION >= '4.0.4') {
  117. return session_write_close();
  118. } elseif (function_exists('session_close')) {
  119. return session_close();
  120. }
  121. }
  122. function tep_session_destroy() {
  123. global $HTTP_COOKIE_VARS;
  124. if ( isset($HTTP_COOKIE_VARS[tep_session_name()]) ) {
  125. $session_data = session_get_cookie_params();
  126. setcookie(tep_session_name(), '', time()-42000, $session_data['path'], $session_data['domain']);
  127. unset($HTTP_COOKIE_VARS[tep_session_name()]);
  128. }
  129. return session_destroy();
  130. }
  131. function tep_session_save_path($path = '') {
  132. if (!empty($path)) {
  133. return session_save_path($path);
  134. } else {
  135. return session_save_path();
  136. }
  137. }
  138. function tep_session_recreate() {
  139. global $SID;
  140. if (PHP_VERSION >= 5.1) {
  141. $old_id = session_id();
  142. session_regenerate_id(true);
  143. if (!empty($SID)) {
  144. $SID = tep_session_name() . '=' . tep_session_id();
  145. }
  146. tep_whos_online_update_session_id($old_id, tep_session_id());
  147. }
  148. }
  149. ?>