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

Em Perl, nós temos que fazer um pouco mais do "trabalho sujo" de lidar com os cookies que nós fazemos com o PHP.Temos de escrever o nosso cookie de nós mesmos, juntamente com o envio dos cabeçalhos apropriados. A fim de fazer isso, precisamos criar um novo cookie, e depois imprimi-lo em uma chamada para consulta cabeçalho> $ (). Não importa se o usuário for um administrador ou não, o cookie será exatamente o mesmo:

28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 
		meu cookie $ = $ query->cookie( 				-nome	=>	'username + senha ", 				-valor	=>	$ argumentos{nome} . '+' . crypt($ argumentos{password},$ argumentos{nome}), 				-expira	=>	'+3 M', 			); 		minha $ uri = "index.cgi"; 		se($ is_admin == 1) { 			# redirecionar para a página normal 			$ uri = "admin.cgi '; 		} 		imprimir $ query->cabeçalho(-cookie=>$ cookie, -local=>$ uri); 	} mais { ~;   imprimir $ html;

Na linha 28, criamos um novo cookie usando $ query. Então, montamos um nome e um valor para ele - juntamente com uma data de expiração de 3 meses no futuro. Agora, nós estamos guardando o nome de usuário e senha do nosso usuário na forma de "+ senha de usuário" - mas na verdade, você pode armazená-lo em qualquer formato que você queira (ou mesmo dois biscoitos), contanto que você pode analisá-lo de volta para fora em suas partes separadas.

Nós armazenar a URL estaremos redirecionando o usuário para dentro $ uri - por padrão, é index.cgi. Os administradores serão enviados para admin.cgi.

Após a criação destes dois pedaços de dados, imprimir um cabeçalho usando $ query, que tanto tem cookie e nosso novo local dentro do mesmo. Este cabeçalho irá redirecionar o usuário para a nova página.

E, neste ponto, estamos acabados! Nós temos agora uma página de login de trabalho que irá redirecionar o usuário com base em se é um administrador ou não, faixa mais recente é o login do usuário, e gravar um cookie com seus dados de login - para que possamos verificar se elas são logado outras áreas do nosso jogo. Aqui está todo o código que escreveu:

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 54 
# 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;   meu argumentos% = $ query->Vars, se(os argumentos%) { 	meu $ dbh = DBI->contato("DBI: mysql: $ dbname: dbhost $",$ dbuser,$ dbpass,{RaiseError => 1}); 	meu $ sth = $ dbh->preparar("SELECT COUNT (id) FROM utilizadores WHERE UPPER (nome) = UPPER (=?) e senha?"); 	minha $ count; 	$ sth->executar($ argumentos{username},crypt($ argumentos{password},argumentos ${nome})); 	$ sth->bind_columns(\ $ count); 	$ sth->buscar, 	se($ contagem == 1) { 		$ sth = $ dbh->prepare("UPDATE users SET last_login = NOW () WHERE UPPER (nome) = UPPER (=? E) a senha?"); 		$ sth->executar($ argumentos{nome},crypt($ argumentos{password},$ argumentos{username})); 		$ sth = $ dbh->prepare("SELECT FROM usuários is_admin WHERE UPPER (nome) = UPPER (=?) e senha?"); 		minha $ is_admin; 		$ sth->executar($ argumentos{username},crypt($ argumentos{password},$ argumentos{nome})); 		$ sth->bind_columns(\ $ is_admin); 		$ sth->buscar, 		o meu cookie $ = $ query->cookie( 				-nome	=>	'+ senha username', 				-valor	=>	$ argumentos{nome} . '+' . crypt($ argumentos{password},$ argumentos{nome}), 				-expira	=>	'+3 M', 			); 		minha $ uri = "index.cgi"; 		se($ is_admin == 1) { 			# redirecionar para a página de administração 			$ uri = "admin.cgi '; 		} 		imprimir $ query->header(-cookie=>$ cookie, -local=>$ uri); 	} 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>		 		~; 	} }   $ html .= qq ~ <form action="login.cgi ' método='post'> Nome: <input type='text' nome='username' /> <br /> Senha: <input type='password' nome='senha' /> <br /> <input type="submit ' valor='Login' /> formulário> ~; imprimir $ query->header(); imprimir $ html;

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

Postar um comentário

powered by Blogger | WordPress by Newwpthemes | Converted by BloggerTheme