PTCoders

Comunidade nacional de programação

Ir para o conteúdo

[duvida] Criar um sistema login mesmo muito basico

[duvida] Criar um sistema login mesmo muito basico

Mensagempor MoffspringR » 05 Fev 2010, 19:57

Boas.

Ando aqui atarefado com uma situação. Desde ja digo que o que aprendi de php foi muito pouco, foi do tipo carregar num botao e aparecer uma frase escrita.

O meu problema que vos trago e o seguinte: Preciso de criar um login mesmo daquele basicos, confirmar apenas se o user/pass digitados existem na base de dados.

Eu tenho o seguinte código:

Código: Seleccionar Todos
<?php
 $username 
= $_POST['userForm'];
 $password = $_POST['passForm'];
    
 $connect 
= mysql_connect("localhost","teste","teste") or die ("error.");
 $query="SELECT * FROM users WHERE user='$username' and pass='$password'";
 $result=mysql_db_query("base_dados","$query");

 if(   /*E aqui que quero confimar se o user/pass bate certo*/ )
     echo "logged in!";
             //encaminhar o user para outra pagina
 else
     echo 
"fail.";

?>



alguem me pode ajudar?
MoffspringR
 
Mensagens: 7
Registado: 21 Set 2009, 13:32

Re: [duvida] Criar um sistema login mesmo muito basico

Mensagempor Joaommp » 08 Fev 2010, 05:09

simples, rapaz.

Tendo em consideração que estás a comparar a password também na query, podes ver se o número de registos devolvidos é = 1. Se for 0, é porque ou o login ou a password estão errados.

Há várias alternativas, e não aconselho a que tomaste. A que tomaste não te permite saber se o utilizador se enganou no username ou na password e dificulta-te a aplicação de algoritmos mais complexos de hashing de passwords, pois da forma que tens elas ficam guardadas na base de dados como plain text.

Sugiro o seguinte:

Código: Seleccionar Todos
    <?php
     $username = $_POST['userForm'];
     $password = $_POST['passForm'];
       
     $connect = mysql_connect("localhost","teste","teste") or die ("error.");
     $query="SELECT * FROM users WHERE user='$username'";
     $result=mysql_db_query("base_dados","$query");

     if(   /*E aqui que quero confimar se o user/pass bate certo*/ )
<PSEUDOCÓDIGO>
SE password = password enviada
</PSEUDOCODIGO>
         echo "logged in!";
                 //encaminhar o user para outra pagina
     else
         echo "fail.";

    ?>


Mais ainda, o facto de estares a usar as funções de mysql directamente dificulta-te a vida caso de futuro tenhas que usar um DBMS diferente. Vê em http://pear.php.net/ as classes DB ou MDB2.
Outro problema que tens no teu código é o facto de passares strings da querystring de POST directamente à query de SQL... o teu programa torna-se uma potencial vítima, mesmo a pedi-las, para umas quantas SQL injections... Pesquisa sobre utilização de "Prepared Queries" com DB ou MDB2. Neste caso específico, por ser só um username, poderias antes validar o username com uma expressão regular, em vez de usares prepared queries, mas mais vale habituares-te a fazer sempre bem.
Onda Technology (CO/Senior Engineering and Architect Lead)
Avatar do Utilizador
Joaommp
 
Mensagens: 27
Registado: 10 Ago 2009, 14:10
Localização: Porto

Re: [duvida] Criar um sistema login mesmo muito basico

Mensagempor MoffspringR » 09 Fev 2010, 21:40

Boas.

Antes de mais, obrigado pela dica.

O que pretendo e criar um jogo mesmo basico de perguntas e respostas. Neste caso estou a fazer o backoffice (inserir e listar o conteudo), para depois poder passar para o jogo em si. O login permite que as "equipas" respondam as perguntas, e como tal o login permite saber a quantidade de perguntas certas/erradas, dai este login ser mesmo muito basico.

Esta aplicacao so vai servir dentro de uma sala, durante 1h ou 2h (no max), dai nao requerer mta "importancia" a segurança. Talvez depois do jogo ser jogado, eu guarde o mesmo e ai eu crio mais protecção.

Precisava depois era saber como faco uma cena tipo o joomla, clicar num icon e aparecer a pergunta no front pgae do jogo... mas isso fica para depois. Se poderes, envia-m o teu contacto de msn para poder falar melhor ctg... se quiseres e claro.
MoffspringR
 
Mensagens: 7
Registado: 21 Set 2009, 13:32


Voltar para PHP

Quem está ligado:

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante