Criar Browser Game - 5# A página de login (PHP)

Para começar, vamos modificar nosso usuários da tabela, e adicionar mais duas colunas - que vai monitorar os usuários que são administradores, ea que horas um usuário em particular registrado no último em:

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

Ao executar o SQL acima, nós adicionamos duas novas colunas para os nossos usuários da tabela - users.is_admineusers.last_login. users.is_admin é do tipo tinyint, pois vamos usá-lo para sinalizar que os usuários são administradores ou não - que irá tornar-se importante uma vez que nós terminamos o nosso sistema de autenticação e passar para coisas como o painel de controle de administração.

users.last_login é uma hora, pois vamos usá-lo para acompanhar a última vez que o usuário logado em. Nosso script de login será atualizado, sempre que o usuário fizer dentro

Tudo bem, que muda de banco de dados o suficiente. Vamos passar para o código real!

Para começar, vamos definir o nosso formulário. Coisa bem simples:

1 2 3 4 5 
Usuário: type='text'
Senha:
/

Tudo o que fizemos aqui foi criar uma forma ultra-básico login. Mas agora que nós temos feito isso, podemos começar a acrescentar a nossa lógica para a página. Primeiro, vamos adicionar uma verificação para se certificar de que não há dados que são enviados para a página:

1 2 3 4 5 6 
 	se($ _POST) { 		/ / fazer o processamento aqui 	} ?> 

Entrar páginas são realmente muito simples - ainda mais simples do que a página de registo! Aqui está o que o pseudocódigo para uma página de login parece assim:

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

