使用PHP和&amp ;;为用户提供不同的访问级别MySQL的

时间:2015-06-24 13:01:50

标签: php mysql

我正在开发一个用于测试的网站,其中包含针对用户的不同访问级别的日志页面,该站点与具有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");
        }
    }
    }   

4 个答案:

答案 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左侧的撇号)