Criando sessão para login no PHP

19:12Fresh Young´s


Primeiro vamos entender o que é uma sessão de usuário e como funciona.
A sessão web é bem parecida com a sessão de um PC, que ao iniciar, temos que colocar usuário e senha, assim seu computador pode saber quem está usando a máquina e guardar os registros com segurança. Em um site ou sistema web, a sessão é importante quando se quer mais segurança na página ou quando se quer ter um controle de usuário. Também alguns programadores utilizam-se deste recurso para guardar informações e também pode-se montar um carrinho de compra de um site de vendas, pois assim vão armazenando-se os itens ou produtos e só no final é que os dados são jogados no banco de dados.
Observação: ”A variável de sessão PHP é usada para armazenar informações sobre, ou alterar as configurações do sistema ou site para uma sessão de usuário. As variáveis ​​de sessão armazenam informações sobre um único usuário e estão disponíveis para todas as páginas em um único aplicativo”.
Neste artigo esperamos que o leitor tenha conhecimento básico em PHP e que já saiba manusear algum servidor PHP (Easyphp, Apache ou Xampp). Neste exemplo usaremos o EasyPHP12, com banco de dados MySQL.
Agora vamos ter uma visão geral da nossa área de login. Observe a figura 1 e depois acompanhe a explicação da lógica e relação das paginas que vamos criar.
Na figura 1 vemos a lógica de funcionamento da sessão que criaremos.
Lógica de funcionamento da sessão
Figura 1: Lógica de funcionamento da sessão
Em um site, a página principal fica na página cujo nome obrigatoriamente é index. No nosso exemplo temos um sistema on-line que quando acessado a primeira coisa em que ele mostra ao usuário é a área de login, para que só possam acessar o conteúdo do sistema web os usuários cadastrados que passarem pelo login. Por isso na nossa página índex.php não iremos colocar o conteúdo em si do nosso sistema e sim criaremos um formulário de login. Então observe o layout da figura 1, veja que no ponto 1(um) temos a página principal, a “index.php”, lá ficará o formulário com os campos: “nome”, “senha” e um botão com o nome de logar, que ao ser clicado levará as informações para a página “ope.php”(o nome ope.php é opcional, lembre-se de que você pode dar qualquer nome às suas páginas), que por sua vez coleta as informações digitadas no formulário da página index.php e se conecta com o databse (ponto 2). Ao se conectar com o banco de dados, a página ope.php compara se existe realmente algum registro cujo os campos nome e senha são idênticos ao que ele coletou no database. Ao retornar com o comparativo (ponto3), se for verdadeiro (se existir um registro no bando dessa pessoa), a página ope.php redirecionará o usuário para a página chamada site.php, onde está realmente o conteúdo principal ou seja a pagina principal do sistema. Se for falso o comparativo (se não existir registro idêntico no bando de dados), a página ope.php redirecionará o usuário para a página de início para que ele possa tentar novamente fazer seu login.
Agora que entendemos a lógica e a relação das nossas páginas, vamos então criá-las, mas para isso o leitor já tem que estar com os seguintes requisitos em sua máquina (requisitos baseados no nosso exemplo).
Um banco de dados instalado com no mínimo uma tabela:
  • NOME DO BANCO: SERVER;
  • NOME DA TABELA: USUARIO;
com os seguintes campos:
  • ID_USER do tipo INT tamanho 4 e marcado como primare key e auto increment;
  • NOME do tipo VACHAR tamanho 50;
  • SENHA do tipo VACHAR tamanho 50.
