1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Login php precisa-se de ajuda

Discussão em 'Web Development' iniciada por RatoGR, 19 de Maio de 2008. (Respostas: 24; Visualizações: 1356)

  1. RatoGR

    RatoGR Power Member

    Boa tarde a todos,

    A minha grande duvida situa-se em criar um login em php com base de dados, a especial duvida é como criar este login de modo a quando o utilizador fizer Login o seu nome e uma area restrita, caso seja administrador do site aparecer no sitio onde estava o From do Login, ou seja na mesma pagina index.php alguém me sabe ajudar?


    Obrigado
     
  2. MPalhas

    MPalhas Power Member

    recebes os dados do formulário
    procuras o registo correspondente na base de dados
    se encontrar, copias os dados necessários para varáveis de sessão
    pões também na base de dados um campo a dizer o tipo de permissão de cada utilizador e depois consoante o valor desse campo vai mostrando as áreas correspondentes
     
  3. RatoGR

    RatoGR Power Member

    Não tens nenhum exemplo? :S
     
  4. MPalhas

    MPalhas Power Member

  5. RatoGR

    RatoGR Power Member

    Este exemplo envia o utilizador para 1 pagina diferente da do index.php ou seja nao recebe os resultados na pagina onde efectuou o Login
    :(
     
  6. MPalhas

    MPalhas Power Member

    também querias a papinha toda feita? :007:
    isso é só um exemplo, como tu pediste. agora tens que ver como é que isso funciona e fazer as alterações necessárias para adaptar ao teu código e funcionar
     
  7. RatoGR

    RatoGR Power Member

    nao é o caso... mas uma ajuda a ver como as coisas funcionam :P
     
  8. pimpz

    pimpz Power Member

    estas a utilizar mysql certo?
    por exemplo, quando um utilizador normal se regista metes para mais um campo na tabela, e gravas automaticamente o tipo de utilizador como user, e depois na parte de login fazes algo deste genero:

    PHP:
    $nome=$_POST['cliente'];
     
    $password=$_POST['pass'];
     
    $resultado=mysql_query("SELECT * FROM cliente WHERE login='$nome' and senha='$password'");
     
    $num=mysql_num_rows($resultado);
     if (
    $num<1)
     {
        echo 
    '<script>
           d=window.top;
        d.location="index.php?n";
          </script>'
    ;
      } else {
      
    $_SESSION['id']=mysql_result($resultado,0,'id');
      
    $_SESSION['login']=mysql_result($resultado,0,'login');
      
    $_SESSION['nome']=mysql_result($resultado,0,'nome');
      
    $_SESSION['tipo']=mysql_result($resultado,0,'tipo_utilizador');
      echo 
    "<script>
          d=window.top;
          d.location='index.php';
          </script>" 
    ;  
     }
    e depois nas paginas que apenas o admin tem acesso metes esta validação:

    PHP:
    if (strcmp($_SESSION['tipo'],'Admin')!==0)
    e depois o codigo que queres que tenha a pagina.

    espero que tenha sido claro

    cumps
     
  9. RatoGR

    RatoGR Power Member

    O meu problema está em criar um sistema de login no portal para que ele identifique e volte para a pagina principal do portal com os dados do utilizador. Vou deixar aqui uns exemplos.

    FIGURA 1
    [​IMG]

    FIGURA 2

    [​IMG]


    Portanto quando o utilizador faz Login na Figura 1 se for valido aparece a Figura 2 senao aparece a figura 1 mas tudo na mesma pagina como faz isto?

    Ajuda precisa-se
     
  10. skandal

    skandal Power Member

    basicamente quando entra na pagina verificas se a variavel de sessão já tem informação, se tiver mostra... senão mostra o form de login.
     
  11. RatoGR

    RatoGR Power Member

    Podes-me mostrar 1 exemplo? :/
     
  12. RatoGR

    RatoGR Power Member

    Isto é o que eu tnh no index.php do Form


    PHP:
    <form name="frmAutentica" method="post" action="autentica.php">
       <
    table border="0" cellpading="0" cellspacing="0" width="50%">
       <
    tr>
          <
    td width="10%">User:</td>
          <
    td width="40%"><input type="text" name="txtUser" size="25"></td>
       </
    tr>
       <
    tr>
          <
    td width="10%">Senha:</td>
          <
    td width="40%"><input type="password" name="txtSenha" size="10"></td>
       </
    tr>
       <
    tr>
          <
    td colspan="2" align="center">
          <
    input type="submit" name="btnLogar" value="Login >>"></td>
       </
    tr>
       </
    table>
    </
    form>
    Agora o ficheiro de autentica.php

    PHP:
    <?
    //CONECTA COM O BANCO DE DADOS
    require_once("conecta.php");

    //RECEBE OS DADOS DO FORMULÁRIO
    $usuario   =   $_POST[txtUser];
    $senha     =   $_POST[txtSenha];

    //VERIFICA
    $sql   =   mysql_query("
               SELECT A.ID_USUARIO, A.NOME_USUARIO FROM tb_usuarios A
               WHERE  A.USUARIO  =  '
    $usuario'
                  AND A.SENHA    =  '
    $senha'") or die("ERRO NO COMANDO SQL");

    //LINHAS AFECTADAS PELA CONSULTA
    $row   =  mysql_num_rows($sql);

    //VERIFICA SE RETORNOU ALGO
    if($row == 0) echo "Usuário/Senha inválidos";

    else { 
         
    //PEGA OS DADOS
         
    $id   =   mysql_result($sql0"ID_USUARIO");
         
    $nome =   mysql_result($sql0"NOME_USUARIO");
         
         
    //INICIALIZA A SESSÃO
         
    session_start();
         
         
    //GRAVA AS VARIÁVEIS NA SESSÃO
         
    $_SESSION[id]    =   $id;
         
    $_SESSION[nome]  =   $nome;
         
         
    //REDIRECIONA PARA A PÁGINA 
         
    Header("Location: resultado.php");
    }
    //FECHA ELSE
    ?>
    Agora ele envia-me para o RESULTADO.PHP

    PHP:
    <?
    //VERIFICA SE A SESSÃO ESTÁ ATIVA
    require_once("verifica.php");

    //CONECTA COM O BANCO DE DADOS
    require_once("conecta.php");

    //SQL
    $sql   =   mysql_query("
               SELECT A.ID_PRODUTO, A.PRODUTO, A.QTDE_PRODUTO
               FROM tb_produtos A
               WHERE A.ID_USUARIO = '"
    .$_SESSION[id]."'") or die("ERRO NO SQL");

    //LINHAS AFETADAS PELA CONSULTA
    $row  =  mysql_num_rows($sql);

    //TITULO
    echo "Usuário logado no sistema: ".$_SESSION[nome];

     
    //TABELA
     
    echo "<br><br>";
     echo 
    "<table border='1' cellpading='0' cellspacing='0'>";
     echo 
    "<tr>";
     echo 
    "<td>Código</td>";
     echo 
    "<td>Produto</td>";
     echo 
    "<td>Qtd</td>";
     echo 
    "</tr>";

    //EXIBE OS DADOS CORRESPONDENTES AO USER
    for($i=0$i<$row$i++){
         
    $prod_id    =   mysql_result($sql$i"ID_PRODUTO");
         
    $prod_nome  =   mysql_result($sql$i"PRODUTO");
         
    $prod_qtde  =   mysql_result($sql$i"QTDE_PRODUTO");
         
         echo 
    "<tr>";
         echo 
    "<td>$prod_id</td>";
         echo 
    "<td>$prod_nome</td>";
         echo 
    "<td>$prod_qtde</td>";
         echo 
    "</tr>";
    }
    //FECHA FOR

    echo "</table>";

    echo 
    "<br><br><a href='logout.php'>Logout</a>";
    ?>
    O problema é que eu nao queria que ele abri-se uma pagina nova queria que ele exibi-se tudo no index.php
     
  13. pimpz

    pimpz Power Member

    metes as validações de sessão no index, se for admin executas uma coisa, se for cliente executas outra, não estou a perceber o problema sinceramente
     
  14. RatoGR

    RatoGR Power Member

    A minha duvida é mesmo essa é se o utilizador tiver logado aparecer o nome do utilizador, senão aparece o form de Login, eu sei que isto tem que ter uma variavel para saber se o utilizador já esta logado ou não e é isso que eu nao sei :/
     
  15. pimpz

    pimpz Power Member

    tens que usar uma variavel de sessao que quando o utilizador faz login e carregado p essa variavel o nome com que ele fez login por exemplo, depois dai e so escreveres a variavel onde tu quiseres, por exemplo:

    echo "Bem vindo".$_SESSION['login'];
     
  16. MPalhas

    MPalhas Power Member

    antes de mais, não é $_SESSION[id], mas sim $_SESSION['id'], porque ID é texto

    quanto ao problema, se tiver por exemplo, visitantes (os que não fazem login), utilizadores e administrador:

    PHP:
    if (isset($_SESSION['id'])) {
       if (
    $_SESSION['admin']==1) {
          echo 
    "Está logado como administrador";
       }
       else {
          echo 
    "bem vindo".$_SESSION['username'];
       }
    }
    else {
       
    //escreve formulário de login
    }

    isto é só exemplo, não faças copy+paste
    basicamente: primeiro verifica se existe a váriavel $_SESSION['id'] usando a função isset. se existir quer dizer que fez login, e então, se a váriavel $_SESSION['admin'] for igual a 1 quer dizer que é o administrador, senão é um utilizador normal, e escreve uma mensagem de boas vindas

    se $_SESSION['id'] nao existir então quer dizer que não fez login e mostra o formulário de login

    NOTA: para isto funcionar correctamente, tens que usar a função session_destroy quando o utilizador/admin fizer logout. isso vai eliminar todas as variaveis $_SESSION, e é necessário porque senão a função isset continuaria a detectar a variavel e assumia que tinha feito login, mesmo sem o ter feito
     
  17. RatoGR

    RatoGR Power Member

    Vou postar aqui o que eu já fiz

    Pagina index.php

    PHP:
    <body>
    <?php
    if (!isset($_SESSION['id'])) {
        if (
    $_SESSION['tipo],'Admin')!==0) {
            echo "Está logado como administrador";
            }
            else {
                echo "bem vindo".$_SESSION['
    nome'];
                }
            }
            else {
            echo "
     <td width="303"><form id="form1" name="form1" method="post" action="login.php">
                                <table width="293" border="0" cellspacing="0" cellpadding="0">
                                  <tr>
                                    <th width="5" scope="col">&nbsp;</th>
                                    <th width="68" scope="col">&nbsp;</th>
                                    <th width="180" scope="col">&nbsp;</th>
                                    <th width="40" scope="col">&nbsp;</th>
                                    </tr>
                                  <tr>
                                    <td>&nbsp;</td>
                                    <td><span class="style4">username:</span></td>
                                    <td><input name="cliente" class="username-box-home" type="text" /></td>
                                    <td>&nbsp;</td>
                                    </tr>
                                  <tr>
                                    <td>&nbsp;</td>
                                    <td>&nbsp;</td>
                                    <td>&nbsp;</td>
                                    <td>&nbsp;</td>
                                    </tr>
                                  <tr>
                                    <td>&nbsp;</td>
                                    <td><span class="style4">password:</span></td>
                                    <td><input name="pass" class="password-box-home" type="text" /></td>
                                    <td>&nbsp;</td>
                                    </tr>
                                  <tr>
                                    <td>&nbsp;</td>
                                    <td>&nbsp;</td>
                                    <td>&nbsp;</td>
                                    <td>&nbsp;</td>
                                    </tr>
                                  <tr>
                                    <td>&nbsp;</td>
                                    <td>&nbsp;</td>
                                    <td><label></label></td>
                                    <td><input type=image src="images/ok.gif" width="40" height="20"></td>
                                    </tr>
                                </table>
                                  </form> ";
                        }
                        ?>
    </body>
    A base de dados:

    PHP:
    CREATE TABLE `tlogin` (
        `
    idint(3NOT NULL auto_increment,
        `
    nomevarchar (20) default NULL,
        `
    loginvarchar (20) default NULL,
        `
    senhavarchar (20) default NULL,
        `
    tipoenum('Admin','user'NOT NULL default 'user',
        
    PRIMARY KEY (`id`)
        ) 
    O Login.php

    PHP:
    <?php
    session_start
    ();

    $conn mysql_connect("localhost","utilizador","password");
    $banco mysql_select_db("basededados");

    $nome=$_POST['cliente'];
    $password=$_POST['pass'];
    $resultado=mysql_query("SELECT * FROM tlogin WHERE login='$nome' and senha='$password'");
    $num=mysql_num_rows($resultado);
        if (
    $num<1)
            {
            echo 
    '<script>
                    d=window.top;
                    d.location="index.php?n";
                    </script>'
    ;
            } else {
            
    $_SESSION['id']=mysql_result($resultado,0,'id');
            
    $_SESSION['login']=mysql_result($resultado,0,'login');
            
    $_SESSION['nome']=mysql_result($resultado,0,'nome');
            
    $_SESSION['tipo']=mysql_result($resultado,0,'tipo');
            echo 
    "<script>
                    d=window.top;
                    d=location='index.php';
                    </script>"
    ;
                    
            }
    ?>
    Mas quando vou tentar não aparece nada no index.php :/ alguem me ajuda agora? :|
     
  18. skandal

    skandal Power Member

    estas a fazer um echo no minimo parvo :P tenta por plicas...
     
  19. RatoGR

    RatoGR Power Member

    como assim plicas? :|
     

Partilhar esta Página