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