如何使用一个公共字段(如
)连接3个表很常见 在这里我分配了
为3个不同的用户提供权利,例如corres,校长和工作人员登录时的权利。 现在,当他们登录时,应该识别用户并将他们带到他们的页面..
答案 0 :(得分:1)
唯一的连接是用户名(和密码?),除非c_id,p_id和s_id都是相同的ID?
你不能加入角色看见,因为它们在每个表中是不同的,除了完全愚蠢的角色=表1中的1相当于table2中的role = 2.
你是说工会吗?如你所愿User Password Role
Fred Fr3d 1
Fred ??? 2
Fred ??? 3
不确定您使用此架构尝试实现的目标,但它在书中的每个规则附近都有所突破,并且似乎无法满足您的需求....
根据您的评论,您可能会看到一种方式。
是
Users (UserID, UserName, Password etc) Key UserID
Roles (RoleID, RoleName etc) Key RoleID
UserRoles(UserID,RoleID) Key UserID,RoleID
你需要学习一些关于数据库特别是规范化的知识,前三种形式应该适用于大多数事情。
然后
Select UserName, Password,RoleName From Users
inner join UserRoles on Users.UserID = UserRoles.UserID
inner join Roles on UserRoles.RoleID = Roles.RoleId
等等变得可能和有效。
答案 1 :(得分:1)
您应该有一个包含以下列的表:
id(唯一,主要),用户名,密码,角色(INT,将根据用户为主,工作人员或相关人员分配1-3)
另外
如果您想要这样设置,可以使用另一个名为roles的表:
id(唯一的,主要的),标题(标题的选项将是委托人,职员或者对应的)
当用户登录时,只需执行类似
的操作if($role == 1){
// redirect to principal page
}
elseif($role == 2){
// redirect to staff page
}
elseif($role == 3){
// redirect to corres page
}
我不确定,但我相信这也会有效。试试这个查询。
(SELECT '1' AS role FROM table1 WHERE username = $username AND password = $password)
UNION ALL
(SELECT '2' AS role FROM table2 WHERE username = $username AND password = $password)
UNION ALL
(SELECT '3' AS role FROM table3 WHERE username = $username AND password = $password)
假设用户只位于这三个表中的一个表中,那么它应该与用户名和密码匹配,并找出用户来自哪个表。然后你可以使用
取出角色$role = $row['role'];
如果用户名/密码组合不正确,则$ role将为空,或者您可以获取行数[使用$ iscorrectuser = mysql_num_rows($ query)],其中匹配且行数为0。然后,您可以重定向尝试使用“不成功登录”错误消息登录的用户。
答案 2 :(得分:0)
会话和包含函数:
session_start();
include("config.php");
if(isset($_POST['T_UserName']) && isset($_POST['T_Password']) && !empty($_POST['T_UserName']) && !empty($_POST['T_Password']))
{
从表单发送的用户名和密码:
$T_UserName=$_POST['T_UserName'];
$T_Password=$_POST['T_Password'];
保护MySQL注入:
$T_UserName = stripslashes($T_UserName);
$T_Password = stripslashes($T_Password);
$T_UserName= mysql_real_escape_string($T_UserName);
$T_Password = mysql_real_escape_string($T_Password);
$sql="SELECT * FROM login WHERE username='$T_UserName' and password='$T_Password'"; $result=mysql_query($sql);
Mysql_num_row正在计算表格行:
$count=mysql_num_rows($result);
如果结果与$ T_UserName和$ T_Password匹配,则表行必须为1行:
if($count==1)
{
注册$ T_UserName,$ T_Password并重定向到文件“correspindex.php”:
session_register("T_UserName");
session_register("T_Password");
重定向到错误页面或显示错误消息:
if(isset($_POST['emp_role'])
{
$userinfo = mysql_fetch_assoc($sql);
$emp_role = $userinfo['emp_role'];
if($emp_role == 1)
{
header("location:corrrespondindex.php");
}
elseif($emp_role == 2 )
{
header("location:principalindex.php");
}
elseif($emp_role == 3)
{
header("location:staffindex.php");
}
closes out if the user DOES exist:
header("location:loginhome.php");
}
else
{
echo "Wrong Username or Password";
}
}
}
php is closed
this is the php code im getting so many error
i create 1table with id,username,password and role(ENUM,values as'1','2','3' –
any else shud i do in the code???