Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

[Ajuda] Corrigir Script Login Com Conexão Simultanea

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Duvida [Ajuda] Corrigir Script Login Com Conexão Simultanea

    Ola Galera gostaria da ajuda de vcs, eu tenho um sistema de login para meu site, so que percebi que tem a possibilidade de 2 pessoas fazerem o login juntas usando o mesmo user e senha, gostaria de saber se podem me ajudar a configurar o script para que quando alguém loga-se ele coloca-se o status = 1 e ao tentar fazer o login novamente usando outro navegador ou PC, avisa-se que o usuário já esta logado, e quando quando o usuario desconecta-se coloca-se o status = 0, para que depois possa fazer o login...

    coluna status ja existe

    Sou Leigo em PHP e to a dias pesquisando no google como fazer isso porém 0,00% de resultado que me ajuda-se...

    Agradecendo desde já.

    loga.php
    Código PHP:
    <?php
    ob_start
    ();
    /**
    *DEIXE ESSE OB_START AI
    */
    session_start();//iniciando a sessao
    require_once("conexao.php"); 
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"><head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Logar</title>
    </head>

    <body>

    <div align="center"> 

    <?php 
    $login 
    = @ant_sql($_POST['usuario']); 
    $senha = @ant_sql($_POST['senha']); 
    $check = @ant_sql($_POST['check']); 
    $pagina "index.php"//Mudar essa Linha para onde a após o login será rederecionado, mais usado o index.php 
    ###### 
    $sql mysql_query("SELECT * FROM admins WHERE login = '$login' AND senha = '$senha'"); 

    if(
    mysql_num_rows($sql) <= 0){ 
    echo 
    "<br><br><font color='#000000'>Erro no Login Tente Novamente !!! <br /></font>"
    }elseif(
    mysql_num_rows($sql) > 1){ 
    echo 
    "<br><br><font color='#000000'>Erro no Login Tente Novamente !!! <br /></font>"
    }elseif(
    mysql_num_rows($sql) <> 1){ 
    echo 
    "<br><br><font color='#000000'>Erro no Login Tente Novamente !!! <br /></font>"
    }elseif(
    mysql_num_rows($sql) == && $check == "marcado"){ 
    $_SESSION['LOGADOUSER'] = $login
    $_SESSION['LOGADOSENHA'] = $senha
    setcookie("3e00afdb2ee8ca59758db1483a623b1f""3e00afdb2ee8ca59758db1483a623b1f"time()+(30*8600)); 
    header("Location: $pagina"); 
    }elseif(
    mysql_num_rows($sql) == && $check == ""){ 
    $_SESSION['LOGADOUSER'] = $login
    $_SESSION['LOGADOSENHA'] = $senha
    header("Location: $pagina"); 

    ob_end_flush(); 
    ?> 
    </div>

    <div id="login">
            <div id="formulario">
                    <form name="form1" method="post" action="loga.php">
                              <div id="esquerdo">
                                <h1>
                                            Bem-vindo a &aacute;rea (RESTRITA)
                                              <p />
                                            Digite seu nome de usu&aacute;rio e senha ter acesso TOTAL !.
                                              <p />
                                            <font color="#FF0000"><strong>ATEN&Ccedil;&Atilde;O:</strong></font>
     Login's com conex&otilde;es simult&acirc;neas ser&atilde;o automaticamente exclu&iacute;dos, portanto n&atilde;o forne&ccedil;a     
                                                    seus DADOS a terceiros.
                                              <p />
                                            <font color="#FF0000"> N&atilde;o aceitaremos reclama&ccedil;&otilde;es</font>
                                </h1>
                              </div>
                              <div id="direito">
                                    <center><h2>Login</h2></center>
                                    <h2>
                                            Nome do &uacute;suario:<br />
                                            <input name="usuario" type="text" id="usuario"><p />
                                            Senha:<br />
                                            <input name="senha" type="password" id="senha" /><p />
                                            <input name="Submit" type="submit" class="loga" value="Logar">
                                    </h2>
                              </div>
                    </form>
                                    
            </div>
    </div>



    </body>
    </html>


    sair.php
    Código PHP:
    <?php 
    session_start
    (); 
    session_unset(); 
    session_destroy(); 
    header("Location: login.php"); 
    ?>

  • Font Size
    #2
    Oi.

    $sql = mysql_query("SELECT * FROM admins WHERE login = '$login' AND senha = '$senha'" AND status = 0);

    Nesse caso, voce passa a exigir que alem de necessitar login e senha, exige também o status. Mas te obriga a alterar a tabela de usuários em cada login. Ou seja, depois de logar, vc precisa fazer um update na tabela atualizando o status para um (1). O mesmo ocorre com os logouts, cada vez que o usuário sair do sistema, voce vai ter de atualizar a tabela, no campo status para zero (0).

    Agora, confesso que não gosto dessa forma e não é assim que eu faria, pois nem todo mundo tem a prática de sair de um site clicando no log out.

    O que acontecerá quando o usuário apenas fechar o browser? Infelizmente isso não é raro.

    O valor nunca seria atualizado e ele nunca mais iria poder logar novamente.

    E como Eu faria?
    Gravaria as sessões em banco de dados
    Criaria uma tabela específica com referencia ao usuário e a sessão.
    Alteraria a função de garbagge collection das sessçoes para atualizar essa tabela.

    Fica a dica, boa sorte.

    Comment


    • Font Size
      #3
      Você também pode criar algo como um sistema de "o que o usuário está fazendo agora", como vemos aqui no fórum, armazenando além da página visitada, o horário.
      Após isso, você pode definir um tempo de ociosidade para o logout automático, com a coluna 'status', como o amigo Mandrack disse acima, fazendo isso sempre quando algum usuário logar-se (para ser uma ação mais oculta).
      Se quiser que fique ainda mais oculto, use AJAX e faça client2side, para que o código server-side seja executado pelo usuário, sem que o mesmo saiba.
      Outra coisa: é realmente necessário armazenar a senha do usuário em uma sessão? Não representa, de certa forma, um furo de segurança, mas será que você não está usando o servidor sem ser necessário? Isso é só uma dúvida. Se realmente for necessário, desconsidere.
      Este material pode ser compartilhado, desde que os devidos créditos sejam dados.



      Notify-list · Twitter · Blog

      Nova lei: Invadir computadores protegidos é crime.
      Lógica: Se eu invadi, não é protegido. Logo, não é crime :-)

      Comment


      • Font Size
        #4
        Postado Originalmente por Mandrack Ver Post
        Oi.

        $sql = mysql_query("SELECT * FROM admins WHERE login = '$login' AND senha = '$senha'" AND status = 0);

        Nesse caso, voce passa a exigir que alem de necessitar login e senha, exige também o status. Mas te obriga a alterar a tabela de usuários em cada login. Ou seja, depois de logar, vc precisa fazer um update na tabela atualizando o status para um (1). O mesmo ocorre com os logouts, cada vez que o usuário sair do sistema, voce vai ter de atualizar a tabela, no campo status para zero (0).

        Agora, confesso que não gosto dessa forma e não é assim que eu faria, pois nem todo mundo tem a prática de sair de um site clicando no log out.

        O que acontecerá quando o usuário apenas fechar o browser? Infelizmente isso não é raro.

        O valor nunca seria atualizado e ele nunca mais iria poder logar novamente.

        E como Eu faria?
        Gravaria as sessões em banco de dados
        Criaria uma tabela específica com referencia ao usuário e a sessão.
        Alteraria a função de garbagge collection das sessçoes para atualizar essa tabela.

        Fica a dica, boa sorte.
        Amigo, faz parte doque ele falou, faz o Sql exigir o status 0, e quando se faz o login, faz o arquivo que faz verificar se o usuario é verdadeiro ou falso, acrescentar na tabela, o valor 1, que seria que ele está iniciando a seção, e quando ele fexasse o browser, a sessão seria destruida e no arquivo coloque que quando é fechado para atualizar o valor pra 0

        confuso mas é isso

        Comment

        X
        Working...
        X