Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

сессии в PHP5

17K
03 сентября 2007 года
StFed
27 / / 09.03.2007
есть такой класс:
Код:
<?

class utlSiteUsers
{
    public $id;     // int
    public $login;  // char
    public $type;   // char
    public $status; // bool
    public $acces;  // char

    function __construct($type)
    {
        $this->type = $type;
    }

    public function login($id, $login, $acces)
    {
        $this->id = $id;
        $this->login = $login;
        $this->acces = $acces;
        $this->status = true;

        $this->save();
    }
   
    public function logout()
    {
        unset($_SESSION[$this->type]);
        $this->status = false;
    }

    public function isLogined()
    {
        return $this->status;
    }

    public function getAcces()
    {
        return $this->acces;
    }

    public function load()
    {
        $this->id = $_SESSION[$this->type]['id'];
        $this->login = $_SESSION[$this->type]['login'];
        $this->acces = $_SESSION[$this->type]['acces'];
        $this->status = $_SESSION[$this->type]['status'];
    }

    public function save()
    {
        $_SESSION[$this->type]['id'] = $this->id;
        $_SESSION[$this->type]['login'] = $this->login;
        $_SESSION[$this->type]['acces'] = $this->acces;
        $_SESSION[$this->type]['status'] = $this->status;
    }
}
?>


вот так выглядит авторизация:
 
Код:
if ($request->action=="Login")
{
    $absAdmin = new absAdministrators();
    if ($row = $absAdmin->login($request->login, $request->password))
    {
        $admin->login($row['id'], $row['login'], $row['type']); //login($id, $login, $acces)
        Header ("Location: /admin/index.php");
    }        
}


вот так инициализируем объект и подгружаем данные из сессии:
 
Код:
$admin = new utlSiteUsers("admin");
$admin->load();


при этом print_r($_SESSION) должен выглядить так
Код:
Array
(
    [admin] =>Array
        (
            [id] => 1
            [login] => login
            [type] => admin
            [status] => true
            [acces] => admin
        )

)

а выглядит так:
Код:
Array
(
    [admin] => __PHP_Incomplete_Class Object
        (
            [__PHP_Incomplete_Class_Name] => utlSiteUsers
            [id] =>
            [login] =>
            [type] => admin
            [status] =>
            [acces] =>
        )

)


вопрос почему при работе примитивного метода load()
данные в $_SESSION становятся объектом а не нормальным массивом
???
17K
03 сентября 2007 года
StFed
27 / / 09.03.2007
так же замечу что если сделать так
 
Код:
print_r($_SESSION);
$admin = new utlSiteUsers("admin");
$admin->load();
print_r($_SESSION);

то первый принт выведет нормальный код а второй покалеченный
7.8K
03 сентября 2007 года
Tingo
201 / / 17.05.2007
варианты навскидку:
1)может не стоит сооздавать новый массив (type) внутри массива сессий?
хотя это вам решать.
2)в конструкторной функции вы присваеваете свойству type значение, но не регистрируете массив type в массиве сессий.
может добавить в
 
Код:
function __construct($type)
    {
        $this->type = $type;
        [COLOR="Red"]$_SESSION['type'] = Array();[/COLOR]
    }

?
17K
03 сентября 2007 года
StFed
27 / / 09.03.2007
Цитата: Tingo
варианты навскидку:
1)может не стоит сооздавать новый массив (type) внутри массива сессий?
хотя это вам решать.
2)в конструкторной функции вы присваеваете свойству type значение, но не регистрируете массив type в массиве сессий.
может добавить в
 
Код:
function __construct($type)
    {
        $this->type = $type;
        [COLOR="Red"]$_SESSION['type'] = Array();[/COLOR]
    }

?


да нет....
смотрите вот если так:
$admin = new utlSiteUsers("admin");
$_SESSION['admin'] - array
$_SESSION['type'] - нигде не фигурирует

17K
03 сентября 2007 года
StFed
27 / / 09.03.2007
исправил ошибку методом научного тыка
если так $admin = new utlSiteUsers("admin"); то ошибка
стоило помянять на $admin = new utlSiteUsers("uadmin"); - всё ок :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог