我有2个表的数据库。学生和教授。我创建了一个登录表,并且有来自学生和教授的所有电子邮件和密码。我想创建该学生尝试登录,将其发送给他一些student.php,当profesor尝试登录时,将发送给他profesor.php
我尝试使用此代码,但它总是返回给我1.所以这不是很好的选择..
if(isset($_POST['Submit'])){
$sql= "SELECT COUNT (*) FROM `students` AND 'Profesors' WHERE `username` = :username and `password` = :password ";
$result = $connection->prepare($sql);
$result->bindParam(":username" ,$_POST['username']);
$result->bindParam(":password" ,$_POST['password']);
$result->execute();
$num=$result->rowCount();
if($num > 0){
header("location:index.php");
}else{
header("location:login.php");
}
我需要一些想法,如何更改我的数据库或此登录代码。
答案 0 :(得分:0)
以下是您想要如何构建此内容的想法 有一个表定义帐户类型的表,也许
account_type_id | account_type_desc | account_type_dest
第一个是唯一键,第二个是“教授”“学生”或您添加的任何其他内容,第三个是您要发送该类型用户的位置。 “student.php”,“professor.php”等
然后你的用户表就像
account_id | account_type_id | email | password
然后,您可以在用户表中查询与尝试登录的用户匹配的用户,验证他们的密码,获取帐户类型ID并将其转换为帐户类型表,然后您可以根据该信息采取行动
答案 1 :(得分:0)
您可以使用子查询和union语句执行此操作。您可以使用union语句
从两者中创建一个表$subquery = "SELECT username,password FROM `students` UNION SELECT username,password FROM `Profesors`";
然后使用子查询作为源表运行查询
$sql= "SELECT * FROM (" . $subquery . ") WHERE `username` = :username and `password` = :password ";
然后使用rowCount确定返回的行数。
答案 2 :(得分:0)
您希望使用php会话或向用户发出cookie以获得正确且安全的用户登录。
在您的查询中我认为您想要:
$sql= "SELECT COUNT (*) FROM `students` AND 'Profesors' WHERE `username` = ".$_POST['username']." and `password` = ".$_POST['password']." ";
答案 3 :(得分:0)
我个人不会让教授和学生使用相同的登录信息。现在回答这个问题我会将查询更改为以下内容:
SELECT user_type FROM `login_table`
WHERE `username` = :username AND `password` = :password
一旦查询返回结果,我会检查user_type字段并相应地重定向。
$num=$result->rowCount();
if($num > 0){
$data=$result->fetch();
if($data['professor']){
header("location: professor.php");
}else{
header("location: student.php");
}
}else{
header("location:login.php");
}