问题描述
这是我的登录过程,我想要一个相同的仪表板,但每个用户的数据都不同。但是我一直坚持创建uid变量来获取每个登录用户的数据。
if(isset($_POST['login_btn']))
{
$email_login=$_POST['email'];
$password_login=$_POST['password'];
$admin="admin";
$co_admin="co_admin";
$query = "SELECT * FROM registered_users WHERE email='$email_login' AND password='$password_login' AND usertype='$admin' ";
$query_run = MysqLi_query($connection,$query);
$query_co = "SELECT * FROM registered_users WHERE email='$email_login' AND password='$password_login' AND usertype='$co_admin' ";
$query_run_co = MysqLi_query($connection,$query_co);
if(MysqLi_fetch_array($query_run))
{
$_SESSION['username'] = $email_login;
$_SESSION['usertype'] = $admin;
header('Location: index.PHP');
}
else if(MysqLi_fetch_array($query_run_co))
{
$_SESSION['username'] = $email_login;
$_SESSION['usertype'] = $co_admin;
header('Location: company_view.PHP');
}
else
{
$_SESSION['status'] = 'Email ID / Password / User Type is Invalid';
header('Location: login.PHP');
}
}
以上源代码用于分隔Co-admin和Admin。现在,只要任何Co-Admin登录到门户网站,他都应该获得自己的详细信息,我想知道我必须调用哪个函数,或者我应该如何声明一个uid变量来为每个当前登录用户获取数据表。我找到了其他一些源代码,但这些源代码与我无关,因此我对如何使用这些代码修复它感到困惑。有人可以用我的代码吗?
解决方法
我想您是在问如何从mysql表中获取当前用户的数据。是的,执行此操作的标准方法是通过从注册用户表中拉出的每个用户的唯一ID,将其存储在会话中,然后在其他表中引用此用户并按此ID进行过滤。我不建议在会话中存储此表中的任何其他内容,因为ID可能会更强地保证不可变性。
例如,如果您有一个每个用户最近访问过的页面的表格,则可以通过以下方式获得此信息:
$query = 'SELECT * from recently_visited WHERE user_id = ?';
$stmt = mysqli_prepare($query);
$stmt->bind_param("i",$_SESSION['user_id']);
$stmt->execute();
您可以查看mysqli文档,了解如何从执行的语句中提取所需的内容。我已经显示了此预准备语句的示例,因此您也可以了解如何避免SQL注入。
您可能希望研究使用外键来加强此连接。