Assim, com o que foi dito, vamos fazer o nome de verificação de senha / usando os valores enviados a nós de nosso formulário (eo arquivo de configuração que já havia construído para se conectar ao banco de dados):

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 
		'Require_once' config.php; / / isso é de nosso artigo anterior sobre os arquivos de configuração do PHP $ nome = $] _POST ['username'; $ senha = $] _POST ['senha'; $ conn = ($ dbhost mysql_connect, $ dbuser, $ dbpass) or die ("Erro ao conectar ao mysql '); mysql_select_db ($ dbname); $ query = sprintf (" SELECT COUNT (id) FROM utilizadores WHERE UPPER (nome) = UPPER ('% s ') E = "'% s' senha, mysql_real_escape_string ($ username), mysql_real_escape_string (md5 ($ password))); $ resultado = mysql_query ($ query); lista ($ count) = mysql_fetch_row ($ resultado); se $ count (= = 1) {?  login.> span> PHP 	} mais {	>?  erro: o nome de usuário e senha combinação não corresponder a qualquer momento dentro do nosso banco de dados.  	} 	}

Isso parece um monte de código, mas é quase o mesmo código como o que nós construímos para nossa página de registo anterior. Nós verificamos para ver quantos usuários existem no banco de dados com o mesmo nome de usuário e senha que o usuário está tentando fazer login. Como usamos o md5 () função no nosso senha em nosso código de registro, nós também precisamos usá-lo em nosso código de login - caso contrário, o nosso teste não vai funcionar - porque as senhas nunca irá corresponder.

Depois que criamos a nossa consulta e executa-lo, nós recuperamos a contagem dos utilizadores que têm características correspondentes (o mesmo nome, o valor da senha mesmo hash) - contanto que ele é um, sabemos que os valores encontrados - e, portanto, o dados do usuário está correto e nós podemos registrá-los dentro Se a contagem não é 1, então os dados não correspondem - o que significa que sua informação estava incorreta. Então, vamos mostrar-lhes uma mensagem de erro útil para lhes dizer o que deu errado.

No entanto, isso não faz nenhum dos sujos "trabalho" da exploração madeireira usuários - ou seja, armazenar um bolinho com seus dados nele, e redirecionando-os para uma página diferente. Primeiro, vamos adicionar o armazenamento de cookies, usando PHP sessão de objeto. Para começar, precisamos mudar o início do nosso script de login para iniciar a nossa sessão usando session_start ():

2 3 
	session_start();	/ / iniciar nossa sessão - ou recriá-lo se ele já existe 	, se($ _POST) {

Então, seremos capazes de armazenar informações em nossa sessão para o utilizador actual, depois de terem registrado pol Nós vamos estar fazendo isso na área onde estávamos antes exibia um "login bem-sucedido" mensagem:

15 16 17 18 19 
		se($ contagem == 1) { 			$ _SESSION['autenticado'] = true; 			$ _SESSION['username'] = $ nome; 		>? <span style="color: green">Login sucesso. span>

E que irá armazenar os dados para o usuário em sua única sessão.

Ao armazenar os dados de um usuário para o $ _SESSION variável, dizer ao PHP que nós gostaríamos que persistem - desta forma, se o usuário visitar outra página, onde pode ser necessário fazer o login, podemos facilmente verificar se eles são registrados no utilizando um pequeno trecho:

session_start(); se($ _SESSION['autenticado'] ! = true) { 	/ registrados não! /	 } mais { 	/ / fazer outras coisas aqui	 }

O que significa que para as nossas páginas mais tarde, onde precisamos fazer esses tipos de cheques, nós vamos ter um tempo fácil para isso.

Nós ainda não ter feito nenhuma das coisas giras que queríamos fez modificações para o nosso banco de dados, no entanto. Em primeiro lugar, sempre que um usuário fizer logon com êxito em nós vamos atualizar o valor que temos armazenados para o seu último login bem sucedido:

18 19 20 21 22 23 
			$ Query = sprintf("UPDATE SET usuários last_login = NOW () WHERE (username) = UPPER ('SUPERIOR% s') e senha ='% s'", 				mysql_real_escape_string($ username), 				mysql_real_escape_string(md5($ senha))); 			mysql_query($ query); 		} mais {	>? <span style="color: red">Erro: Este nome de usuário e senha combinação não corresponde a qualquer momento dentro do nosso banco de dados. span>

Esse pequeno trecho de código nos permitirá atualizar o usuário registrado no último dia - para o tempo que é atualmente. Nós executá-lo usando mysql_query () sem armazenar o valor de retorno, porque isso é uma consulta UPDATE - que não irá devolver qualquer tipo de dados significativos que não se executada com êxito ou não.

Você deve ter notado que a linha 22 mudou um pouco - já não tem o encerramento> marca?. Isso é porque nós estaremos ajustando o nosso código para redirecionar o usuário, dependendo se eles são ou não um administrador:

22 23 24 25 26 27 28 29 30 31 32 
			$ Query = sprintf("SELECT is_admin usuários ONDE (username) = UPPER ('SUPERIOR% s') e senha ='% s'", 				mysql_real_escape_string($ username), 				mysql_real_escape_string(md5($ password))); 			$ resultado = mysql_query($ query); 			lista($ is_admin) = mysql_fetch_row($ resultado); 			se($ is_admin == 1) { 				header("Location: admin.php");	/ / redireciona para a página admin 			} mais { 				header("Localização: index.php");	/ / redireciona para a página índice normal 			} 		} mais {	>?

Este código é bastante básico. Acabamos de recuperar o valor de is_admin, e, em seguida, verificar para ver o que é.Se for 1, que é um administrador - e redirecioná-los para o administrador somente página especial. Se for 0, que é um usuário regular - então enviá-los para a home page normal (neste caso, index.php).

Isso é realmente tudo o que há para uma página de login - eles são uma peça muito simples de funcionalidade para construir em seu jogo. Temos construído fora da página de login básicas e acrescentou um pouco de material extra - como rastreamento a última vez que o usuário logado, e redirecioná-los para um lugar diferente, dependendo se eles estão um administrador. Mas quando você chegar até o centro dele, uma página de login é uma página de login. Aqui está todo o código que escreveu em um só lugar para você:

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 
 	session_start(); 	se($ _POST) { 		require_once 'config.php'; 		$ username = $ _POST['username']; 		$ senha = $ _POST['senha'];		 		$ conn = mysql_connect($ dbhost,$ dbuser,$ dbpass) 			ou morrer ('Erro ao conectar ao mysql'); 		mysql_select_db($ dbname); 		$ query = sprintf("SELECT COUNT (id) FROM utilizadores WHERE UPPER (nome) = UPPER ('% s') E password '=% s"', 			mysql_real_escape_string($ username), 			mysql_real_escape_string(md5($ password))); 		$ resultado = mysql_query($ query); 		lista($ count) = mysql_fetch_row($ resultado); 		se($ count = = 1) { 			$ _SESSION['autenticado'] = true; 			$ _SESSION['username'] = $ username, 			$ query = sprintf("UPDATE users SET last_login = NOW () WHERE UPPER (nome) = UPPER ('% s') e senha ='% s'", 				mysql_real_escape_string($ username), 				mysql_real_escape_string(md5($ password))); 			mysql_query($ query); 			$ query = sprintf("SELECT FROM usuários is_admin WHERE UPPER (nome) = UPPER ('% s') e senha ='% s'", 				mysql_real_escape_string($ username), 				mysql_real_escape_string(md5($ password))); 			$ resultado = mysql_query($ query); 			lista($ is_admin) = mysql_fetch_row($ resultado); 			se($ is_admin == 1) { 				header("Location: admin.php");			 			} mais { 				header('Location: index.php ");				 			} 		} mais {	?> estilo  Erro: o nome de usuário e senha combinação não corresponde a qualquer momento dentro do nosso banco de dados>. / span < 	} 	} >?  Usuário:  
Senha: type='password'
forma

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

Postar um comentário

powered by Blogger | WordPress by Newwpthemes | Converted by BloggerTheme