No artigo foi usado o programa EasyPHP 12.1, que já simula um servidor local e vem com o PhpMyAdmin.
Depois de instalado o EasyPHP e criado o banco de dados com a tabela e seus campos necessários, vamos criar nossa primeira página, que será a index.php. Na listagem 1 vemos o código fonte da página devidamente comentado para que o leitor possa compreender de forma mais clara.
Listagem 1: Código fonte da do formulário da pagina índex.php
/* na primeira linha usaremos o “action=ope.php” para que o formulário repasse as informações para a pagina ope.php */
<form method="post" action="ope.php" id="formlogin" name="formlogin" >
<fieldset id="fie">
<legend>LOGIN</legend><br />
<label>NOME : </label>
// o campo “name” dentro do input e importante, pois será ele que armazenará os dados digitados . 
<input type="text" name="login" id="login"  /><br />
<label>SENHA :</label>
<input type="password" name="senha" id="senha" /><br />
<input type="submit" value="LOGAR	"  />
</fieldset>
</form>
Observação:Lembre-se de que neste artigos estamos abordando o Login de um sistema através de uma SESSION, não nos deteremos no visual (CSS, jQuery), essa área fica sob responsabilidade do leitor.
Agora vamos criar a página “ope.php”, que terá inúmeras funções, por isso é de extrema importância a observação e acompanhamento detalhado do código fonte e seus comentários na listagem 2, logo abaixo.
Essa página primeiramente receberá os dados da página índex.php, se conectará ao database para pesquisa e logo após decidirá se o usuário passará ou não para dentro do sistema.
Listagem 2: Página ope.php
<?php 
// session_start inicia a sessão
session_start();
// as variáveis login e senha recebem os dados digitados na página anterior
$login = $_POST['login'];
$senha = $_POST['senha'];
// as próximas 3 linhas são responsáveis em se conectar com o bando de dados.
$con = mysql_connect("127.0.0.1", "root", "digite a senha do banco aqui") or die ("Sem conexão com o servidor");
$select = mysql_select_db("server") or die("Sem acesso ao DB, Entre em contato com o Administrador, gilson_sales@bytecode.com.br");

// A vriavel $result pega as varias $login e $senha, faz uma pesquisa na tabela de usuarios
$result = mysql_query("SELECT * FROM `USUARIO` WHERE `NOME` = '$login' AND `SENHA`= '$senha'");
/* Logo abaixo temos um bloco com if e else, verificando se a variável $result foi bem sucedida, ou seja se ela estiver encontrado algum registro idêntico o seu valor será igual a 1, se não, se não tiver registros seu valor será 0. Dependendo do resultado ele redirecionará para a pagina site.php ou retornara  para a pagina do formulário inicial para que se possa tentar novamente realizar o login */
if(mysql_num_rows ($result) > 0 )
{
$_SESSION['login'] = $login;
$_SESSION['senha'] = $senha;
header('location:site.php');
}
else{
	unset ($_SESSION['login']);
	unset ($_SESSION['senha']);
	header('location:index.php');
	
	}

?>
Pronto, agora que temos a página de login (index.php) e a página que recebe os dados e verifica no banco se o usuário está ou não cadastrado (ope.php), vamos criar a página principal (site.php), para que se o usuário estiver devidamente cadastrado no banco, seja redirecionado para ela. Note que a responsabilidade de passar ou não para página mestre do seu sistema (site.php), será a “ope.php”.
Iremos agora criar a página com o conteúdo do seu sistema (neste caso meramente ilustrativo), e daremos uma ênfase maior no banner da página, pois alí colocaremos alguns códigos de segurança que explicaremos logo mais.
Listagem 3: Página site.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php  
/* esse bloco de código em php verifica se existe a sessão, pois o usuário pode simplesmente não fazer o login e digitar na barra de endereço do seu navegador o caminho para a página principal do site (sistema), burlando assim a obrigação de fazer um login, com isso se ele não estiver feito o login não será criado a session, então ao verificar que a session não existe a página redireciona o mesmo para a index.php.
session_start();
if((!isset ($_SESSION['login']) == true) and (!isset ($_SESSION['senha']) == true))
{
	unset($_SESSION['login']);
	unset($_SESSION['senha']);
	header('location:index.php');
	}

$logado = $_SESSION['login'];
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>SISTEMA WEB</title>
</head>

<body>
<table width="800" height="748" border="1">
  <tr>
    <td height="90" colspan="2" bgcolor="#CCCCCC">SISTEM WEB TESTE
    <?php 
	echo" Bem vindo $logado";
	?>
    </td>
  </tr>
  <tr>
    <td width="103" height="410" bgcolor="#CCCCCC">MENU AQUI</td>
    <td width="546">CONTEUDO E ICONES AQUI</td>
  </tr>
  <tr>
    <td colspan="2" bgcolor="#000000"> </td>
  </tr>
</table>
</body>
</html>
Após todo esse processo aproveite e faça o teste na sua máquina. Não esqueça que neste artigo foi abordada somente a lógica do funcionamento de uma “session login”, para que você possa se familiarizar com o ambiente, por isso deixamos de lado a parte visual das páginas. Esperamos ter contribuído e caso surjam quaisquer dúvidas, pode postar, pois esse assunto é por demais extenso e abrange muito mais a área de segurança na web. Um forte abraço e ate a próxima.

You Might Also Like

0 comentários

Popular Posts

Formulário de Contacto