Sistema de login PDO tudo funciona, mas nao devolve
Olá amigos,
estou tentando aprender sobre orientações de objetos e tudo mais e encontrei um tutorial ensinando a fazer um sistema de login bem bacana, com token e serial e decidi tentar.
o sistema é o seguinte:
O usuario acessa o index que consulta se $bdh esta ok (logado), se nao estiver ele joga para a pagina de login e cria um cookie e session com os dados para ver as tentativas e etc.
se ele ficar errando, bloqueia e etc, se ele acessar cria os cookies e sessions com "id de usuario", "token", "serial".
até ai ta funcionando tudo redondinho...
até que entra a bendita função:
public static function createRecord($dbh, $user_username, $user_id)
{
$query = "INSERT INTO sessions (session_userid, sessions_token, sessions_serial) VALUES (:user_id, :token, :serial;)";
$dbh->prepare("DELETE FROM sessions WHERE sessions_userid= :sessions_userid;")->execute(array(':sessions_userid' => $user_id));
$token = func::createString(30); //funciona
$serial = func::createString(30); //funciona
func::createCookie($user_username, $user_id, $token, $serial); //funciona
func::createSession($user_username, $user_id, $token, $serial); //funciona
$stmt = $dbh->prepare($query);
$stmt->execute(array(':user_id' => $user_id,
':token' => $token,
':serial' => $serial));
}
todas as demais funçoes que estao na mesma functions.php estão funcionando.
a ideia desse sistema de login é verificar se a $dbh esta 100%, entao exibir o conteudo da pagina, conforme codigo abaixo:
<?php
if (!func::checkLoginState($dbh))
{
header("location:login.php");
exit();
}
echo 'olá ' . $_SESSION['username'] . '!';
?>
a função checkLoginState
public static function checkLoginState($dbh)
{
if (!isset($_SESSION))
{
session_start();
}
if (isset($_COOKIE['userid']) && isset($_COOKIE['token']) && isset($_COOKIE['serial']))
{
$query = "SELECT * FROM sessions WHERE sessions_userid = :userid AND sessions_token = :token AND sessions_serial = :serial;";
$userid = $_COOKIE['userid'];
$token = $_COOKIE['token'];
$serial = $_COOKIE['serial'];
$stmt = $dbh->prepare($query);
$stmt->execute(array(':userid' => $userid,
':token' => $token,
':serial' => $serial));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if ($row['sessions_userid'] > 0)
{
if (
$row['sessions_userid'] == $_COOKIE['userid'] &&
$row['sessions_token'] == $_COOKIE['token'] &&
$row['sessions_serial'] == $_COOKIE['serial']
)
{
if (
$row['sessions_userid'] == $_SESSION['userid'] &&
$row['sessions_token'] == $_SESSION['token'] &&
$row['sessions_serial'] == $_SESSION['serial']
)
{
return true;
}
else
{
func::createSession($_COOKIE['username'], $_COOKIE['userid'], $_COOKIE['token'], $_COOKIE['serial']);
return true;
}
}
}
}
}
ele não está armazenando dados na tabela sessions
entao tbm nao consulta
ai a conferencia da $dbh da erro e nada loga
alguem consegue me dar uma luz???
estou a 2 dias batendo a cabeça nisso
valeuDiscussão (2)
Carregando comentários...