Хранить информацию обо всех пользователях при входе в систему - PullRequest
4 голосов
/ 17 января 2010

Лучше ли хранить всю информацию о пользователях в сеансовых cookie-файлах, как это при входе в систему? Вместо использования большого количества запросов

$_SESSION['id'] = mysql_result($result, 0, 'id');
$_SESSION['name'] = mysql_result($result, 0, 'name');
$_SESSION['email'] = mysql_result($result, 0, 'email');
$_SESSION['ip'] = mysql_result($result, 0, 'regip');
$_SESSION['groupid'] = mysql_result($result, 0, 'group_id');
$_SESSION['style'] = mysql_result($result, 0, 'style');

Или, может быть, просто сохранить идентификатор в сессии, а затем запросить на всей странице:

select * from users where id = $_SESSION['id']

Ответы [ 2 ]

2 голосов
/ 17 января 2010

Я бы создал (соленый) хеш для каждого пользователя, сохраненный в БД:

$salt = 'asdjnvdskflds';
$hash = md5($salt . $email);

Затем сохраните хэш в сеансе. Таким образом, вы можете вызывать пользовательские данные каждый раз. Это также имеет то преимущество, что нет необходимости обновлять сеанс, если пользователь изменяет некоторые из своих данных.

2 голосов
/ 17 января 2010

Если вы собираетесь их часто использовать, конечно. Хотя я буду осторожен с сохранением всех данных пользователей в сеансе. Только то, что нужно. Имейте в виду, что хорошо написанные запросы дешевы в ресурсах. Не пытайтесь вообще не подключаться к базе данных, просто убедитесь, что когда вы делаете это, вы делаете это хорошо.

Вы можете проверить потребление памяти, если хотите использовать memory_get_usage(). Но обратите внимание, что данные сеанса хранятся в плоском файле на самой системе:

session_start();
echo memory_get_usage(); // 87744
$_SESSION["user"] = array(
    "name"    => "Jonathan Sampson",
    "id"      => 54680,
    "groupID" => 0285,
    "email"   => "example@somesite.com",
    "style"   => "background-color:#333;color:#f1f1f1"
);
echo memory_get_usage(); // 88344

Таким образом, вы можете видеть, что хранить этот объем данных очень просто.

См. Также: Кэшировать данные в PHP SESSION или каждый раз запрашивать из db?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...