CRIAR BROWSER GAME - 2# A página de registo (Perl) Parte 2

Este código é praticamente uma cópia direta do PHP a partir de ontem, menos um idioma específico poucas alterações.Depois de armazenar os valores de nossa conexão (certifique-se de alterar estes para os para seu servidor!), Chamamos DBI-> connect () para conectar a nossa base de dados, usando o 'mysql' conjunto de drivers. A conexão com o banco identificador que é retornado é armazenado em $ dbh. Passamos o argumento {RaiseError => 1} de modo que não terá que adicionar ou morrer () após cada operação de banco de dados que deseja realizar.

Uma vez que tenha ligado, podemos começar a execução de consultas em nosso banco de dados. Isto é como nós seria verificar se o nome de usuário já está tomada:

23 24 25 26 27 28 29 30 31 32 33 
		meu $ sth = $ dbh->preparar("SELECT count (id) FROM utilizadores WHERE UPPER (nome) = UPPER ()?"); 		$ sth->executar($ argumentos{nome}); 		minha $ count; 		$ sth->bind_columns(\ $ count); 		$ sth->buscar, 		se($ count > = 1) { 			$ html .= qq ~ <span style="color: red">Erro: o usuário é levado/. <span>			 			~;	 		} 	}

Nesse código, nós preparamos a nossa consulta, executá-lo com o nome de usuário parâmetro enviado a nós pelo usuário, e depois recuperar a contagem para $ contagem. Não precisa se preocupar com SQL Injection, porque, usando o prepare () -> execute () -> método de busca, o módulo DBI citaremos todos os nossos argumentos para nós automaticamente. É muito prático desse jeito.

Depois de buscar a contagem, vamos verificar para ver se há um ou mais usuários que estão usando o mesmo nome - e, se houver, nós adicionamos uma mensagem de erro útil $ html.

Neste momento, nosso formulário de inscrição está prestes a terminar - tudo o que está faltando é realmente adicionando o usuário ao banco de dados. Vamos adicionar o código:

33 34 35 36 37 38 39 
		} mais { 			$ sth = $ dbh->prepare("INSERT INTO utilizadores (username, password) VALUES (?,?)"); 			$ sth->executar($ argumentos{nome},crypt($ argumentos{password},$ argumentos{nome})); 			$ html .= qq ~ <span style="color: green">Parabéns! Você registrou com sucesso/ <span>			 			~;	 		}

E uma vez que o último pedaço de código foi adicionado, o nosso formulário de inscrição está pronto para ir! Como você pode ver, não há muito que é fundamentalmente diferente da página de cadastro PHP. Uma exceção notável, no entanto, é o uso de Perl crypt () função, para hash do usuário a senha. Passamos no usuário o nome de usuário e senha do usuário para o crypt (), de modo que hash da senha do usuário usando seu nome de usuário na forma de sal de hash com ele.

Por que estamos hash senhas do usuário? Porque você deve absolutamente nunca guardar uma senha em texto simples - é apenas a pedir sarilhos. Se um usuário mal-intencionado de alguma forma tem acesso ao seu banco de dados e que você tenha armazenado as senhas do usuário em texto simples, eles terão acesso a senhas de todos - que é uma falha de segurança enorme. Por hash as senhas, você garante que isso não pode acontecer - assim mesmo que se tenha acesso ao seu banco de dados, eles não seriam capazes de invadir as contas qualquer pessoa sem realmente conseguir adivinhar ou força bruta do usuário a senha.

Quando o usuário tiver sido inserido, vamos mostrar uma mensagem de cor verde dizendo-lhes que se registrou com sucesso.

E isso é tudo que existe para ela - a sua própria página de registo, escrito em Perl com CGI. Aqui está o código completo:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 
# Perl! / Usr / bin /   uso estrito;		# estes irão ajudá-lo a detectar erros mais fácil usar advertências;		# veja acima use CGI qw(:cgi); use CGI::Carp qw(warningsToBrowser fatalsToBrowser); use DBI;   minha $ query = novo CGI; meus argumentos% = $ query->Vars; minha $ html;   se(os argumentos%) { 	se($ argumentos{password} ne $ argumentos{confirmar}) { 		$ html .= qq ~ <span style=" color: red ">Erro! essas senhas que não correspondem/ <span>	 		~;	 	} mais { 		meu dbhost $ = 'localhost'; 		minha $ dbname = "nome"; 		meu dbuser $ = 'user'; 		meu dbpass $ = 'pass'; 		minha $ dbh = DBI->contato("DBI: mysql: $ dbname: dbhost $",$ dbuser,$ dbpass,{RaiseError => 1}); 		minha $ sth = $ dbh->prepare(" SELECT count (id) FROM utilizadores WHERE UPPER (nome) = UPPER?) "(); 		$ sth->executar($ argumentos{nome}); 		minha $ count; 		$ sth->bind_columns(\ $ count); 		$ sth->buscar, 		se($ count => 1) { 			$ html .= qq ~ <span style="color: red">Erro: o usuário é levado/. <span>			 			~;	 		} mais { 			$ sth = $ dbh->prepare("INSERT INTO utilizadores (username, password) VALUES (?,?)"); 			$ sth->executar($ argumentos{nome},crypt($ argumentos{password},argumentos ${nome})); 			$ html .= qq ~ <span style="color: green">Parabéns! Você registrou com sucesso/ <span>			 			~;	 		} 	} }   $ html .= qq ~ <método forma='post' ação='register.cgi '> Nome: <input type='texto nome='username' /> <br /> Senha: <input type='senha nome='password' /> <br /> Confirmar Senha: <input type=" 'senha nome="confirmar" /> <br /> <input type='submit valor="Registrar"! /> formulário> ~;   imprimir $ query->header(); imprimir $ html;

0 Response to "CRIAR BROWSER GAME - 2# A página de registo (Perl) Parte 2"

Postar um comentário

powered by Blogger | WordPress by Newwpthemes | Converted by BloggerTheme