我正在开发一个用于测试的网站,其中包含针对用户的不同访问级别的日志页面,该站点与具有3列的MySQL数据库连接
用户|密码|电平(1/2)
代码会过滤掉db中的特定条目,但它没有重定向到特定页面。我使用echo
进行了测试,但在$count
显示为0。请帮我解决这个问题,我将在启动阶段使用mysqli
。
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST"){
$username = $_POST['username'];
$password = $_POST['password'];
$conn = mysql_connect('localhost','root','');
$db = mysql_select_db('udb',$conn);
$sql = "SELECT * FROM logins WHERE user ='".$username."' AND password = '".$password."'";
$result = mysql_query($sql,$conn);
echo $result;
$count = mysql_num_rows($result);
if ($count==1) {
$_SESSION['login_user']=$username;
while ($row = mysql_fetch_array($result)){
if ($row['level'] == '2') {
header("home2.php");
} else {
header("home1.php");
}
}
}
答案 0 :(得分:1)
您的echo $result;
会阻止代码中的任何进一步重定向。这是因为重定向是使用标头来管理的...但是由于您输出了一些数据...标头无法管理。
答案 1 :(得分:1)
无需在mysql_query()
中提供连接变量,在标题函数中忘记传递location
$sql = "SELECT * FROM logins WHERE user ='".$username."' AND password = '".$password."'";
$result = mysql_query($sql);
//echo $result;
$count = mysql_num_rows($result);
if ($count==1) {
$_SESSION['login_user']=$username;
while ($row = mysql_fetch_array($result))
{
if ($row['level'] == '2')
{
header("location:home2.php");
} else {
header("location:home1.php");
}
}
}
答案 2 :(得分:1)
如果您希望重定向工作,则需要使用location
。
if ($row['level'] == '2') {
header("location: home2.php");
} else {
header("location: home1.php");
}
Your script is at risk for SQL Injection.
如果可以,你应该stop using mysql_*
functions。它们不再被维护,而是officially deprecated。请转而了解prepared statements,并考虑使用PDO,it's really not hard。
最后,你应该use the proper methods to hash passwords with PHP。您处理登录的方式是非常不安全。
答案 3 :(得分:-1)
将用户和密码放入后面的刻度线(键1左侧的撇号)