Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

josenilson

Verificação de usuário logado em php

Recommended Posts

Olá para todos !

Pessoal estou com uma dificuldade aqui, como iniciante em php estou queimando a Cuca mas sei que para os programados desse forum vai ser moleza.

 

tenho um sistema de login feito com a junção de HTML, CSS, E PHP ate ai tudo bem. o sistema esta funcionado a mil por hora, mas o que quero fazer agora e o seguinte:

 

O usuário loga no sistema ate ai tudo bem, porem se eu abrir uma nova pagina do sistema e logar com este mesmo usuário o sistema deveria informar que este já esta logado ou em uso.

imagino que seja um nível de segurança, eu consigo logar no sistema quantas vezes eu quiser com o mesmo usuário.

 

 

A logica que quero e a seguinte:

quando eu tentar logar mais de uma vez com o mesmo usuário no sistema o mesmo venha informar que o usuário já esta logado,

ou seja que quando for efetuar o login ele meio que verifique se já foi logado esse usuário, como eu faria isso.

 

segue abaixo os códigos que estou utilizando.

 

1 pagina em HTML com o formulário enviando suas informações via post para uma pagina em php

2 pagina PHP verifica os dados se existem no banco de dados e chama a pagina que seria a Desktop do sistema.

 

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

<?php
//SE A SEÇÃO ESTIVER ATIVA REDIRECIONA PARA A PAGINA DESKTOP NÃO DEIXANDO O USUÁRIO VOLTAR PARA A TELA DE LOGIN
// SOMENTE SE O USUÁRIO DESLOGAR DO SISTEMA
ob_start();
session_start();
if(isset($_SESSION['usuario']) &&(isset($_SESSION['senha']))){
header('location:Desktop.php');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>AJE-NORDESTE VER 1.0</title>
<style>
body{ background-color: #333333;}
.form{
width:0px;
margin-left:120px;
margin-top:-20px;
border:solid #000 0px;
background-color:#FFF;
float:left;
}
.entre{
width:500px;
height:300px;
margin:150px auto;
border:solid #000 1px;
background-color:#FFF;
border-radius:10px;
}
</style>
</head>
<body>
<div class="entre"><br />
<div class="form">
<p align="center">
<img src="imagens/logo.jpg" alt="login" /></p>
<form action="logar.php" method="post" name="" id="">
<table width="250" border="0">
<tr>
<td><font face="Arial">login</font>:</td>
<td><input name="usuario" type="text" id="usuario" /></td>
</tr>
<tr>
<td><font face="Arial">Senha</font>:</td>
<td><input name="senha" type="password" id="senha" /></td>
</tr>
<!-------------NESTE PONTO ABAIXO ESTA MONTADO A FUNCÇAO QUE JERA A OPÇÃO DE NIVEL DE USUÁRIO-------------->
<tr>
<td><font face="Arial">Nivel</font>:</td>
<td>
<?php
function combonivel($lista = false){
$montarArray = array("","1","ADMINISTRADOR", "ADVOGADO", "SECRETÁRIA","ESTAGIARIO");
if ($lista == ""){
foreach ($montarArray as $i){
$resultArray .= "<option value=\"{$i}\">{$i}</option>";
}
return $resultArray;
}
else {
foreach ($montarArray as $i){
if ($lista == $i){
$resultArray .= "<option value=\"{$i}\" selected=\"selected\">{$i}</option>";
}
else {
$resultArray .= "<option value=\"{$i}\">{$i}</option>";
}
}
return $resultArray;
}
}
?>
<select name="nivel" id="nivel">
<?php echo combonivel(); ?>
</select>
</td>
</tr>
<!------NESTE PONTO ACIMA ESTA MONTADO A FUNCÇAO QUE JERA A OPÇÃO DE NIVEL DE USUÁRIO-------->
<tr>
<td><br /><input type="submit" name="logar" value=" logar "></td>
<td> </td>
</tr>
</table>
</form>
</div>
</div>
</body>
</html>
------------------------------------------------------------------------pagina em pgp------------------------------------------------------------------------
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<?php
include "conexao.php";
session_start();
if (isset($_POST['logar'])){
// RECUPERAR DADOS FORM
@$usuario = trim(strip_tags($_POST['usuario']));
@$senha = trim(strip_tags($_POST['senha']));
@$nivel = trim(strip_tags($_POST['nivel']));
}
//SELECIONAR BANCO DE DADOS
$select = "SELECT * FROM login WHERE usuario=:usuario AND senha=:senha AND nivel=:nivel";
try {
$result = $conexao->prepare($select);
$result->bindParam(':usuario', $usuario, PDO::PARAM_STR);
$result->bindParam(':senha',$senha, PDO::PARAM_STR);
$result->bindParam(':nivel',$nivel, PDO::PARAM_STR);
$result->execute();
$contar = $result->rowCount();
if ($contar>0){
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
$nivel = $_POST['nivel'];
$_SESSION['usuario'] = $usuario;
$_SESSION['senha'] = $senha;
$_SESSION['nivel'] = $senha;
header("Location: Desktop.php");
}else{
unset ($_SESSION['usuario']);
unset ($_SESSION['senha']);
echo "<META HTTP-EQUIV=REFRESH CONTENT='0; URL=index.php'>
<script type=\"text/javascript\">
alert(\" DADOS INCORRETOS FAVOR VERIFICAR.\");
</script>";
}
} catch(PDOException $e) {
echo $e;
}
?>

 

Espero esta sendo claro com as informações deis de já agradeço...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

A logica que quero e a seguinte:

quando eu tentar logar mais de uma vez com o mesmo usuário no sistema o mesmo venha informar que o usuário já esta logado,

ou seja que quando for efetuar o login ele meio que verifique se já foi logado esse usuário, como eu faria isso.

 

Tenta modularizar cara, dividir pra conquistar :lol:

 

Nesse etapa você esquece seu sistema a 'mil por' hora e faz pequenos testes pra ter domínio sobre sessão, refresh.

 

Ex:

 

sess.php

<?php
session_start();

$user = array(
	 'id' 		=> 3
	,'nome' 	=> 'Gabriel'
	,'islogado'	=> true
);

$_SESSION['user'] = $user;


var_dump($_SESSION['user']);

No exemplo acima se inicia a sessão e se armazena um array dentro da variável 'global' $_SESSION['user'].

 

E por exemplo se você tiver outra pagina:

 

outra.php:

<?php
session_start();

print_r($_SESSION);

a saida vai ser:


Array
(
    [user] => Array
        (
            [id] => 3
            [nome] => Gabriel
            [islogado] => 1
        )

)

(Veja que na pagina 'outra.php' não definimos essas variáveis e mesmo assim elas aparecem)

Recomendo fortemente a leitura:

http://php.net/manual/pt_BR/intro.session.php

 

Depois de entender sobre sessão do php,

 

Ai você pensa sobre a lógica de como saber se a pessoa está logada, levando em conta que a internet é feita de requisições HTTP (Já pensou em fazer um chat?, seria parecido a lógica)

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que quero fazer e o seguinte,

quando um determinado usuário logar no sistema.

ele não consiga logar no sistema ate que este seja fechado ou encerrado.

 

por que , eu consigo logar em 2 ou 3 maquinas com o mesmo login e mesma senha.

quero que quando o usuário venha a logar na maquina 1 ele não consiga logar na máquina 2

mais ou menos isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Negrito
      Olá,
       
      Estou quebrando a cabeça com o recurso Session_OnStart , pois eu gostaria que algumas paginas/arquivos .asp tivessem exceções.
       
      Criei o Global.ASA com o seguinte contexto:
       
      <SCRIPT RUNAT=Server Language="VBScript">
      Sub Session_OnStart
        startPage = "/default.asp"
        currentPage = Request.ServerVariables("SCRIPT_NAME")
        If strcomp(currentPage,startPage,1) then
          Response.Redirect("/default.asp")
        End If
      End Sub
      </SCRIPT>
       
      Ele funciona perfeitamente, quando tento acessar qualquer pagina ou subdiretorio diretamente pela URL, ele me joga para a pagina inicial.
       
      Porem, eu gostaria de ter exceções em alguns diretorios e paginas .ASP , onde eu gostaria de liberar o acesso direto ao digitar a URL.
       
      Alguem sabe me informar se é possivel ? 
       
      Obrigado.
       
       
    • Por k9studio
      Olá meus Amigos,
       
      Estou tendo dificuldades em eliminar dados repetidos de uma session
      é um sisteminha de pesquisa de domínios com array
      quero eliminar quando já tiver um nome na session, não deixar gravar outro
      aguem pode ajudar
      veja como está  
      Array ( [0] => Array ( [type] => register [domain] => testeteste.com.br [regperiod] => 1 ) [1] => Array ( [type] => register [domain] => testeteste.com [regperiod] => 1 ) [2] => Array ( [type] => register [domain] => testeteste.net.br [regperiod] => 1 ) [3] => Array ( [type] => register [domain] => testeteste.com.br [regperiod] => 1 ) [4] => Array ( [type] => register [domain] => testeteste.com [regperiod] => 1 ) [5] => Array ( [type] => register [domain] => testeteste.net.br [regperiod] => 1 ) ) Desde já muito obrigado a todos
    • Por Alberto Nascimento
      Estou tendo problemas de acesso ao Session, onde quando realizo login via computador, consigo "pegar" os dados que foram armazenados na sesion, mas quando utilizo o sistema de login no telefone ( android, por exemplo ) a session não esta conseguindo carregar os dados do usuário logado e exibir na página seguinte.
       
      Outra coisa que observei é que não consigo trabalhar com session em pastas diferentes, isso é normal? Veja só:
       
       
      Utilizando esta estrutura, não consigo ter acesso ao session no sistema ANDROID
       
      Agora se ao invés de ser como esta acima, faço uma pasta com todos os arquivos juntos, já consigo "pegar" os dados da session. Isso é normal?
    • Por tony_lu
      Ola pessoal, tenho uma hospedagem de php na hostgator e estou tentando rodar uma rotina com session e esta dando erro, na pagina só tem este código:
       
      <?php  session_start();  ?> E esta dando este erro:
      Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home2/sitewww/public_html/carrinho.php:1) in /home2/sitewww/public_html/carrinho.php on line 2
       
      Alguem pode me ajudar?
    • Por Evandrorussi
      Olá pessoal,
       
      Trabalho com PHP a uns 6 anos e me deparei com um problema de session que nunca ouvi falar, pelo menos não encontrei nada pela internet desse tipo. Tenho um servidor dedicado no Google Cloud e o site tem um sistema de login via session. O problema é que a session funciona aleatoriamente, tem hora que não funciona, o cliente troca de tela e o servidor perde a session e pede pra logar novamente, isso não acontece com todos usuários, comigo por exemplo não acontece.
      O cara que trabalha comigo não ocorria esse problema mas agora começou a acontecer e ele reparou que com guia anônima o problema não ocorre.
       
      Caso alguém pergunte, session_start() está iniciando em todas as páginas.
       
      Abraço
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.