Смысл в чем - где хранить данные пользователя.
Например есть класс Users, в одном из методов которого, реализована проверка авторизации.
Авторизация держится на сессии в основном, ну и плюс кука.
Я сделал что-то типа:
При авторизации я записываю в $SESSION["user"] массив данных пользователя, ну и в классе Users заполняю свойства аналогичными данными. В этом массиве также лежит уникальный идентификатор, который генерируется при успешной авторизации.
Далее по коду я вывожу данные пользователя таким образом:
$_SESSION["user"]->name
Однако... я не кладу в это массив два свойства - email и password(его хеш). Везде говорят, что в сессии не рекомендуется такое хранить.
Поэтому я решил попробовать хранить данные пользователя в .ini файлах. То есть, пользователь авторизовался - для него сгенерировался уникальный идентификатор - uid. Этот идентификатор я кладу в $_SESSION["users"], а также записываю файл uid.ini
Дальше, при перезагрузке страницы метод в классе Users проверяет наличие идентификатора в сессии и наличие файла с таким именем. Если и то и то есть, то файл зачитывается и заполняются свойства.
Далее по коду я уже смогу писать $user->name
А также в этих файлах я думаю можно хранить и email юзера.
Естественно, при выходе файл удаляется.
Я посчитал, на операцию поиска файла, его зачитывания и заполнения полей уходит примерно 0,00045 сек. Для реалистичности я создал в папке 1000 файлов с именами от 1 до 1000, и среди них нужный.
Ну вот примерный код
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- //$_SESSION['sessid'] = 'akybfjsgbwsygvhsbjsshnctr52hb17fg5f';
- class Users{
- public $name = null;
- public $email = null;
- public $password = null;
- public $city = null;
- public $status = null;
- function check($sessid){
- $file = $_SESSION['sessid'] .'.ini';
- $file = $_SESSION['sessid'] .'.ini';
- $this->name = $user_data['name'];
- $this->email = $user_data['email'];
- $this->password = $user_data['password'];
- $this->city = $user_data['city'];
- $this->status = $user_data['status'];
- }else{
- $this->name = 'Guest';
- $this->email = 'No';
- $this->password = 'No';
- $this->city = 'No';
- $this->status = 'Guest';
- }
- }
- }
- $user = new Users();
- for($i = 0; $i < 1000; $i++){
- $user->check($_SESSION['sessid']);
- }
- echo $user->name ."<br>";
- echo $user->email ."<br>";
- echo $user->password ."<br>";
- echo $user->city ."<br>";
- echo $user->status ."<br>";
- echo "<hr>";
- echo $stop - $start .' sec';
- /*for($i = 1; $i < 1000; $i++){
- $arr = array('name' => 'Vasya', 'email' => 'vasya@mail.loc', 'password' => '12345678', 'city' => 'Moscow', 'status' => 'Admin', );
- foreach($arr as $key => $val){
- $file = $i .'.ini';
- $str = "$key = $val\n";
- file_put_contents($file, $str, FILE_APPEND);
- }
- }*/