Jump to content
gust.php

Zend2 Session - Usuarios online

Recommended Posts

Boa noite pessoal,

 

Tenho um sistema de login com zend2 funcionando e gostaria de implementar na tela inicial do sistema um  "usuarios on-line". Não faço a menor ideia por onde começar, então achei melhor pedir orientação aos amigos.

Estou pensando em fazer isso verificando as sessões ativas, acho melhor que verificar flag em banco de dados, pois o usuário poderia fechar o navegador e a flag continuaria ativa.

Dúvidas:

como pegar todas as sessões ativas no sistema?

como verificar isso de tempos em tempos sem reload na página?

 

Se alguém tiver algum exemplo online que possa me passar, agradeço.

 

Valeu ...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By fabina
      Ola tenho um questionario feito  em php  guardo o valor das respostas no banco   e depois    tem um resultado por cada area  que ele respondeu ate ai responde  super bem mais quando  duas pessoas começam a fazer  ele  perde o valor da session e nao  exibe o valor para o meu usuario ,ou as vezes troca o nome do usuario x para y 
    • By Redschenko
      Boa tarde.

      Tenho um sistema onde o usuário faz login e grava a sessão
      $_SESSION['LOGADO'] = true; Nesta página com acesso restrito verifico se o usuário está logado. Caso não, redireciono para página de login.
       
      if(!isset ($_SESSION['LOGADO']) == true) { header("Location:../../index.php?t=d&m=4"); exit(); } Isto estava funcionando corretamente, porém após passar a utilizar https, na página com acesso restrito a verificação ($_SESSION['LOGADO'] == true) está sempre redirecionando para a página de login.
      Alguém sabe se há alguma particularidade para casos onde seja HTTPS?
       
      Agradeço a atenção
      Rodrigo de Oliveira
    • By brunoogm
      Pessoal tenho o seguinte codigo:
       
      <!DOCTYPE html>
      <html lang="pt-br">
          <head>
              <meta charset="utf-8">
              <meta http-equiv="X-UA-Compatible" content="IE=edge">
              <meta name="viewport" content="width=device-width, initial-scale=1">
              <title>KADAM - Menu Digital</title>
              <link rel="icon" href="../imagens/img.png" type="image.png" />
              <link href="../css/bootstrap.min.css" rel="stylesheet">
              <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
              <link rel='stylesheet' href='https://use.fontawesome.com/releases/v5.7.0/css/all.css' integrity='sha384-lZN37f5QGtY3VHgisS14W3ExzMWZxybE1SJSEsQp9S+oqd12jhcu+A56Ebc1zFSJ' crossorigin='anonymous'>
              <script src="../js/bootstrap.min.js"></script>
              
              <script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
              <script src="sweetalert2.all.min.js"></script>
              <script src="https://cdn.jsdelivr.net/npm/promise-polyfill"></script>
          </head>
          <body>
              <div class="container theme-showcase" role="main">

      <?php
      session_start();
      include_once("php/conexao.php");

      $idPessoa = $_SESSION['id_pessoa'];
      $id_cliente = $_SESSION['id_user']; 
      $cont = $_SESSION['cont'];
       
      echo "ID cliente: ".$id_cliente."<br>";
      echo "Cont: ".$cont."<br>";
       
      $endereco = filter_input(INPUT_POST, 'endereco');
      $total = filter_input(INPUT_POST, 'Total');
      $metodopag = filter_input(INPUT_POST, 'pagamento');
      $troco = filter_input(INPUT_POST, 'troco');
      $cpfnota = filter_input(INPUT_POST, 'cpfnota');
      $query= "Select * from enderecocliente WHERE CodigoEndereco = $endereco";
      $resulta = mysqli_query($conectar, $query);
      $resultado = mysqli_fetch_array($resulta);

      //echo "Cod Endereco: ".$endereco."<br>";
      //echo "Nome Cidade: ".$resultado['NomeCidade']."<br>";
      //echo "Endereco: ".$resultado['Endereco']."<br>";
      //echo "Cep: ".$resultado['CEP']."<br>";
      //echo "numero: ".$resultado['Numero']."<br>";
      //echo "Cod Endereco: ".$resultado['Bairro']."<br>";
      //echo "Cod Endereco: ".$resultado['Estado']."<br>";
      //echo "Cod Endereco: ".$metodopag."<br>";
      //echo "Total: ".$total."<br>";

      $query ="UPDATE comanda SET ValorTotal= '$total', CodigoEndereco= $resultado[CodigoEndereco], CodigoMetodoPag = $metodopag, CodigoSituacao = '3' WHERE CodigoComanda = $cont";
      $resultado = @mysqli_query($conectar, $query);
      $query2 ="INSERT INTO pagamento  (CodigoComanda, CpfNota, CodigoMetodoPag, Troco, ValorTotal) VALUES ('$cont', '$cpfnota', '$metodopag', '$troco', '$total')";
      $resultado2 = @mysqli_query($conectar, $query2);
      $_SESSION['cont'] = 0;
      if (mysqli_affected_rows($conectar)) {
              
      ?>
      <script>
          swal({
              
              closeOnEsc: false,
              closeOnClickOutside: false,
              title: "Sucesso!",
              text: "Parabéns! Pedido enviado com sucesso!",
              icon: "success",
              button: "Ok",
                  }).then(function(){   
                      window.location.href = "../carrinho.php"; 
                      });
      </script>
                  
                  <?php } else { ?>
      <script>
          swal({
              
              closeOnEsc: false,
              closeOnClickOutside: false,
              title: "Erro!",
              text: "Ops! Seu pedido não foi enviado!",
              icon: "error",
              button: "Ok",
                  }).then(function(){   
                      window.location.href = "../carrinho.php"; 
                      });
      </script>
      <?php } ?>
       
       
      Testando em localhost esse código funciona normalmente onde os valores das sessions estão sempre disponíveis,
      porem agora que coloquei o site no ar essas sessões não estão mais apresentando valores, e é somente nessa pagina que isso acontece
      nas outras paginas elas apresentam seus valores corretamente...
       
      Alguém tem alguma sugestão, do que poderia ser ?
    • By soaresra
      Olá colegas, eu venho avançando a cada dia na programação em PHP mas eu travei em uma estrutura e queria a ajuda dos colegas mais experientes.
       
      Eu tenho 3 tabelas:
      Adm_Funcionarios_Usuarios - contem login e senha
      # login,  senha
          jose,  1234
       
      Sis_Setores: aonde tem os nomes dos módulos e os links dele. Ex. Administrativo, Financeiro, etc.
      # linkNome          link
      administrativo     administrativo.php
      financeiro             financeiro.php
      vendas                  vendas.php
       
      Adm_Funcionarios_Usuarios_Acessos - contem login e módulos
      # login,  autorizados
           jose,  administrativo, financeiro
       
      Hoje eu só uso o menu carregando todas as opções
      $sql = "SELECT * FROM Sis_Setores WHERE linkNome = '$Sistema' AND situacao = 1;"; $return = mysqli_query($conexao, $sql) or trigger_error(" Query falhou! SQL: $sql - Error: ".mysqli_error(), E_USER_ERROR); while($LinhaMenu = mysqli_fetch_assoc($return)) { echo '<a href="'.$LinhaMenu["link"].'" target="_self">'.$LinhaMenu["linkNome"]."</a>"; } O que eu estou tentando fazer é: (levando em consideração que eu já tenha as informações do usuário logado)
       
      1 - Verifica quem é a pessoa logada / Já tenho isso pronto
      2 - Verifica se a pessoa logada existe na tabela Adm_Funcionarios_Usuarios_Acessos no campo login / Já tenho isso pronto
       
      Não estou conseguindo fazer
       
      3 - Verifica na tabela Adm_Funcionarios_Usuarios_Acessos o campo autorizados os módulos que serão carregados
      4 - Percorre a array com os valores, exemplo: administrativo, vendas
      5 - Se existe na array a palavra administrativo que também existe no campo linkNome da tabela Sis_Setores
      6 - Carrega no menu apenas os links que existem dentro da array.
       
      O que eu tentei fazer sem sucesso (coisas de café com leite):
       
      $sql = "SELECT autorizados FROM Adm_Funcionarios_Usuarios_Acessos WHERE iduser = 1;"; $return = mysqli_query($conexao, $sql) or die(mysqli_error($conexao)); if(!$result = mysqli_fetch_array($return)) { echo "Deu Ruim no SQL dos Acessos"; } else { $autorizados = $result["autorizados"]; //echo $autorizados; foreach($autorizados as $valor) { $sql = "SELECT * FROM Sis_Setores WHERE linkNome = '$autorizados' AND situacao = 1;"; $return = mysqli_query($conexao, $sql) or trigger_error(" Query falhou! SQL: $sql - Error: ".mysqli_error(), E_USER_ERROR); while($LinhaMenu = mysqli_fetch_assoc($LinksSubSistema)) { echo '<a href="'.$LinhaMenu["link"].'" target="_self">'.$LinhaMenu["linkNome"]."</a>".$br; } } } O erro que dá é 
      Warning: Invalid argument supplied for foreach() in testeArray.php on line 50 //Linha 50 -> foreach($autorizados as $valor)
       
      Agradeço desde já aos colegas.
       
       
       
       
       
       
       
    • By Vinicius-Visanfe
      Ola tenho esses arquivos.
       
      // Esse arquivo usuarios.php tem a conexao e a parte de login e cadastro.
      ?php   class Usuario{   private $pdo;   //Construtor public function __construct($dbname, $host, $username, $password){ try { $this->pdo = new PDO("mysql:dbname=".$dbname.";host=".$host, $username, $password); } catch (PDOException $e) { echo "Erro com BD: ".$e->getMessage(); }catch (Exception $e) { echo "Erro: ".$e->getMessage(); } }   //Cadastrar public function cadastrar($nome, $telefone, $email, $cpf, $bairro, $cidade, $senha){   //Antes de cadastrar verificar se ja esta cadastrado $cmd = $this->pdo->prepare("SELECT id from usuarios WHERE email = :e"); $cmd->bindValue(":e",$email); $cmd->execute(); if($cmd->rowCount() > 0) //Veio id { return false; }else // Não veio id { //Cadastrar $cmd = $this->pdo->prepare("INSERT INTO usuarios (nome, telefone, email, cpf, bairro, cidade, senha) values (:n, :t, :e, :c, :b, :d, :s)"); $cmd->bindValue(":n",$nome); $cmd->bindValue(":t",$telefone); $cmd->bindValue(":e",$email); $cmd->bindValue(":c",$cpf); $cmd->bindValue(":b",$bairro); $cmd->bindValue(":d",$cidade); $cmd->bindValue(":s",md5($senha)); $cmd->execute(); return true; }     }   //Logar public function entrar($email, $senha) { $cmd = $this->pdo->prepare("SELECT * from usuarios WHERE email = :e AND senha = :s"); $cmd->bindValue(":e",$email); $cmd->bindValue(":s",md5($senha)); $cmd->execute(); if($cmd->rowCount() > 0) //Se foi encontrado essa pessoa { $dados = $cmd->fetch();   if($dados['id'] == 1) { //Usuario ADM $_SESSION['id_master'] = 1; }else{ //Usuario Normal $_SESSION['id_usuario'] = $dados['id']; } return true; //Usuário encontrado }else{ return false; //Usuário não foi encontrado } }   } ?>   // Ja esse arquivo meu-perfil.php seria o Perfil de usuario   html lang="pt-br"> <head> <title>Meu perfil - Pé na Estrada</title>   <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <link rel="stylesheet" href="../css/style.css"> <link rel="stylesheet" href="../css/perfil.css">     <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">   </head> <body> <header class="cabecalho"> <div class="container"> <div class="caixa-cabecalho"> <h1 class="logo"><img class="logo-pe" src="../images/logotipo-pne.png" width="50%"></h1> <button class="btn-menus"><a class="btns">Cadastrar <i class="fas fa-home"></i></button> <button class="btn-menul"><a class="btnl" href="">Sair <i class="fas fa-sign-out-alt"></i></i></a></button> </div> </div> </header> <main> <div class="container"> <div class="caixa-conteudo">   </div> </div> </main> <footer class="rodape"> <div class="container"> <div class="caixa-rodape"> <p class="titulo-rodape">Sobre</p><br> <a href="#" class="texto-rodape">Inicio</a> <a href="#" class="texto-rodape">Termos de Uso</a> <a href="#" class="texto-rodape">Pontos Turisticos</a> <a href="#" class="texto-rodape">Contato</a> </div> <div class="caixa-rodape" id="fale"> <p class="titulo-rodape">Fale Conosco</p><br> <p class="texto-rodape">(11) 98020-1329</p> <p class="texto-rodape">marketing@penaestrada.net.br</p> <P class="texto-rodape">contato@penaestrada.net.br</P> </div> <div class="caixa-links" id="redes"> <p class="titulo-rodape">Acesse nossos canais</p><br> <p class="texto-links"><i id="face" class="fab fa-facebook-f"></i> <i id="insta" class="fab fa-instagram"></i> <i id="twit" class="fab fa-twitter"></i> <i id="you" class="fab fa-youtube"></i></p> </div> <div class="caixa-rodape"> <p class="texto-rodape2">PAÚBA Criativa</p> </div> <div class="caixa-rodape"> <p class="texto-rodape2"> <i class="fas fa-credit-card" id="card"></i> Crédito/Débito <i class="fas fa-file-invoice-dollar" id="boleto"></i> Boleto </p> </div> <div class="caixa-rodape"> <p class="texto-rodape2"> Segurança <i class="fas fa-shield-alt" id="seguranca"></i> </p> </div> </div> <div class="caixa-reservados"> <p class="texto-reservados">PÉ NA ESTRADA © 2019 - Todos os direitos reservados</p> </div> </footer>   <!--Modal de Sign In--> <style> .modal-container{ width: 100vw; height: 100vh; background: rgba(0,0,0,.5); position: fixed; top: 0; left: 0; z-index: 2000; display: none; justify-content: center; align-items: center; } .modal-container.mostrar{ display: flex; } .modal{ background: #ffffff; width: 25%; min-width: 250px; padding: 20px; position: relative; border-radius: 8px; }   @keyframes modal{ from{ opacity: 0; transform: translate3d(0, -60px, 0); } to{ opacity: 1; transform: translate3d(0, 0, 0); } }   .mostrar.modal{ animation: modal .3s; }   .fechar{ position: absolute; font-size: 1.2em; top: -25px; right: -20px; width: 40px; height: 50px; border-radius: 50%; border: 2px solid #ffffff; background-color: #011936; color: #ffffff; cursor: pointer; box-shadow: 0 4px 4px 0 rgba(0, 0, 0, .3); } .title{ font-weight: bold; color: #011936; } .form-sign{ display: grid; } .cx-form{ height: 40px; margin-top: 5px; border: 1px solid #a8dbff; border-radius: 7px; }   .cx-btn{ margin-top: 5px; width: 40%; height: 40px; background-color: #a8dbff; border: 1px solid #a8dbff; color: #011936; font-weight: bold; border-radius: 7px; }   </style> <div id="modal-signin" class="modal-container"> <div class="modal"> <button class="fechar"><i class="fas fa-times"></i></button> <h3 class="title">Cadastrar Propriedade</h3> <form class="form-sign" action="" method="post" enctype="multipart/forma-data"> <input class="cx-form" type="text" name="titulo" id="titulo" placeholder=" Titulo" maxlength="255" required> <input class="cx-form" type="text" name="endereco" id="endereco" placeholder=" Endereço" maxlength="255" required> <input class="cx-form" type="text" name="cep" id="cep" placeholder="CEP" maxlength="20" required> <input class="cx-form" type="text" name="bairro" id="bairro" placeholder=" Bairro" maxlength="60" required> <input class="cx-form" type="text" name="cidade" id="cidade" placeholder=" Cidade" maxlength="60" required> <input class="cx-form" type="text" name="estado" id="estado" placeholder=" Estado" maxlength="2" required> <input class="cx-form" type="text" name="info" id="info" placeholder=" informações" maxlength="600" required> <input class="cx-upload" type="file" name="images" id="images"> <input class="cx-btn" type="submit" value="CADASTRAR"> </form> </div> </div>   <script> function iniciaModal(modalId){ const modal = document.getElementById(modalId); if(modal) { modal.classList.add('mostrar'); modal.addEventListener('click', (e) => { if(e.target.id == modalId || e.target.className == 'fechar' || e.target.className == 'fas fa-times') { modal.classList.remove('mostrar'); } }); } }   const btn = document.querySelector('.btn-menus'); btn.addEventListener('click', () => iniciaModal('modal-signin'));   </script> </body> </html>   <!--PHP -->   <?php   if(isset($_POST['titulo'])){ $titulo = htmlentities(addslashes($_POST['titulo'])); $endereco = htmlentities(addslashes($_POST['endereco'])); $cep = htmlentities(addslashes($_POST['cep'])); $bairro = htmlentities(addslashes($_POST['bairro'])); $cidade = htmlentities(addslashes($_POST['cidade'])); $estado = htmlentities(addslashes($_POST['estado'])); $info = htmlentities(addslashes($_POST['info'])); $images = htmlentities(addslashes($_POST['images']));   if(!empty($titulo) && !empty($endereco) && !empty($cep) && !empty($bairro) && !empty($cidade) && !empty($estado) && !empty($info) && !empty($images)) { require_once '../classes/propriedades.php'; $us = new PDO("mysql:dbname=navarro7_usuarios;host=localhost", "navarro70", "Navarro0");   } } ?>   // E tenho esse código PHP na página login.php com campos de email e senha.   <?php     if(isset($_POST['email'])){   $email = htmlentities(addslashes($_POST['email'])); $senha = htmlentities(addslashes($_POST['senha'])); if(!empty($email) && !empty($senha)){ require_once 'classes/usuarios.php'; $us = new Usuario("navarro7_usuarios", "localhost", "navarro70", "Navarro0"); if($us->entrar($email, $senha)){ echo '<script>window.location.href = "/pages-adm/meu-perfil.php"</script>'; }else{ echo "Email e/ou senha estão incorretos!"; } }else{ echo "Preencha todos os campos!"; }   }   ?>  
      Alguém pode me ajudar nesse caso quero que quando o usuario usa a pagina login colocando o email e senha ela vai para a pagina meu-perfil.php mais que eu consiga fazer aparecer o nome dele na pagina.
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.