• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

skcratch

[Opinião] - Formulário de Login

12 mensagens neste tópico

Viva!

Estou a iniciar a criação de uma pequena aplicação web que tem como funcionalidades base o registo de utilizadores e consequente gestão de sessões quando é efectuado o login. Até ao momento, tenho o seguinte código:

<?php
$errorUsername = false;
$errorPassword = false;

if(isset($_POST['login']))
{
	$username = preg_replace('/[^A-Za-z]/', '', $_POST['username']);
	$password = md5($_POST['password']);

	if ($username == "")
		$errorUsername = true;

	if ($_POST['password'] == "")
		$errorPassword = true;
}	
?>
<!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>
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form method="post" action="">
	Username:<input type="text" name="username" size="20" />
	<?php
		if($errorUsername)
		{
			echo 'Invalid Username';
		}
	?>
	<br />
	Password:<input type="password" name="password" size="20" />
	<?php
		if($errorPassword)
		{
			echo 'Invalid Password';
		}
	?>
	<p><input type="submit" name="login" Value="Login" /></p>
</form>
</body>
</html> 

Aquilo que queria perguntar aos utilizadores mais experientes tem a ver com a action do formulário; como está vazia, creio que o destino é a própria página. Seria mais indicado efectuar as validações numa página distinta? Caso fosse esse o procedimento, como poderia obter o valor das variáveis $errorUsername e $errorPassword por forma a imprimir as mensagens de erro adequadas caso necessárias?

Grato desde já pela ajuda e opiniões!

Cumps!

:(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usas por GET. Por exemplo, se houver algum erro, fazes um:

header('Location: index.php?error=1').

Isto foi só um exemplo. E na página, podes verificar se houve algum erro com o seguinte código:

if ($_GET["error"] == 1){
//código caso haja um erro
} else {
//código se não houver erro.
}

Isto se decidires fazer o login noutra página.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por uma questão de organização, é melhor colocar a validação de login aparte do template de apresentação ao user final. Tirando isso, funciona na mesma.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu odeio query strings, eu sugeria guardar o erro num cookie e depois caso o cookie exista imprimir o erro.

Fica Bem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu odeio query strings, eu sugeria guardar o erro num cookie e depois caso o cookie exista imprimir o erro.

Fica Bem

Se se usar um sistema de templates não é preciso nem um nem outro. Nunca uso cookies para mostrar esse tipo de erros, nem query strings.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se se usar um sistema de templates não é preciso nem um nem outro. Nunca uso cookies para mostrar esse tipo de erros, nem query strings.

Eu uso sempre tudo num ficheiro index.php através de query strings. Óbvio, as funções e o código estão noutros ficheiros, mas tudo é chamado e "juntado" no index.php. :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a minha questão é unicamente estética, nunca uso query string uso sempre SEF dai usar os cookies ou sessions depende, relativamente ao sistema de templates, sim é uma solução, o único problema é quando se muda realmente de página.

quando mudas realmente de página tens que passar o erro de alguma forma.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu passo por query strings, geralmente os utilizadores não olham para o endereço a dizer se é bonito ou feio. Mas com query strings, se mandares um link com aquele endereço, aparece-te sempre a mesma página, por cookies não.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Caso o utilizador possua os cookies desabilitados, não se pode passar os erros nos mesmo, certo?

Cumps!

:(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na empresa onde trabalhei algum tempo fizemos um trabalho para uma rede de franchising, qualquer coisa como 5000 utilizadores de backoffice e 1 000 000 de visualização semanais. a primeira coisa que nos pediram foi "não queremos aqueles links feios cheios de iguais e pontos de interrogarão". isto para denotar que os utilizadores olham para os links, nesse projecto foi usado um sistema de templates tal como o yoda.pt disse. a chatice foi quando foi preciso integrar o site do franshising com o do franshisado mas isso é outra questão.

E sim com cookies desligados não há erros, mas há que ver pelo lado positivo, também não há sessões por isso os erros tornam-se irrelevantes.

isto só para dizer, na minha opinião, mais facilmente encontras um utilizador que tenta manipular os urls ou acha aquilo feio, que um que desliga os cookies.

Mas é só a minha opinião

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Um dos motivos pelos quais iniciei este tópico, para além dos descritos anteriormente, está relacionado com a separação entre a presentation e a business logic da aplicação; no caso que apresentei, creio que tal é inexistente. Para isso, estava a pensar utilizar um template engine (Smarty), já que, pelo pouco que li, me parece permitir realizar essa separação e melhorar a estruturação da aplicação. Neste caso, o pedido de login creio que deveria ser redireccionado para uma outra página (login.php, por exemplo). Como pretendo realizar também client-side validation com o intuito de melhorar a interacção do utilizador com a aplicação, a parte do server-side validation mantinha-se na íntegra mas as mensagens de erro que pudessem vir a ser apresentadas seriam mais gerais.

O que vos parece esta aproximação?

Grato desde já pela ajuda, e comentários!

Cumps!

:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vários pontos a reter:

A validação tem que ser TODA feita no servidor. No cliente pode/deve ser feita apenas por motivos de estética e/ou usabilidade.

Tipicamente, por uma questão de organização, a validação deve ser feita no script que processa o formulário e os erros mostrados junto com o formulário da próxima vez que o mostras. Agora isto não tem absolutamente nada a ver com se o pedido POST ou GET (querystrings ou não) nem tão pouco com onde reside o código.

O que estás a tentar obter, e fazes bem já que é dares um passo em frente na qualidade do teu código, é uma aplicação que implemente o padrão MVC que tão badalado tem sido. Basicamente neste caso estás a querer dividir as vistas da implementaçao do 'negócio' do site. Assim que o conseguires fazer vais ver que se torna óbvio onde cada coisa deve estar.

Relacionado com os dois pontos anteriores. O PHP faz mapeamento dos nomes dos ficheiros para URLs, isto é uma funcionalidade, não impõe de forma alguma qualquer restrição de implementação. Ou seja, podes dividir o teu código como quiseres e usar a estrutura de URLs que te apetecer.

Quanto ao smarty, fazes bem em querer usar um sistema de templates. Pessoalmente considero o smarty overkill e com uma complexidade brutalmente desnecessária. Prefiro uma coisa simples e fácil:

http://wiki.portugal-a-programar.pt/dev_web:php:sistema_minimalista_de_tempaltes

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora