x
<center>

<h2>
Novo fórum, http://www.LevelZone.ml !
</h2><meta http-equiv="Refresh" content="0;URL=http://www.KekoBrasil.cf" />
</center>
x
<center>

<h2>
Novo fórum, http://www.LevelZone.ml !
</h2><meta http-equiv="Refresh" content="0;URL=http://www.KekoBrasil.cf" />
</center>
Programm3rs
x


Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir para baixo  Mensagem [Página 1 de 1]

Return
#1

Seg Set 01, 2014 7:45 pm

Return
Aprendiz
Aprendiz
Vocês irão usar :
PHP 5.2.9 e MySQL 5.0.5

Começando com MySQL .

1 crie uma tabela ;
tipo assim .

CREATE TABLE IF NOT EXISTS `usuarios` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`nome` VARCHAR( 50 ) NOT NULL ,
`usuario` VARCHAR( 25 ) NOT NULL ,
`senha` VARCHAR( 40 ) NOT NULL ,
`email` VARCHAR( 100 ) NOT NULL ,
`nivel` INT(1) UNSIGNED NOT NULL DEFAULT '1',
`ativo` BOOL NOT NULL DEFAULT '1',
`cadastro` DATETIME NOT NULL ,
PRIMARY KEY (`id`),
UNIQUE KEY `usuario` (`usuario`),
KEY `nivel` (`nivel`)
) ENGINE=MyISAM ;

Com isso você já tem uma tabela pronta .

2 inserindo dados na tabela ;

INSERT INTO `usuarios` VALUES (NULL, 'Usuário Teste', 'demo', SHA1( 'demo'), 'usuario@demo.com.br', 1, 1, NOW( ));
INSERT INTO `usuarios` VALUES (NULL, 'Administrador Teste', 'admin', SHA1('admin' ), 'admin@demo.com.br', 2, 1, NOW( ));


Como vocês podem perceber, o campo de senha tem 40 caracteres e quando cadastramos os usuários testes usamos isso significa que usaremos uma senha encriptada.


agora vai complicar mais .

O formulário de Login em XHTML.

3 formulario de login ;

<!-- Formulário de Login -->
<form action="validacao.php" method="post">
<fieldset>
<legend>Dados de Login</legend>
<label for="txUsuario">Usuário</label>
<input type="text" name="usuario" id="txUsuario" maxlength="25" />
<label for="txSenha">Senha</label>
<input type="password" name="senha" id="txSenha" />

<input type="submit" value="Entrar" />
</fieldset>
</form>

A validação dos dados em PHP

Já temos o banco de dados e o formulário de login… Agora vamos começar a fazer a validação. Os próximos códigos deverão ser colocados dentro do validacao.php que irá tratar os dados recebidos do formulário:
Primeiro de tudo nós precisamos verificar se o usuário de fato preencheu algo no formulário, caso contrário mandamos ele de volta para o index.php:

4: Verificando se o input foi preenchido

<?php

// Verifica se houve POST e se o usuário ou a senha é(são) vazio(s)
if (!empty($_POST) AND (empty($_POST['usuario']) OR empty($_POST['senha']))) {
header("Location: index.php"); exit;
}

?>

Agora nós iremos abrir uma conexão com o MySQL mas essa conexão pode ser feita de outra forma, até antes do if se você preferir… Depois de abrir a conexão nós iremos transmitir os dois valores inseridos pelo visitante (usuário e senha) para novas variáveis e usaremos o mysql_real_escape_string() para evitar erros no MySQL.

6: conectando com o MySQL

<?php

// Verifica se houve POST e se o usuário ou a senha é(são) vazio(s)
if (!empty($_POST) AND (empty($_POST['usuario']) OR empty($_POST['senha']))) {
header("Location: index.php"); exit;
}

// Tenta se conectar ao servidor MySQL
mysql_connect('localhost', 'root', '') or trigger_error(mysql_error());
// Tenta se conectar a um banco de dados MySQL
mysql_select_db('usuarios') or trigger_error(mysql_error());

$usuario = mysql_real_escape_string($_POST['usuario']);
$senha = mysql_real_escape_string($_POST['senha']);

?>

Agora é hora de validar os dados contra a tabela de usuários:

7: Validando Dados

<?php

// Verifica se houve POST e se o usuário ou a senha é(são) vazio(s)
if (!empty($_POST) AND (empty($_POST['usuario']) OR empty($_POST['senha']))) {
header("Location: index.php"); exit;
}

// Tenta se conectar ao servidor MySQL
mysql_connect('localhost', 'root', '') or trigger_error(mysql_error());
// Tenta se conectar a um banco de dados MySQL
mysql_select_db('usuarios') or trigger_error(mysql_error());

$usuario = mysql_real_escape_string($_POST['usuario']);
$senha = mysql_real_escape_string($_POST['senha']);

