PHP Tutorial

Fazendo tela de login com php

15:58Fresh Young´s


Criando a Tabela MySQL

Você pode executar esse código MySQL para criar a nossa tabela de usuários que tem 3 campos (básicos) você pode aumentar campos da sua preferência:

CREATE TABLE IF NOT EXISTS `usuarios` (
      `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    `usuario` VARCHAR( 25 ) NOT NULL ,
      `senha` VARCHAR( 40 ) NOT NULL ,
      
      PRIMARY KEY (`id`),
      UNIQUE KEY `usuario` (`usuario`),
) ENGINE=MyISAM ;

O formulário de Login em HTML

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


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.

<?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;
  }
    
  ?>

Com isso, todo código que vier depois desse if estará seguro de que os dados foram preenchidos no formulário.


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 mysqli_real_escape_string() para evitar erros no 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
  mysqli_connect('localhost', 'root', '') or trigger_error(mysqli_error());
  // Tenta se conectar a um banco de dados MySQL
  mysqli_select_db('usuarios') or trigger_error(mysqli_error());
    
  $usuario = mysqli_real_escape_string($_POST['usuario']);
  $senha = mysqli_real_escape_string($_POST['senha']);
    
  ?>

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

<?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
  mysqli_connect('localhost', 'root', '') or trigger_error(mysqli_error());
  // Tenta se conectar a um banco de dados MySQL
  mysql_select_db('usuarios') or trigger_error(mysql_error());
    
  $usuario = mysqli_real_escape_string($_POST['usuario']);
  $senha = mysqli_real_escape_string($_POST['senha']);
    
  // Validação do usuário/senha digitados
  $sql = "SELECT `id` FROM `usuarios` WHERE (`usuario` = '".$usuario ."') AND (`senha` = '". sha1($senha) ."')";
  $query = mysqli_query($sql);
  if (mysqli_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 = mysqli_fetch_assoc($query);
  }
    
  ?>

Salvando os dados na sessão do PHP


if (mysqli_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 encontrados na variável $resultado
      $resultado = mysqli_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'];
    
      // Redireciona o visitante
      header("Location: restrito.php"); exit;
  }

You Might Also Like

0 comentários

Popular Posts

Formulário de Contacto