Criar Browser Game - 5# A página de login (Perl) Parte 1

Ontem, nós conversamos sobre como criar uma página de login em php. Hoje, nós estamos indo a pé através da construção a mesma coisa - mas em Perl. Este writeup irá assumir que você não seguir qualquer uma das instruções na entrada do PHP, e começar de forma simples a partir de onde os nossos Perl parou.

Para começar, vamos modificar nosso usuários da tabela anterior, e acrescentar mais duas colunas. Essas colunas permitem controlar quais usuários são administradores, junto com o tempo um usuário registrado no último em:

ALTER TABLE `users` ADD `is_admin` tinyint(1) NOT NULL DEFAULT '0 '; ALTER TABLE `users` ADD `last_login` timestamp NULL;

Depois de executar o código SQL, se você atualizar o ponto de vista de sua estrutura de tabela que você vai ver agora existem duas colunas. Criamos is_admin como um tinyint porque vamos usá-lo como uma bandeira para se os usuários estão administators ou não - por isso só precisa ser ajustada para 1 e 0 (verdadeiro e falso em termos booleanos).last_login é um timestamp, que vamos atualizar sempre que um usuário fizer dentro

Vamos passar para o código real. Primeiro, montamos a nossa página inicial CGI:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 
# W! / Usr / bin / perl   uso estrito; use CGI qw(:cgi); use CGI::Carp qw(warningsToBrowser fatalsToBrowser); use DBI;   uso config; minha $ query = novo CGI; minha $ html,   $ html .= qq ~ <form action="login.cgi ' método='post'> Nome: <input type='text' nome='username' /> <br /> Senha: <input type='password' nome='password' /> <br /> <input type="submit ' valor='Login' /> formulário> ~;   imprimir $ query->header(); imprimir $ html;

Enquanto que o código parece assustadora, realmente não é - é mais a base para a nossa página de login. Começamos por utilizarção de todos os módulos que vai precisar - rigorosa, CGI CGI:: Carp para depuração e DBI para que possamos interagir com nosso banco de dados. Em seguida, também usa o nosso arquivo de configuração anterior.Depois disso, basta fazer a nossa produção HTML e imprimi-lo. Não é muita coisa acontecendo ainda.

Tudo o que fizemos até agora é criar um formulário bem básico login. Mas agora que nós temos que, em lugar de construir fora, podemos começar a adicionar lógica para a página. Uma das primeiras coisas que irá adicionar uma seleção para fazer argumentos certeza estão sendo enviadas para a página antes de tentar fazer qualquer coisa com estes argumentos:

12 13 14 15 16 17 
meus argumentos% = $ query->Vars, se(os argumentos%) { 	# faz coisas aqui	 }   $ html .= qq ~

Essa condicional pequena certifique-se que não tente fazer nada sem ter parâmetros realmente passou para o nosso script.

Enquanto o login inteiro / registrar sistemas parece complicado, é realmente muito simples. Este é o pseudocódigo de um sistema de login:

if (username / senha partidas em no banco de dados) {user login} else {erro de login}

No nosso caso, nós também estaremos atualizando o usuário last_login atributo depois de fazer logon com êxito.Vamos adicionar a verificar se seus dados corresponde a qualquer no banco de dados:

14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 
	meu $ dbh = DBI->contato("DBI: $ $ dbname dbhost:: mysql",dbuser $,$ dbpass,{RaiseError => 1}); 	minha $ sth = $ dbh->preparar(SELECT COUNT (id ) FROM utilizadores WHERE UPPER (nome) = UPPER (?) e senha "=); 	minha $ count; 	$ sth->executar($ arguments{username},crypt($ argumentos{password},$ argumentos{nome})); 	$ sth->bind_columns(\ $ count); 	$ sth->buscar, 	se($ contagem == 1) { 		$ html .= qq ~ <span style="color: green">Login Sucesso/. <span>		 		~; 	} mais { 		$ html .= qq ~ <span style="color: red">Erro: Este nome de usuário e senha combinação que não corresponder a qualquer momento em nosso banco de dados. span>		 		~; 	} }

O que fizemos lá? Primeiro, tivemos contato com o banco de dados usando os valores do nosso arquivo de configuração. Então fizemos uma escolha rápida consulta, para ver se existia qualquer usuário com o mesmo nome de usuário e senha. O principal 'causa' uma página de login pergunta é "se as informações fornecidas encontraram no banco de dados?", E se a resposta for sim, faz o usuário dentro Nós certifique-se de executar a senha através docrypt (), de modo que se realmente correspondem a um valor em nossa base de dados que foi inserido pela nossa página de registro da anteriormente. Então, nós recuperamos o número de usuários que combinaram em $ contagem, e utilizar uma instrução condicional para determinar se ou não o login foi bem sucedido. Se fosse, nós imprimimos um verde pequena mensagem. E se não fosse, nós mostrar-lhes um (espero) mensagem de erro útil.

Enquanto isso não tecnicamente passar por todos os movimentos de uma página de login normal, ele não faz o que queremos mais ainda - isto é, escrever um cookie, atualizando o usuário last_logine, finalmente, redirecionar o usuário.

A primeira coisa que vamos fazer é atualizar o usuário last_login. Veja como:

21 22 23 
		$ Sth = $ dbh->prepare("UPDATE users SET last_login = NOW () WHERE UPPER (nome) = UPPER (=?) e senha?"); 		$ sth->executar($ argumentos{nome},crypt($ argumentos{password},$ argumentos{nome})); 		$ html .= qq ~

Tudo o que fazemos é criar uma consulta atualização, e depois executá-lo com os mesmos parâmetros de antes. Coisa bem simples.

A próxima coisa que vamos fazer é recuperar ou não o usuário é um administrador - para que possamos redirecionar para uma página ou outra baseada em que:

23 24 25 26 27 28 29 30 31 32 
		$ Sth = $ dbh->prepare("SELECT is_admin usuários FROM WHERE UPPER (nome) = UPPER (=?) e senha?"); 		minha $ is_admin; 		$ sth->executar($ arguments{username},crypt($ argumentos{password},$ argumentos{nome})); 		$ sth->bind_columns(\ $ is_admin); 		$ sth->buscar, 		se($ is_admin == 1) { 			# redirecionamento para a página admin 		} 		# REDIRECT para a página normal 		$ html .= qq ~

O código acima irá retirar apenas se o usuário for um administrador ou não - para que possamos enviá-los para uma página diferente com base nisso.

0 Response to "Criar Browser Game - 5# A página de login (Perl) Parte 1"

Postar um comentário

powered by Blogger | WordPress by Newwpthemes | Converted by BloggerTheme