Criei um site com um sistema de login que eu costumo usar em quase todos os sites que eu faço, porem no ultimo que eu fiz está ocorrendo um erro onde alguns usuários ao fazer login estão indo para outras contas e até as vezes de acordo com que a pessoa vai atualizando o site a conta vai trocando. Já refiz o código mas o problema continua e então estou aqui para ver se alguém sabe o que pode ser.
Segue o código abaixo:
// Includes
include '../php/config.php';
include '../php/functions.php';
// Verificando se o usuário já está logado
if(isLoggedIn()){ die(json_encode(array('error' => 'Você já está logado.'))); }
// Data request
$username = $_POST['username'];
$password = md5($_POST['password'].base64_encode($username));
// Validação dos dados
if($_POST){
$sql = $pdo->prepare("SELECT * FROM usuarios WHERE nick= ? AND senha= ? LIMIT 1");
$sql->bindValue(1, $username);
$sql->bindValue(2, $password);
$sql->execute();
if($sql->rowCount() < 1){
$error['error'] = 'Usuário ou senha incorreto.';
die(json_encode($error));
}
// Verificando se o usuário está banido.
$row = $sql->fetch();
if($row['banido'] != 'n'){
if($row['ban_termino'] < time()){
$error['error'] = "Você foi banido até o dia ".date('d/m/y - h:i:s', $row['ban_termino']). "\r Motivo: ".$row['ban_motivo'];
die(json_encode($error));
}else{
// Removendo o banimento do usuário.
$upd = $pdo->prepare("UPDATE usuarios SET banido='n', ban_motivo='', ban_termino='' WHERE nick= ?");
$upd->bindValue(1, $row['nick']);
$upd->execute();
// Atualizando ip e data
$upd1 = $pdo->prepare("UPDATE usuarios SET acesso_data= ?, acesso_ip= ?, acesso_ua= ?, acesso_gl= ? WHERE nick= ?");
$upd1->bindValue(1, time());
$upd1->bindValue(2, $_SERVER['REMOTE_ADDR']);
$upd1->bindValue(3, $_SERVER['HTTP_USER_AGENT']);
$upd1->bindValue(4, $_SERVER['HTTP_ACCEPT_LANGUAGE']);
$upd1->bindValue(5, $row['nick']);
$upd1->execute();
$_SESSION['user.nick'] = $row['nick'];
$_SESSION['user.id'] = $row['id'];
if($upd1){
$error['success'] = 'Usuário logado com sucesso!';
echo json_encode($error);
}else{
$error['error'] = 'Houve algum erro no sistema. Tenta novamente mais tarde.';
echo json_encode($error);
}
}
}else{
// Atualizando ip e data
$upd1 = $pdo->prepare("UPDATE usuarios SET acesso_data= ?, acesso_ip= ?, acesso_ua= ?, acesso_gl= ? WHERE nick= ?");
$upd1->bindValue(1, time());
$upd1->bindValue(2, $_SERVER['REMOTE_ADDR']);
$upd1->bindValue(3, $_SERVER['HTTP_USER_AGENT']);
$upd1->bindValue(4, $_SERVER['HTTP_ACCEPT_LANGUAGE']);
$upd1->bindValue(5, $row['nick']);
$upd1->execute();
$_SESSION['user.nick'] = $row['nick'];
$_SESSION['user.id'] = $row['id'];
if($upd1){
$error['success'] = 'Usuário logado com sucesso!';
echo json_encode($error);
}else{
$error['error'] = 'Houve algum erro no sistema. Tenta novamente mais tarde.';
echo json_encode($error);
}
}
}
Função onde eu verifico se o usuário está logado:
function isLoggedIn(){
session_start();
if(!isset($_SESSION['user.nick']) && $_SESSION['user.nick'] == ''){
return false
}
return true;
}