Jump to content
Daniivo

[Resolvido] Login + Registo PHP

Recommended Posts

Daniivo

boas noites gente...

mais uma vez venho pedir ajuda... hoje com um login de um tutorial lol é verdade sigo as passos todos mas a coisa nao funciona...

ora bem aqui fica o tutorial: http://wiki.portugal-a-programar.pt/dev_web:php:criar_login_basico

a única alteração foi o localhost..... e a criação da base de dados... eu fiz um post dos dados da base de dados e ele posta tanto a pass como o username.. no entanto o login nao funciona e o erro é sempre: "Utilizador ou password inválidos. Tente novamente"

Share this post


Link to post
Share on other sites
Mac135

é um bocado dificil ajudar com o que estas a dizer, mas se alteraste a base de dados, a query de consulta a base de dados tambem tem que ser diferente, começa por ver se esses nomes estão todos correctos

Share this post


Link to post
Share on other sites
Daniivo

é um bocado dificil ajudar com o que estas a dizer, mas se alteraste a base de dados, a query de consulta a base de dados tambem tem que ser diferente, começa por ver se esses nomes estão todos correctos

query, chamas aos campos que correspondem aos da base de dados correcto? tb ja foi verificado, alias foi feito 2 vezes...

Share this post


Link to post
Share on other sites
brunoais

...

a única alteração foi o localhost..... e a criação da base de dados... eu fiz um post dos dados da base de dados e ele posta tanto a pass como o username.. no entanto o login nao funciona e o erro é sempre: "Utilizador ou password inválidos. Tente novamente"

Verifica que o que o mysql_query devolve é um resource e não FALSE. Usa o var_dump() (por exemplo:  var_dump($login_query)) e diz o que devolve.

Qual é a maneira que usas para fazer login?

Usas, por exemplo, o hashing md5 e na base de dados tens a password "as is" (sem o hashing)?

Se não, O código que usas para verificar o login está correctamente bem feito? Verifica. Se ainda precisares de ajuda seria, então, mostrar o código que usas para testar o login.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
Daniivo

Verifica que o que o mysql_query devolve é um resource e não FALSE. Usa o var_dump() (por exemplo:  var_dump($login_query)) e diz o que devolve.

Qual é a maneira que usas para fazer login?

Usas, por exemplo, o hashing md5 e na base de dados tens a password "as is" (sem o hashing)?

Se não, O código que usas para verificar o login está correctamente bem feito? Verifica. Se ainda precisares de ajuda seria, então, mostrar o código que usas para testar o login.

o código é o mesmo do tutorial... fiz a tabela como la referia... relativamente ao "var_dump($login_query))" tive a ler devolve um valor, onde implemento a função no verificar??

<?php
// começar ou retomar uma sessão
session_start();

// se vier um pedido para login
if (!empty($_POST)) {

// estabelecer ligação com a base de dados
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('ultigames');

// receber o pedido de login com segurança
$username = mysql_real_escape_string($_POST['username']);
$password = sha1($_POST['password']);

// verificar o utilizador em questão (pretendemos obter uma única linha de registos)
$login = mysql_query("SELECT id_users, username FROM users WHERE username = '$username' AND password = '$password'");

if ($login && mysql_num_rows($login) == 1) {

	// o utilizador está correctamente validado
	// guardamos as suas informações numa sessão
	$_SESSION['id'] = mysql_result($login, 0, 0);
	$_SESSION['username'] = mysql_result($login, 0, 1);

	echo "<p>Sessão iniciada com sucesso como {$_SESSION['username']}</p>";
} else {

	// falhou o login
	echo "<p>Utilizador ou password invalidos. <a href=\"login.php\">Tente novamente</a></p>";
}
}
?>

Share this post


Link to post
Share on other sites
softklin

Como inseriste os utilizadores na base de dados? Lembraste-te de cifrar a password com a função sha1 ao colocar na base de dados?


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
Daniivo

Como inseriste os utilizadores na base de dados? Lembraste-te de cifrar a password com a função sha1 ao colocar na base de dados?

sha1?

eu fasso inserir e coloco a pass: 123

+ realmente tem essa funçao mas nunca uzer e muito sinceramente nao faço ideia do que seja.... eu colocava sempre varchar(25)

Share this post


Link to post
Share on other sites
softklin

Para criares utilizadores, tens de inserir os registos na tabela de utilizadores, tendo o cuidado de passares a tua password à função sha1 para gerar uma síntese.

Vê a secção:

http://wiki.portugal-a-programar.pt/dev_web:php:criar_login_basico#adicionar_utilizadores

Se tiveres uma página de inserir, basta criar uma query semelhante à do tutorial. Se estiveres a usar o PHPmyadmin deves ter, ao lado do campo onde inseres a pass, uma dropdown. Daí escolhes SHA1. Lê essa parte com mais atenção para perceber a necessidade de usares a função SHA1.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
brunoais

Como inseriste os utilizadores na base de dados? Lembraste-te de cifrar a password com a função sha1 ao colocar na base de dados?

Isso eu já tinha perguntado:

Verifica que o que o mysql_query devolve é um resource e não FALSE. Usa o var_dump() (por exemplo:  var_dump($login_query)) e diz o que devolve.

Qual é a maneira que usas para fazer login?

Usas, por exemplo, o hashing md5 e na base de dados tens a password "as is" (sem o hashing)?

Se não, O código que usas para verificar o login está correctamente bem feito? Verifica. Se ainda precisares de ajuda seria, então, mostrar o código que usas para testar o login.

