Fatal error: Uncaught Error: Call to a member function prepare() on null
<?php
class Usuario
{
private $pdo;
public $msgErro = "";
public function conectar($nomedb, $servidor, $usuario, $senha)
{
// global $pdo;
try {
$pdo = new PDO("mysql:dbname=" . $nomedb . ";host=" . $servidor, $usuario, $senha);
} catch (PDOException $e) {
$msgErro = $e->getMessage();
echo '$msgErro';
} catch (PDOException $e) {
echo "Erro: " . $e->getMessage();
}
}
public function logar($usEmail, $usSenha)
{
global $pdo;
// Verifica se existe o email e senha
$u = $pdo->prepare("SELECT id FROM usuarios WHERE email = :e AND senha = :s"); // A Q U I DÁ O ERRO
$u->bindValue(":e", $usEmail);
$u->bindValue(":s", md5($usSenha));
$u->execute();
if ($u->rowCount() > 0) {
// Se sim entrar no sistema (Sessão)
$dado = $u->fetch();
//usaremos a sessão abaixo em areaPrivada.php
session_start();
$_SESSION['id_user'] = $dado['id'];
return true; //Cadastrado com sucesso
} else {
return false; // Não logou
}
}
}
$u = new Usuario;
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- VIEWPORT
A largura será igual a do dispositivo
Se tiver o atributo user-scalable=no
quer dizer que não pode dar zoom
-->
<link rel="stylesheet" href="css\login.css">
<title>Login Teste</title>
</head>
<body>
<div id="corpo-form">
<h1>Entrar</h1>
<!-- Mais seguro o post do que o get para envio de senha
o processo.php vai processar os dados com o banco de dados -->
<form method="post">
<input type="email" name="email" placeholder="Usuário">
<input type="password" name="senha" placeholder="Senha">
<input type="submit" value="Acessar">
<a href="cadastrar.php">Ainda não tem cadastro? <strong>Cadastre-se</strong></a>
</form>
</div>
<?php
//Verifica se clicou no botão
if (isset($_POST['email'])) {
// 2 - Guardar os dados dentro de variáveis
$email = addslashes($_POST['email']);
$senha = addslashes($_POST['senha']);
//Verificar se está preenchido
if (!empty($email) && !empty($senha)) {
$u->conectar("projeto_comentarios", "localhost", "root", "");
if ($u->msgErro == "") { // Se vazio td ok
?>
<div class="msg-erro">
CONECTADO COM SUCESSO !
</div>
<?php
if ($u->logar($email, $senha)) {
header("location: areaPrivada.php");
} else {
?>
<div class="msg-erro">
Email e/ou senha incorretos!
</div>
<?php
}
} else {
?>
<div class="msg-erro">
<?php
echo "Erro: " . $u->msgErro;
?>
</div>
<?php
}
} else {
?>
<div class="msg-erro">
Preencha todos os campos!
</div>
<?php
}
}
?>
</body>
</html>