2017-04-06 209 views
1

我的PHP登录系统使用MYSQL登录时使用空值。这是为什么发生?Php登录系统-null值登录

session_start(); 

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


mysql_connect("localhost" , "root" , ""); 
mysql_select_db("deirastaff"); 

$result = mysql_query("SELECT * FROM users WHERE username ='$username' and password = '$password' ") 

    or die("Login failed" .mysql_error()); 

$row = mysql_fetch_array($result); 

if ($row['username']==$username && $row['password']==$password) { 

    $_SESSION['username']=$username; 

    echo '<script type="text/javascript"> window.open("staff.php","_self");</script>'; 

    //header("location:staff.php"); 

    //echo "Login Successfull "."Welcome ".$row['username'];  

}else { 

    echo '<script type="text/javascript"> 
    window.alert("Login failed!"); 
    window.open("index.php","_self"); 
    </script>'; 

    //header("location:index.php"); 
    //echo "Login Failed !"; 
    break; 
} 
+0

您应该使用mysqli,而不是mysql,因为它现在已被弃用,它也非常不安全。您还应该使用mysqli_real_escape_string()函数来防止SQL注入。 I.E. $ username = mysqli_real_escape_string($ _ POST ['username']; –

+0

通过在每行之前添加四个空格来设置您的代码的格式,然后它将显示更清晰。 – glaux

回答

1

MySQLi的是更好地使用...

但是,如果你想使用MySQL那就试试这个代码..

if(isset($submit)) //name of your submit button 
{ 
    $result = mysql_query("SELECT * FROM users WHERE username ='$username' and password = '$password' ") or die("Login failed" .mysql_error()); 
    if(mysql_num_rows($rs)<1) 
    { 
     echo "Login Failed" ; 
    } 
    else 
    { 
     $_SESSION[username]=$username; 
    } 
} 
0

你可以只检查有价值观进行查询之前, 。

if (!empty($row['username']) && !empty($row['password'])) { ... } 

此外,您可以设置用户名和密码表,不允许空值。