基本上我想做的是创建一个登录系统,其中有两种不同类型的用户。每个用户都有一个 ID、用户名、密码和角色。角色决定了他们是讲师还是学生(总体上将决定给出的观点)。我让登录正常工作,用户可以登录并访问名为 welcome.php 的页面。当讲师登录时,我需要一个包含文件/lecturer.php 来打开,当学生登录时,我需要一个名为/student.php 的文件来打开。下面是我的代码:
//表格//
CREATE TABLE `admin` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(30) DEFAULT NULL,
`passcode` varchar(30) DEFAULT NULL,
`role` varchar(3) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
//PHP//
<?php
include("config.php");
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST")
{
// username and password sent from form
$myusername=addslashes($_POST['username']);
$mypassword=addslashes($_POST['password']);
$sql="SELECT id FROM admin WHERE username='$myusername' and passcode='$mypassword'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
$active=$row['active'];
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1)
{
session_register("myusername");
$_SESSION['login_user']=$myusername;
header("location: welcome.php");
}
else
{
$error="Your Login Name or Password is invalid";
}
}
?>
提前感谢您的帮助
最佳答案
首先 - 请不要再使用 mysql_* 函数 - 它们已被正式弃用 - 查看 php.net 网站上的红框
你可以使用的替代品是 mysqli 或 PDO,它们非常相似,如果你觉得更舒服的话,它们甚至都有过程调用,尽管我推荐客观的方法。
其次 - 使用适当的转义。请看http://php.net/manual/en/mysqli.quickstart.prepared-statements.php有关可防止您易受攻击的 SQL 注入(inject)的准备语句的信息。 (对于 PDO:http://php.net/manual/en/pdo.prepared-statements.php)
第三个 - 您问题的解决方案,将“角色”列添加到您的陈述中,如果在下面显示,则添加一个附加项
if($row["role"] == "lecturer") {
include_once('lecturer.php');
} else {
include_once('student.php');
}
关于PHP登录-使用SQL语句检测用户类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20202284/