2

希望我能对过去几天一直坚持的登录有所帮助。

基本上它是登录将登录用户,但每次都会转到同一页面。我想要它做的是:如果用户是管理员,把那个人带到管理页面。如果是用户,则到用户页面。

我已经在数据库中设置了一个用户类型字段并且硬编码了 2 个用户,其中一个具有 admin 作为用户类型,另一个作为用户。

<?php
session_start();
$host="xxxxxxxxxxxxx"; // Host name 
$username="xxxxxxx"; // Mysql username 
$password="xxxxxxx"; // Mysql password 
$db_name="xxxxxxxx"; // Database name 
$tbl_name="member"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// username and password sent from form 
$username=$_POST['username']; 
$password=$_POST['password'];

// To protect MySQL injection (more detail about MySQL injection)
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);

$sql="SELECT * FROM $tbl_name WHERE username='$username' and password='$password'";
$result=mysql_query($sql);
$num_results = mysql_num_rows($result);
$array = mysql_fetch_array($result);
$_SESSION['username']=$array['username'];
$_SESSION['password']=$array['password'];
$_SESSION['usertype']=$array['usertype'];

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $username and $password, table row must be 1 row

if($count==1){

$_SESSION['username']=$_POST['username'];
$_SESSION['password']=$_POST['password'];

if ($array['usertype']=="user")
{ header ("location: userpage.php"); }
     else if ($array['usertype']=="admin");
{ header ("location: adminpage.php"); }
   } else {
  echo "Wrong user or password";
  }
?>     

以上是我用过的最新代码。每次我登录时,它似乎都会跳过第一个标题,直接进入第二个标题。我什至在登录后打印了会话,它确实从表中获取了用户类型。

没有更多关于如何解决此问题的线索。

4

2 回答 2

2

不确定它是否是导致您的问题的原因,但是您在此处末尾有一个需要删除的杂散分号:

else if ($array['usertype']=="admin");
于 2012-04-08T19:38:25.643 回答
1

我可以看到 2 个错误

  1. }使用后使用双header ("location: adminpage.php");
  2. 分号;else if ($array['usertype']=="admin")

解决方案

if ($count == 1) {

    $_SESSION ['username'] = $_POST ['username'];
    $_SESSION ['password'] = $_POST ['password'];

    if ($array ['usertype'] == "user") {
        header ( "location: userpage.php" );
    } else if ($array ['usertype'] == "admin") {
        header ( "location: adminpage.php" );
    } else {
        echo "Wrong user or password";
    }

}
于 2012-04-08T19:48:26.757 回答