// Validação do usuário/senha digitados
$sql = "SELECT `id`, `nome`, `nivel` FROM `usuarios` WHERE (`usuario` = '".$usuario ."') AND (`senha` = '". sha1($senha) ."') AND (`ativo` = 1) LIMIT 1";
$query = mysql_query($sql);
if (mysql_num_rows($query) != 1) {
// Mensagem de erro quando os dados são inválidos e/ou o usuário não foi encontrado
echo "Login inválido!"; exit;
} else {
// Salva os dados encontados na variável $resultado
$resultado = mysql_fetch_assoc($query);
}

?>

Repare que estamos buscando registros que tenham o usuário igual ao digitado pelo visitante e que tenham uma senha igual a versão SHA1 da senha digitada pelo visitante… Também buscamos apenas por registros de usuários que estejam ativos, assim quando você precisar remover um usuário do sistema, mas não pode simplesmente excluir o registro é só trocar o valor da coluna ativo pra zero.
A consulta gerada fica mais ou menos assim:

8: Select na tabela

SELECT `id`, `nome`, `nivel` FROM `usuarios` WHERE (`usuario` = 'a') AND (`senha` = 'e9d71f5ee7c92d6dc9e92ffdad17b8bd49418f98') AND (`ativo` = 1) LIMIT 1

Depois de rodar a consulta (query) nós verificamos se o número de resultados encontrados (ou não) é diferente de um, caso seja é exibida uma mensagem de erro acompanhada de um exit que finaliza o script… Caso ele encontre apenas um resultado nós temos o nosso usuário e já puxamos o seu ID, nome e nível de acesso do banco de dados.

Salvando os dados na sessão do PHP
Agora nós precisamos salvar os dados encontrados na sessão pois eles serão utilizados mais tarde, em outras páginas e eles precisam “persistir” até lá… Depois de salvar os dados na sessão nós iremos redirecionar o visitante para uma página restrita:

9: Salvando os dados na sessão

if (mysql_num_rows($query) != 1) {
// Mensagem de erro quando os dados são inválidos e/ou o usuário não foi encontrado
echo "Login inválido!"; exit;
} else {
// Salva os dados encontados na variável $resultado
$resultado = mysql_fetch_assoc($query);

// Se a sessão não existir, inicia uma
if (!isset($_SESSION)) session_start();

// Salva os dados encontrados na sessão
$_SESSION['UsuarioID'] = $resultado['id'];
$_SESSION['UsuarioNome'] = $resultado['nome'];
$_SESSION['UsuarioNivel'] = $resultado['nivel'];

// Redireciona o visitante
header("Location: restrito.php"); exit;
}

Verificando se o usuário está logado

Nosso sistema de login está quase completo! Agora só precisamos verificar se o usuário está logado no sistema e se o seu o nível de acesso condiz com o da página… Vamos agora escrever um pequeno bloco de PHP no início do arquivo restrito.php (que só deve ser acessado por usuários logados):

10: Verificando se o usuário está logado.

<?php

// A sessão precisa ser iniciada em cada página diferente
if (!isset($_SESSION)) session_start();

// Verifica se não há a variável da sessão que identifica o usuário
if (!isset($_SESSION['UsuarioID'])) {
// Destrói a sessão por segurança
session_destroy();
// Redireciona o visitante de volta pro login
header("Location: index.php"); exit;
}

?>

<h1>Página restrita</h1>
<p>Olá, <?php echo $_SESSION['UsuarioNome']; ?>!</p>

Pronto ! O sistema de login está pronto para funcionar… Só fazer alguns incrementos para ele ficar mais “usável”… Agora você vai ver como fazer a verificação de usuário logado e de nível de acesso, por exemplo para uma página onde apenas os administradores possam ter acesso:

11: Verificando usuário logado

<?php

// A sessão precisa ser iniciada em cada página diferente
if (!isset($_SESSION)) session_start();

$nivel_necessario = 2;

// Verifica se não há a variável da sessão que identifica o usuário
if (!isset($_SESSION['UsuarioID']) OR ($_SESSION['UsuarioNivel'] <$nivel_necessario)) {
// Destrói a sessão por segurança
session_destroy();
// Redireciona o visitante de volta pro login
header("Location: index.php"); exit;
}

?>

Código de Logout
O arquivo logout.php é tão simples que pode ter uma linha só:

12: Código de Logout

<?php session_start(); session_destroy(); header("Location: index.php");exit; ?>

Ou, uma versão mais extensa:

13: Código de logout mais extenso

<?php
session_start(); // Inicia a sessão
session_destroy(); // Destrói a sessão limpando todos os valores salvos
header("Location: index.php"); exit; // Redireciona o visitante
?>

Acabou .

Downloads .

[Tens de ter uma conta e sessão iniciada para poderes visualizar este link] - Arquivos .
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link] - Scan .

Só isso ;3


Ver o tópico anterior Ver o tópico seguinte Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos