2016-01-13 67 views
-1

我有这样的代码:登录的连接任何密码或用户名是:

if($submit) 
{ 
    $first=$_POST['first']; 
    $password=$_POST['password']; 
    $db = mysql_connect("localhost", "root",""); 
    mysql_select_db("learndb",$db); 
    $sql = "select * from admin where username = '" . $first . "' and password = '". $password . "'"; 
    $result = mysql_query($sql); 


    if($result>0) 
{ 
    echo "LOGGED IN!!"; 
} 
else 
{ 
    echo "ERROR!!!"; 
} 

和我的HTML表单:

<form method="post" action="input-copy.php"> 
First name:<input type="Text" name="first" placeholder="ENTER YOUR NAME"><br> 
password:<input type="password" name="password" placeholder="ENTER PASSWORD"><br> 
<input type="submit" name="submit" value="Enter information"></form> 

但无论我进入名字和密码,它会显示登录!

+2

使用mysql_num_rows == 1,检查和使用的mysqli或PDO –

+0

@SugumarVenkatesan由于您的评论可能会解决这个问题,为什么不你提交它作为答案? – Peter

+0

不要使用大于0来检查它是否返回多于一行而不是安全问题 –

回答

2

防止这里您$result变量将存储mysql_query返回值,这将如果你的MySQL查询正确真实。这也是你的逻辑将登录的原因,无论密码或用户名是

您需要使用mysql_num_rows检查结果计数。

试试这个:

$result = mysql_query($sql); 
$num_rows = mysql_num_rows($result);//Check database table data exits... 
if($num_rows == 1){ 
//You stuff here 
} 

警告

该扩展是PHP 5.5.0过时,它是在PHP 7.0.0 删除。相反,应该使用MySQLiPDO_MySQL扩展名。

4

mysql_query

对于SELECT,SHOW,描述,解释等语句返回的结果集 ,请求mysql_query()成功返回的资源,或 错误FALSE。

使用mysql_num_rows()

检索行从结果集数。

$result = mysql_query($sql); 
$row = mysql_num_rows($result); 
if ($row > 0) { 
    echo "LOGGED IN!!"; 
} else { 
    echo "ERROR!!!"; 
} 

注意

MySQL是depricated而是使用库MySQLi或PDO

不要存储明文口令到数据库使用散列TECHNIC

http://php.net/manual/en/function.password-hash.php

http://php.net/manual/en/faq.passwords.php

从SQL注入检查How can I prevent SQL injection in PHP?

-1

下面是一个简单的登录密码,你可以尝试

//login query 
$sql="SELECT password FROM login WHERE user_name='$username'"; 
$result=mysqli_query($conn ,$sql); 

// Mysql_num_row is counting table row 
$count = mysqli_num_rows($result); 

if($count == 1) 
{ 
    // Associative array 
    $row=mysqli_fetch_assoc($result); 

    if ($password == $row["password"]) { 
     $_SESSION['user'] = $username; 
     echo "Loggedin"; 
     mysqli_free_result($result); 
    } 
    else 
    { 
     echo "Not a valid user"; 
    } 
} 
else 
{ 
    $_SESSION["error_log"] = "No such user exist!"; 
    header("location:../index.php"); 
    die($_SESSION["error_log"]); 
} 
相关问题