function __construct($type)
{
$this->type = $type;
[COLOR="Red"]$_SESSION['type'] = Array();[/COLOR]
}
сессии в PHP5
Код:
<?
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;
}
}
?>
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");
}
}
{
$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();
$admin->load();
при этом print_r($_SESSION) должен выглядить так
Код:
Array
(
[admin] =>Array
(
[id] => 1
[login] => login
[type] => admin
[status] => true
[acces] => admin
)
)
(
[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] =>
)
)
(
[admin] => __PHP_Incomplete_Class Object
(
[__PHP_Incomplete_Class_Name] => utlSiteUsers
[id] =>
[login] =>
[type] => admin
[status] =>
[acces] =>
)
)
вопрос почему при работе примитивного метода load()
данные в $_SESSION становятся объектом а не нормальным массивом
???
Код:
print_r($_SESSION);
$admin = new utlSiteUsers("admin");
$admin->load();
print_r($_SESSION);
$admin = new utlSiteUsers("admin");
$admin->load();
print_r($_SESSION);
то первый принт выведет нормальный код а второй покалеченный
1)может не стоит сооздавать новый массив (type) внутри массива сессий?
хотя это вам решать.
2)в конструкторной функции вы присваеваете свойству type значение, но не регистрируете массив type в массиве сессий.
может добавить в
Код:
?
Цитата: Tingo
варианты навскидку:
1)может не стоит сооздавать новый массив (type) внутри массива сессий?
хотя это вам решать.
2)в конструкторной функции вы присваеваете свойству type значение, но не регистрируете массив type в массиве сессий.
может добавить в
?
1)может не стоит сооздавать новый массив (type) внутри массива сессий?
хотя это вам решать.
2)в конструкторной функции вы присваеваете свойству type значение, но не регистрируете массив type в массиве сессий.
может добавить в
Код:
function __construct($type)
{
$this->type = $type;
[COLOR="Red"]$_SESSION['type'] = Array();[/COLOR]
}
{
$this->type = $type;
[COLOR="Red"]$_SESSION['type'] = Array();[/COLOR]
}
?
да нет....
смотрите вот если так:
$admin = new utlSiteUsers("admin");
$_SESSION['admin'] - array
$_SESSION['type'] - нигде не фигурирует
если так $admin = new utlSiteUsers("admin"); то ошибка
стоило помянять на $admin = new utlSiteUsers("uadmin"); - всё ок :)