E ainda n respondeu....


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
Daniivo

Para criares utilizadores, tens de inserir os registos na tabela de utilizadores, tendo o cuidado de passares a tua password à função sha1 para gerar uma síntese.

Vê a secção:

http://wiki.portugal-a-programar.pt/dev_web:php:criar_login_basico#adicionar_utilizadores

Se tiveres uma página de inserir, basta criar uma query semelhante à do tutorial. Se estiveres a usar o PHPmyadmin deves ter, ao lado do campo onde inseres a pass, uma dropdown. Daí escolhes SHA1. Lê essa parte com mais atenção para perceber a necessidade de usares a função SHA1.

ja sei o que é realmente eu nao usava isso, mas tb  acho que nao é razão para nao funcionar, segundo o que lê o sha1 serve apenas para encriptar a password neste caso, logo antes eu metia char deveria funcionar...

1 row(s) inserted.

Inserted row id: 5

Warning: #1265 Data truncated for column 'password' at row 1

INSERT INTO `ultigames`.`users` (

`id_users` ,

`username` ,

`password`

)

VALUES (

NULL , 'teste', SHA1( '1234' )

);

Share this post


Link to post
Share on other sites
softklin

Se tens SHA1 num lado, tens de ter usar em toda a aplicação.

Para confirmar, podes fazer um select à tabela para ver os utilizadores que lá estão e todos os seus campos? Se tiveres dados sensíveis como email, podes alterá-los.

EDIT: Tens de ter varchar(40), porque a função sha1 devolve sempre 40 caracteres. Se tiveres varchar(25) ou inferior a 40 não vai funcionar.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
Daniivo

Se tens SHA1 num lado, tens de ter usar em toda a aplicação.

Para confirmar, podes fazer um select à tabela para ver os utilizadores que lá estão e todos os seus campos? Se tiveres dados sensíveis como email, podes alterá-los.

EDIT: Tens de ter varchar(40), porque a função sha1 devolve sempre 40 caracteres. Se tiveres varchar(25) ou inferior a 40 não vai funcionar.

quando te referes a toda aplicação, é em todos os campos da base de dados ou seja no "Nome" e "password", que sao os 2 campos que criei para teste... (podes ver em cima...)

Share this post


Link to post
Share on other sites
softklin

Não, o código é igual ao que está no tutorial. Quando me referi a isso, estava a dizer que se no login usas sha1, na inserção também tens de ter sha1 para a password (que é o que está a fazer).

Após ver isso da mensagem de cima, eu editei a minha mensagem. O problema deve estar no varchar que usaste. Para o campo password, precisas, no mínimo, de 40. Com um valor inferior, a síntese vai ficar "cortada" (truncated), e fica inválida. Depois de fazeres a alteração, altera a password do teu utilizador, ou apaga o utilizador, e cria-o novamente.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
Daniivo

epah DESCULPEM!! realmente cada pormenor que nem lembra ao diabo... mas resumindo desde que meta um sha1 no pedido de password, no capo correspondente na base de dados tb tem que ter sha1.

estou a tentar aprender... realmente estou a gostar disto... ate chegar a estes breaks que deixam-me com os cabelos em pe, claramente observace que n percebo muito disto... mas acho piada...

como tb ja vi uma coisa do tipo m3 qualquer coisa assim

tenho como missão criar um site de venda de jogos com uma pagina de administração...

pessoal estou muito agradecido...

Share this post


Link to post
Share on other sites
softklin

É isso. A utilização do SHA1 ajuda a aumentar a segurança, pelas razões explicadas no artigo.

No entanto, à custa da tua dúvida, já adicionei uns pontos no tutorial, para esclarecer o que faz a função SHA1 ao concreto, e a necessidade de ter um tamanho mínimo para esse campo.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
Daniivo

É isso. A utilização do SHA1 ajuda a aumentar a segurança, pelas razões explicadas no artigo.

No entanto, à custa da tua dúvida, já adicionei uns pontos no tutorial, para esclarecer o que faz a função SHA1 ao concreto, e a necessidade de ter um tamanho mínimo para esse campo.

mais uma vez obrigado... ;)

Share this post


Link to post
Share on other sites
softklin

Era interessante agora adicionar ao tutorial uma parte de registo!

rmlm, por acaso até já pensei nisso, mas para fazer as coisas bem, teria que introduzir os níveis de utilizador, e acho que para o contexto daquele tutorial não ficava bem.

No entanto, apesar de ter sido eu a criar o tutorial, qualquer utilizador pode editá-lo, ele não me pertence. Com isto quero dizer que qualquer um pode editá-lo, desde que se mantenha dentro do assunto do mesmo, e fácil para iniciantes. O objectivo é manter o tutorial simples e directo, e desde que assim se mantenha, tudo bem.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
rmlm

rmlm, por acaso até já pensei nisso, mas para fazer as coisas bem, teria que introduzir os níveis de utilizador, e acho que para o contexto daquele tutorial não ficava bem.

No entanto, apesar de ter sido eu a criar o tutorial, qualquer utilizador pode editá-lo, ele não me pertence. Com isto quero dizer que qualquer um pode editá-lo, desde que se mantenha dentro do assunto do mesmo, e fácil para iniciantes. O objectivo é manter o tutorial simples e directo, e desde que assim se mantenha, tudo bem.

Exactamente! o tutorial está muito bom! ajudou-me bastante! Os meus parabens!

Eu de php nao percebo nada... só vou dar isso para o 2ºsemestre!

Mas fica o desafio para o pessoal que percebe

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.