Кароч, использую следующее
<?
if (!empty($_COOKIE['id_user']) && !empty($_COOKIE['pass'])){
$us = $db -> q('select * from user where password = "'.$db->filtr($_COOKIE['pass']).'" and id = '.(int)$_COOKIE['id_user']);
if ($us->num_rows == 1){
$user = $us -> fetch_object();
//$db->q('update user set time_last = '.TIME.' where id = '.$user->id);
user::$user = $user;
}
}
?>
<?
class user{
static $user = false;
}
?>
Раньше при таком раскладе
if (!user::$user)exit(header('Location: /'));
Гостей кидало на главную, но сейчас какого-то йуха и юзверя кидает в чем может,быть трабла?
Всё потому, что ты дибил
Во первых - инкапсуляция. Проще создать метод который будет возвращать свойство класса
Во вторых - вар дамп. Что есть $user перед условием?
И на статике далеко не уедешь
А в третьих можна так (написал на коленке, так чисто примером):
<?php
namespace AppVendor;
class Login extends PhalconMvcUserComponent
{
private $user = FALSE;
public function __construct ()
{
if ($this->cookies->has('id') AND $this->cookies->has('hash'))
{
$user = Users::findFirst([
'conditions' => 'id = :id: AND hash = :hash:',
'bind' => [
'id' => (int) $this->cookies->get('id')->getValue(),
'hash' => (string) $this->cookies->get('hash')->getValue()
]
]);
if ($user)
{
$this->user = (array) $user;
}
}
}
public function get ($offset)
{
return isset($this->user[$offset]) ? $this->user[$offset] : NULL;
}
public function ifLogged ()
{
return (bool) $this->user;
}
}
?>
Пример жы:
<?php
/* .... */
if ($user->ifLogged())
{
echo 'Привет ',$user->get('name');
}
else
{
return $this->response->redirect();
}
?>