public static function refresh() { $random = rand(1, 2); if ($random % 2 == 0) { adodb_session_regenerate_id(); } }
/** * Efetua a autenticação do usuário em um módulo do SA * @param Login * @param Senha * @param Módulo que vai acessar no SA * @param conexao com banco de dados * @return boolean */ public function login($login, $senha, $modulo, $conn) { $ret = FALSE; $log_msg = $_SERVER['REMOTE_ADDR'] . ' - [' . date("d/m/Y H:i:s") . '] - '; if (empty($login) || empty($senha)) { exit(header('Location: ' . $this->base_url . 'app/login/index.php?sa_msg=Nome de usuário e senha não preenchidos.')); } else { // autentica na base LDAP e atualiza a senha caso necessário if ($this->ldap_conn) { if ($this->ldap_conn->authenticate($login, $senha)) { $nova_senha = hash('sha256', trim($senha)); $sql_verifica_senha = "SELECT senha FROM usuario WHERE nome = '{$login}' AND ativado = 'TRUE'; "; $senha_banco = $GLOBALS['ADODB_SESS_CONN']->getOne($sql_verifica_senha); // atualiza senha no banco com base na autenticação feita no LDAP if ($senha_banco != $nova_senha) { $atualiza_senha = "UPDATE usuario SET senha = '{$nova_senha}' WHERE nome = '{$login}' AND ativado = 'TRUE';"; $usuario_atualizado = $GLOBALS['ADODB_SESS_CONN']->Execute($atualiza_senha); } } } $sql = "SELECT u.id,ref_pessoa,nome_campus,senha FROM usuario u, campus c\n WHERE nome = '{$login}' AND\n senha = '" . hash('sha256', trim($senha)) . "' AND\n c.id = ref_campus AND\n ativado = 'TRUE'; "; $usuario = $GLOBALS['ADODB_SESS_CONN']->getAll($sql); // retorna o primeiro valor da consulta if (count($usuario) == 1) { list($usuario) = $usuario; // CONFIGURA OS PARAMETRO DE TRATAMENTO DE EXPIRACAO DA SESSAO $GLOBALS['USERID'] = $login; $GLOBALS['ADODB_SESSION_EXPIRE_NOTIFY'] = array('USERID', 'session::clear_session'); // CONFIGURA AS VARIAVEIS DA SESSAO DE LOGIN $_SESSION['sa_auth'] = $login . ':' . hash('sha256', $senha) . ':' . $usuario[0] . ':' . $usuario[1]; $_SESSION['sa_modulo'] = $modulo; $_SESSION['sa_campus'] = $usuario[2]; // força atualização da sessão recriando o ID da sessão adodb_session_regenerate_id(); $log_msg .= $login . ' - *** LOGIN ACEITO ***' . "\n"; error_log($log_msg, 3, $this->log_file); $this->reg_log('LOGIN ACEITO'); $ret = TRUE; } else { $log_msg .= $login . ' - *** LOGIN RECUSADO ***' . "\n"; error_log($log_msg, 3, $this->log_file); $this->reg_log('LOGIN RECUSADO', $_SERVER["PHP_SELF"], $login, $modulo); } } return $ret; }
case 'postgres': $options['table'] = 'sessions2'; ADOdb_Session::config('postgres', 'localhost', 'postgres', 'natsoft', 'northwind', $options); break; case 'mysql': default: $options['table'] = 'sessions2'; ADOdb_Session::config('mysql', 'localhost', 'root', '', 'xphplens_2', $options); break; } #### SETUP NOTIFICATION $USER = '******' . rand(); $ADODB_SESSION_EXPIRE_NOTIFY = array('USER', 'NotifyExpire'); adodb_session_create_table(); session_start(); adodb_session_regenerate_id(); ### SETUP SESSION VARIABLES if (empty($_SESSION['MONKEY'])) { $_SESSION['MONKEY'] = array(1, 'abc', 44.41); } else { $_SESSION['MONKEY'][0] += 1; } if (!isset($_GET['nochange'])) { @($_SESSION['AVAR'] += 1); } ### START DISPLAY print "<h3>PHP " . PHP_VERSION . "</h3>"; print "<p><b>\$_SESSION['AVAR']={$_SESSION['AVAR']}</b></p>"; print "<hr /> <b>Cookies</b>: "; print_r($_COOKIE); var_dump($_SESSION['MONKEY']);
/** * ADOdb function to regenerate a new session id * * @private */ function oos_session_regenerate_id() { if (function_exists('adodb_session_regenerate_id')) { return adodb_session_regenerate_id(); } }
/** * Regenerate session id if using database * * NOTE: Work only if session is stored on database and * if sessions replica in disabled * * @global resource $SUMO * @author Alberto Basso <*****@*****.**> */ function sumo_session_regenerate_id() { global $SUMO; if (SUMO_SESSIONS_DATABASE) { adodb_session_regenerate_id(); } else { session_regenerate_id(); } $query = "UPDATE " . SUMO_TABLE_SESSIONS . "\n\t\t SET session_id='" . session_id() . "'\n\t\t WHERE session_id='" . $SUMO['client']['session_id'] . "'"; $SUMO['DB']->Execute($query); sumo_create_session_id(false); }