@@ -41,155 +41,155 @@ |
||
41 | 41 | private $bdchar = CF_BD_CHAR; |
42 | 42 | private $bdconector = CF_BD_CONECTOR; |
43 | 43 | |
44 | - public function __construct() { |
|
45 | - session_regenerate_id(true); |
|
46 | - // set our custom session functions. |
|
47 | - session_set_save_handler(array($this, 'abrir'), array($this, 'cerrar'), array($this, 'leer'), array($this, 'escribir'), array($this, 'destruir'), array($this, 'gc')); |
|
48 | - // This line prevents unexpected effects when using objects as save handlers. |
|
49 | - register_shutdown_function('session_write_close'); |
|
50 | - } |
|
51 | - /* public function __destruct() { |
|
44 | + public function __construct() { |
|
45 | + session_regenerate_id(true); |
|
46 | + // set our custom session functions. |
|
47 | + session_set_save_handler(array($this, 'abrir'), array($this, 'cerrar'), array($this, 'leer'), array($this, 'escribir'), array($this, 'destruir'), array($this, 'gc')); |
|
48 | + // This line prevents unexpected effects when using objects as save handlers. |
|
49 | + register_shutdown_function('session_write_close'); |
|
50 | + } |
|
51 | + /* public function __destruct() { |
|
52 | 52 | session_regenerate_id(true); |
53 | 53 | }*/ |
54 | - function iniciarSesion($session_name, $secure) { |
|
55 | - // Make sure the session cookie is not accessable via javascript. |
|
56 | - $httpunico = true; |
|
54 | + function iniciarSesion($session_name, $secure) { |
|
55 | + // Make sure the session cookie is not accessable via javascript. |
|
56 | + $httpunico = true; |
|
57 | 57 | |
58 | - // Hash algorithm to use for the sessionid. (use hash_algos() to get a list of available hashes.) |
|
59 | - $sesion_hash = 'sha512'; |
|
58 | + // Hash algorithm to use for the sessionid. (use hash_algos() to get a list of available hashes.) |
|
59 | + $sesion_hash = 'sha512'; |
|
60 | 60 | |
61 | - // Check if hash is available |
|
62 | - if (in_array($sesion_hash, hash_algos())) { |
|
61 | + // Check if hash is available |
|
62 | + if (in_array($sesion_hash, hash_algos())) { |
|
63 | 63 | // Set the has function. |
64 | 64 | ini_set('session.hash_function', $sesion_hash); |
65 | - } |
|
66 | - // How many bits per character of the hash. |
|
67 | - // The possible values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", ","). |
|
68 | - ini_set('session.hash_bits_per_character', 5); |
|
69 | - |
|
70 | - // Force the session to only use cookies, not URL variables. |
|
71 | - ini_set('session.use_only_cookies', 1); |
|
72 | - |
|
73 | - // Get session cookie parameters |
|
74 | - $cookieParams = session_get_cookie_params(); |
|
75 | - // Set the parameters |
|
76 | - session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httpunico); |
|
77 | - // Change the session name |
|
78 | - session_name($session_name); |
|
79 | - // Now we cat start the session |
|
80 | - session_start(); |
|
65 | + } |
|
66 | + // How many bits per character of the hash. |
|
67 | + // The possible values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-", ","). |
|
68 | + ini_set('session.hash_bits_per_character', 5); |
|
69 | + |
|
70 | + // Force the session to only use cookies, not URL variables. |
|
71 | + ini_set('session.use_only_cookies', 1); |
|
72 | + |
|
73 | + // Get session cookie parameters |
|
74 | + $cookieParams = session_get_cookie_params(); |
|
75 | + // Set the parameters |
|
76 | + session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httpunico); |
|
77 | + // Change the session name |
|
78 | + session_name($session_name); |
|
79 | + // Now we cat start the session |
|
80 | + session_start(); |
|
81 | 81 | |
82 | - // This line regenerates the session and delete the old one. |
|
83 | - // It also generates a new encryption key in the database. |
|
82 | + // This line regenerates the session and delete the old one. |
|
83 | + // It also generates a new encryption key in the database. |
|
84 | 84 | |
85 | - } |
|
85 | + } |
|
86 | 86 | |
87 | 87 | // ingrese la informacion de conexion a su base de datos, debe ser igual a la que esta en CFConfiguracion.php |
88 | - function abrir() { |
|
89 | - $host = $this->host; |
|
90 | - $user = $this->usuario; |
|
91 | - $pass = $this->clave; |
|
92 | - $name = $this->bdnombree; |
|
88 | + function abrir() { |
|
89 | + $host = $this->host; |
|
90 | + $user = $this->usuario; |
|
91 | + $pass = $this->clave; |
|
92 | + $name = $this->bdnombree; |
|
93 | 93 | |
94 | - $mysqli = new \mysqli($host, $user, $pass, $name); |
|
95 | - $this->db = $mysqli; |
|
96 | - return true; |
|
97 | - } |
|
94 | + $mysqli = new \mysqli($host, $user, $pass, $name); |
|
95 | + $this->db = $mysqli; |
|
96 | + return true; |
|
97 | + } |
|
98 | 98 | |
99 | - function cerrar() { |
|
100 | - $this->db->close(); |
|
101 | - return true; |
|
102 | - } |
|
99 | + function cerrar() { |
|
100 | + $this->db->close(); |
|
101 | + return true; |
|
102 | + } |
|
103 | 103 | |
104 | 104 | |
105 | - function leer($id) { |
|
106 | - if(!isset($this->read_stmt)) { |
|
107 | - $this->read_stmt = $this->db->prepare("SELECT data FROM sesiones WHERE id = ? LIMIT 1"); |
|
108 | - } |
|
109 | - $this->read_stmt->bind_param('s', $id); |
|
110 | - $this->read_stmt->execute(); |
|
111 | - $this->read_stmt->store_result(); |
|
112 | - $this->read_stmt->bind_result($data); |
|
113 | - $this->read_stmt->fetch(); |
|
114 | - $key = $this->getkey($id); |
|
115 | - $data = $this->decrypt($data, $key); |
|
116 | - return $data; |
|
117 | - } |
|
105 | + function leer($id) { |
|
106 | + if(!isset($this->read_stmt)) { |
|
107 | + $this->read_stmt = $this->db->prepare("SELECT data FROM sesiones WHERE id = ? LIMIT 1"); |
|
108 | + } |
|
109 | + $this->read_stmt->bind_param('s', $id); |
|
110 | + $this->read_stmt->execute(); |
|
111 | + $this->read_stmt->store_result(); |
|
112 | + $this->read_stmt->bind_result($data); |
|
113 | + $this->read_stmt->fetch(); |
|
114 | + $key = $this->getkey($id); |
|
115 | + $data = $this->decrypt($data, $key); |
|
116 | + return $data; |
|
117 | + } |
|
118 | 118 | |
119 | 119 | |
120 | 120 | |
121 | 121 | |
122 | 122 | |
123 | - function escribir($id, $data) { |
|
124 | - // Get unique key |
|
125 | - $key = $this->getkey($id); |
|
126 | - // Encrypt the data |
|
127 | - $data = $this->encrypt($data, $key); |
|
123 | + function escribir($id, $data) { |
|
124 | + // Get unique key |
|
125 | + $key = $this->getkey($id); |
|
126 | + // Encrypt the data |
|
127 | + $data = $this->encrypt($data, $key); |
|
128 | 128 | |
129 | - $time = time(); |
|
130 | - if(!isset($this->w_stmt)) { |
|
131 | - $this->w_stmt = $this->db->prepare("REPLACE INTO sesiones (id, set_time, data, session_key) VALUES (?, ?, ?, ?)"); |
|
132 | - } |
|
129 | + $time = time(); |
|
130 | + if(!isset($this->w_stmt)) { |
|
131 | + $this->w_stmt = $this->db->prepare("REPLACE INTO sesiones (id, set_time, data, session_key) VALUES (?, ?, ?, ?)"); |
|
132 | + } |
|
133 | 133 | |
134 | - $this->w_stmt->bind_param('siss', $id, $time, $data, $key); |
|
135 | - $this->w_stmt->execute(); |
|
136 | - return true; |
|
137 | - } |
|
138 | - |
|
139 | - function destruir($id) { |
|
140 | - if(!isset($this->delete_stmt)) { |
|
141 | - $this->delete_stmt = $this->db->prepare("DELETE FROM sesiones WHERE id = ?"); |
|
142 | - } |
|
143 | - $this->delete_stmt->bind_param('s', $id); |
|
144 | - $this->delete_stmt->execute(); |
|
145 | - return true; |
|
146 | - } |
|
147 | - |
|
148 | - function gc($max) { |
|
149 | - if(!isset($this->gc_stmt)) { |
|
150 | - $this->gc_stmt = $this->db->prepare("DELETE FROM sesiones WHERE set_time < ?"); |
|
151 | - } |
|
152 | - $old = time() - $max; |
|
153 | - $this->gc_stmt->bind_param('s', $old); |
|
154 | - $this->gc_stmt->execute(); |
|
155 | - return true; |
|
156 | - } |
|
157 | - |
|
158 | - private function getkey($id) { |
|
134 | + $this->w_stmt->bind_param('siss', $id, $time, $data, $key); |
|
135 | + $this->w_stmt->execute(); |
|
136 | + return true; |
|
137 | + } |
|
138 | + |
|
139 | + function destruir($id) { |
|
140 | + if(!isset($this->delete_stmt)) { |
|
141 | + $this->delete_stmt = $this->db->prepare("DELETE FROM sesiones WHERE id = ?"); |
|
142 | + } |
|
143 | + $this->delete_stmt->bind_param('s', $id); |
|
144 | + $this->delete_stmt->execute(); |
|
145 | + return true; |
|
146 | + } |
|
147 | + |
|
148 | + function gc($max) { |
|
149 | + if(!isset($this->gc_stmt)) { |
|
150 | + $this->gc_stmt = $this->db->prepare("DELETE FROM sesiones WHERE set_time < ?"); |
|
151 | + } |
|
152 | + $old = time() - $max; |
|
153 | + $this->gc_stmt->bind_param('s', $old); |
|
154 | + $this->gc_stmt->execute(); |
|
155 | + return true; |
|
156 | + } |
|
157 | + |
|
158 | + private function getkey($id) { |
|
159 | 159 | |
160 | 160 | |
161 | - if(!isset($this->key_stmt)) { |
|
162 | - $this->key_stmt = $this->db->prepare("SELECT session_key FROM sesiones WHERE id = ? LIMIT 1"); |
|
163 | - } |
|
164 | - $this->key_stmt->bind_param('s', $id); |
|
165 | - $this->key_stmt->execute(); |
|
166 | - $this->key_stmt->store_result(); |
|
167 | - if($this->key_stmt->num_rows == 1) { |
|
168 | - $this->key_stmt->bind_result($key); |
|
169 | - $this->key_stmt->fetch(); |
|
170 | - return $key; |
|
171 | - } else { |
|
172 | - $random_key = hash('sha512', uniqid(mt_rand(1, mt_getrandmax()), true)); |
|
173 | - return $random_key; |
|
174 | - } |
|
175 | - } |
|
176 | - |
|
177 | - private function encrypt($data, $key) { |
|
178 | - $salt = 'cH!swe!retReGu7W6bEDRup7usuDUh9THeD2CHeGE*ewr4n39=E@rAsp7c-Ph@pH'; |
|
179 | - $key = substr(hash('sha256', $salt.$key.$salt), 0, 32); |
|
180 | - $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); |
|
181 | - $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); |
|
182 | - $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_ECB, $iv)); |
|
183 | - return $encrypted; |
|
184 | - } |
|
185 | - private function decrypt($data, $key) { |
|
186 | - $salt = 'cH!swe!retReGu7W6bEDRup7usuDUh9THeD2CHeGE*ewr4n39=E@rAsp7c-Ph@pH'; |
|
187 | - $key = substr(hash('sha256', $salt.$key.$salt), 0, 32); |
|
188 | - $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); |
|
189 | - $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); |
|
190 | - $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($data), MCRYPT_MODE_ECB, $iv); |
|
191 | - return $decrypted; |
|
192 | - } |
|
161 | + if(!isset($this->key_stmt)) { |
|
162 | + $this->key_stmt = $this->db->prepare("SELECT session_key FROM sesiones WHERE id = ? LIMIT 1"); |
|
163 | + } |
|
164 | + $this->key_stmt->bind_param('s', $id); |
|
165 | + $this->key_stmt->execute(); |
|
166 | + $this->key_stmt->store_result(); |
|
167 | + if($this->key_stmt->num_rows == 1) { |
|
168 | + $this->key_stmt->bind_result($key); |
|
169 | + $this->key_stmt->fetch(); |
|
170 | + return $key; |
|
171 | + } else { |
|
172 | + $random_key = hash('sha512', uniqid(mt_rand(1, mt_getrandmax()), true)); |
|
173 | + return $random_key; |
|
174 | + } |
|
175 | + } |
|
176 | + |
|
177 | + private function encrypt($data, $key) { |
|
178 | + $salt = 'cH!swe!retReGu7W6bEDRup7usuDUh9THeD2CHeGE*ewr4n39=E@rAsp7c-Ph@pH'; |
|
179 | + $key = substr(hash('sha256', $salt.$key.$salt), 0, 32); |
|
180 | + $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); |
|
181 | + $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); |
|
182 | + $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_ECB, $iv)); |
|
183 | + return $encrypted; |
|
184 | + } |
|
185 | + private function decrypt($data, $key) { |
|
186 | + $salt = 'cH!swe!retReGu7W6bEDRup7usuDUh9THeD2CHeGE*ewr4n39=E@rAsp7c-Ph@pH'; |
|
187 | + $key = substr(hash('sha256', $salt.$key.$salt), 0, 32); |
|
188 | + $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); |
|
189 | + $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); |
|
190 | + $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($data), MCRYPT_MODE_ECB, $iv); |
|
191 | + return $decrypted; |
|
192 | + } |
|
193 | 193 | |
194 | 194 | } |
195 | 195 |