示例#1
0
 public static function refresh()
 {
     $random = rand(1, 2);
     if ($random % 2 == 0) {
         adodb_session_regenerate_id();
     }
 }
示例#2
0
 /**
  * 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;
 }
示例#3
0
    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();
    }
}
示例#5
0
/**
 * 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);
}