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

PHP - Sistema de Login

Discussão em 'Web Development' iniciada por hugofct20257, 18 de Maio de 2009. (Respostas: 21; Visualizações: 1302)

  1. Boas,

    bem ando aqui a aventurar-me no php, dado que tenho umas tarefas entre mãos nesta linguagem, e, então ao tentar fazer um sistema de login deparei-me com um problema...


    Código:
    <?
    //conecta com o db
    include ("connect.php");
    $nome= $_POST['username'];
    $senha = $_POST['password'];
    if (strlen($senha)< 1 or strlen($nome) < 1){
     echo '<p align="center">Senha ou apelido inv&aacute;lidos<BR><a href="javascript:history.back(1);">tente denovo</a></p>';
    }
    else{
     $logar = mysql_query("SELECT * FROM login WHERE username='$nome' AND password='$senha'") or die("Username Desconhecido!");
    }
    if (mysql_num_rows($logar) > 0 ){
     echo 'Benvindo';
    } 
    else {
     echo '<p align="center">Senha ou apelido não conferem<BR><a href="javascript:history.back(1);">tente de novo</a></p>';
    }
    ?>
    

    O problema é que ele ao imprimir está a imprimir tudo apartir de '>0' deste if que passo a citar em baixo:

    Código:
    if (mysql_num_rows($logar) > 0 ){

    Alguém sabe o que tenho aqui de errado?!?

    Cumps
     
  2. tonebiclas

    tonebiclas Power Member

    tens de meter o segundo if/else dentro do "else" do primeiro IF

    cumps ;)
     
  3. hiiii pois é.. tens razão estou a declarar a var local $logar no else, é claro que ele depois não reconhece fora do else.

    bah..


    muito obrigado!



    btw, continua a fazer-me impressão parcial do if e de código:|


    vou postar aqui o printScreen para verem!

    ftp://ftp.ua.pt/incoming/login/login.jpg
     
    Última edição: 18 de Maio de 2009
  4. tonebiclas

    tonebiclas Power Member

    não é por essa razão...

    se os caracteres não forem válidos não precisas de ver se existe um registo com esse utilizador/password
     
  5. vá lá pessoal.... uma ajudinha era benvinda!
     
  6. FuZi

    FuZi What is folding?

    não olhei para o código todo, mas parece-me que tens de escapar ali umas cenas no html

    assim:

    PHP:
     echo '<p align=\"center\">Senha ou apelido inv&aacute;lidos<BR><a href=\"javascript:history.back(1);\">tente denovo</a></p>';
    e a mesma coisa para o outro echo de html mais abaixo, mas esse sistema de login deixa muito a desejar :P
     
  7. já tentei o escapamento no html, mas, de facto se dou escapamento ás (aspas) então depois ele não faz o alinhamento ao centro, e, o link não funciona.


    A cena é que ele como podes verificar na imagem está a imprimir-me código á toa:|



    Cumps
     
  8. tipo agradeço o facto de referires o post do outro bacano! mas se possível eu queria ajuda era para resolver o prob deste meu código. Além do que, para ser sincero o código do outro bacano está bom demais para agarrar agora neste momento, dado que há coisas que não entendo bem ali no código!



    Cumps
     
  9. Isso parece-me um erro de sintaxe, tenta assim...

    Código:
     
    <?
    //conecta com o db
    include ("connect.php");
     
    $nome= $_POST['username'];
    $senha = $_POST['password'];
     
    if (strlen($senha)< 1 or strlen($nome) < 1){
     echo '<p align="center">Senha ou apelido inv&aacute;lidos<BR><a href="javascript:history.back(1);">tente denovo</a></p>';
    }
    else{
     
     $logar = mysql_query("SELECT * FROM login WHERE username='$nome' AND password='$senha'") or die("Username Desconhecido!");
     
    if (mysql_num_rows($logar) > 0 ){
     echo 'Benvindo';
    } 
    else {
     echo '<p align="center">Senha ou apelido não conferem<BR><a href="javascript:history.back(1);">tente de novo</a></p>';
    }
     
    }
     
     
    ?>
     
    
     
  10. i0no

    i0no Power Member

    PHP:
    <?php
    //conecta com o db
    include ("connect.php");
    $nome$_POST['username'];
    $senha $_POST['password'];

    if (
    strlen($senha)< or strlen($nome) < 1){
     echo 
    "<p align=\"center\">Senha ou apelido inv&aacute;lidos<BR><a href=\"javascript:history.back(1);\">tente denovo</a></p>";
    }
    else{
         
    $logar mysql_query("SELECT * FROM login WHERE username='$nome' AND password='$senha'") or die("Username Desconhecido!");
        if (
    mysql_num_rows($logar) > ){
             echo 
    "Benvindo";
        } 
        else {
             echo 
    "<p align=\"center\">Senha ou apelido não conferem<BR><a href=\"javascript:history.back(1);\">tente de novo</a></p>";
        }
    }
    ?>
    Penso que assim não terás problemas
     
  11. FuZi

    FuZi What is folding?

    essa query também não está bem, não podes simplesmente espetar ai as variaveis.. usa assim

    Código:
     $logar = mysql_query("SELECT * FROM login WHERE username="'.$nome.'" AND password="'.$senha.'" ") or die("Username Desconhecido!");
    
     

  12. não deu com a tua query..


    entretanto tentei com a seguinte query:

    Código:
    $logar = mysql_query("SELECT * FROM login WHERE username=".$nome." AND password=".$senha.";") or die("Username Desconhecido!");
    acho que assim a query está correcta, mas, no entanto continua com o mesmo problema inicial.
     
  13. i0no

    i0no Power Member

    Se utilizares o LIMIT na query, podes defenir o numero de resultados que queres returnar (Nota: nao sei como tens a BD definida)
     

  14. Resolvido! Thanks...
     
    Última edição: 19 de Maio de 2009
  15. Gostaria de pedir-vos uma opinião no sentido de, estou a pensar adaptar isto a um website previamente criado. Este sistema de login vai ficar numa div, em que o que pretendo é enquanto o utilizador não faz login, fica como unIndentified, e, aparece na respectiva div o sistema de login com o formulário. Mas, quando este faz o login, este mesmo formulário desaparece e é substituido o formulário de "login" por uma mensagem do tipo "Benvindo Caro XXXX" em que XXXX é o seu username.

    Se a div fosse só isso, era um simples update da div....

    Mas como a div tem além disso menú's, etc... Como é que faço esta actualização da forma mais eficiente? Não queria estar a recorrer ao método de booleanos, para saber se o estado do user é "loggado" ou "não loggado"...

    Talvez AJAX???


    Cumps
     
  16. FuZi

    FuZi What is folding?

    essa query assim tá a funcar?!?

    para saberes se o user ta logado usa a global $_SESSION

    W3schools tens la tutorials
     
  17. a query usada foi a do iono ! e sim, está a funcar:) felizmente:D


    btw, usando a &_SESSION como posso fazer essa actualização na div para alternar entre o formulário "login" ,e, "Olá, XXX." ??


    Cumps
     
  18. FuZi

    FuZi What is folding?

    podes usar o isset($_SESSION)

    Código:
    if (isset($_SESSION['sessioname'])) { 'mostra bem vindo' }else{ 'mostra form' }
    
    maneira simplista
     
  19. mas assim quando autentico a pessoa, tenho que criar uma sessão certo? E essa sessão permanece até ele fechar o browser? ou, permanece até ele mudar de URL?
     

Partilhar esta Página