我有一个login.php并在用户的电子邮件和密码匹配时创建一个会话,然后我会创建SESSION varibles以供进一步使用
<?php
require_once '../php_includes/db_connects.php';
require_once '../php_includes/core_includes.php';
if(isset($_POST['email']) && isset($_POST['pasw'])){
$e=$mysqli->real_escape_string(htmlentities($_POST['email']));
$p=md5($mysqli->real_escape_string(htmlentities($_POST['pasw'])));
$result=$mysqli->query("SELECT * FROM `user_info` WHERE `email`='$e' AND `password`='$p' LIMIT 1");
$result->num_rows;
if($result->num_rows ==1){
while($obj=$result->fetch_object())
{
$_SESSION['id']=$obj->id;
$_SESSION['firstname']=$obj->firstname;
$_SESSION['lastname']=$obj->lastname;
$_SESSION['email']=$obj->email;
$_SESSION['college']=$obj->college;
$_SESSION['profile_pic']=$obj->profile_pic;
}
}
}
?>
保留大量的会话变量来保存登录用户的基本信息,或者每次使用它时只从数据库中检索这些信息是很好的吗?就像我需要使用firstname 10次然后我必须从数据库中获取10次信息?
答案 0 :(得分:1)
我喜欢使用$_SESSION
来省去一遍又一遍地抽取数据的麻烦。由于您必须在登录时提取用户记录,因此最好将其拉入其他数据,然后将其粘贴到会话变量中。
while
来登录。我希望你的系统足够智能,只允许对一组给定的凭证进行一次身份验证。
答案 1 :(得分:0)
我认为如果用户更改了用户名或电子邮件地址,您仍会在会话中获得旧信息。 所以我觉得每次使用它们都会更好。
答案 2 :(得分:0)
在会议和性能方面,基本上只有一个重要的步骤。
主要是使用会话。 PHP的会话是为了不允许执行并行请求而构建的,因此在使用大量AJAX请求的站点上使用PHP会话时会产生明显的影响。如果您必须将用户登录到站点,则无法避免使用类似会话的内容,但是您应该知道如何使用session_write_close()
尽早释放会话锁。
影响较小的是,您拥有的会话数据越多,读取和写入的速度就越慢。不要滥用会话作为缓存,即不要向其写入大量数据。巨大的将是序列化的100 KB和更多的数据。您的一小部分用户信息根本不会影响性能。