Login com PDO e Crypt
Boa tarde pessoal,
Pela primeira vez, fiz um sistema de login utilizando PDO e Crypt. Gostaria de saber se foi feito da maneira correta e se está totalmente seguro.
Segue o código:
<?php
session_start();
require_once("../libs/conn.php");
$email = $_POST['email'];
$senha = $_POST['senha'];
$time = time();
$sql = " SELECT * FROM usuarios WHERE email = :email LIMIT 1 ";
try {
$query = $db->prepare($sql);
$query->bindValue(':email',$email,PDO::PARAM_STR);
$query->execute();
$r = $query->fetch(PDO::FETCH_LAZY);
$password = $r->senha;
$acesso = $r->acesso;
} catch(PDOException $e) {
echo "<strong>Erro:</strong> " . $e->getMessage();
}
$sql = " SELECT * FROM usuarios WHERE email = :email AND senha = :senha ";
try {
$query = $db->prepare($sql);
$query->bindValue(':email',$email,PDO::PARAM_STR);
$query->bindValue(':senha',crypt($senha,$password),PDO::PARAM_STR);
$query->execute();
} catch (PDOException $e) {
echo "<strong>Erro:</strong> " . $e->getMessage();
}
if($query->fetchObject()) { // AUTENTICAÇÃO FEITA COM SUCESSO
$_SESSION['adm_email'] = $email;
$_SESSION['adm_senha'] = $senha;
$_SESSION['adm_acesso'] = $acesso;
// ALTERA ULTIMO LOGIN
$query = $db->prepare("UPDATE usuarios SET acesso = '$time' WHERE email = :email AND senha = :senha ");
$query->bindValue(':email',$email,PDO::PARAM_STR);
$query->bindValue(':senha',crypt($senha,$password),PDO::PARAM_STR);
$query->execute();
header("Location: main.php");
}else {
header("Location: index.php");
}
?>
Se alguém tiver sugestões de como melhorar também, são bem-vindas.
Obrigado
Discussão (2)
Carregando comentários...