使用用户和密码访问PHP中的sql

时间:2015-12-01 22:22:19

标签: php mysql

我的代码有一个小问题 它允许我访问数据库

1-即使密码字段为空 2 - 如果id不在用户表中,那就自己!! (例如:3)

但如果我输入一个存在的ID,它运作良好,我必须输入正确的传递

这是我的代码:

index.php:

        <form action="login1.php" action ="get">
        user id <input type="text" name="uid">
        <br>
        password <input type="password" name="pass">
        <br>
        <input type="submit" value ="login ">

        </form>
        <?php
        session_start();
        ?>

login1.php

    <?php
    session_start();
   $uid=@$_GET['uid'];
   $pass = @$_GET['pass'];
   $link = mysql_connect('localhost','root','') or die ('cannot connect');
   mysql_select_db('mydb');
   $query = "select upassword , id from user where id=".$uid;
   $result=  mysql_query($query) or die ('cannot run query');
   while ( $row = mysql_fetch_array($result))
   {
       if  (($row{'upassword'} != $pass ))
       {
           echo " pass wrong ";
           mysql_free_result($result);
           mysql_close($link);
           exit();
       }
   }
   mysql_free_result($result);
   $query="select * from address ";
   $result=  mysql_query($query);
   while ($row=  mysql_fetch_array($result))
   {
       echo "user : ".$row{'pname'}."<br>";
   }
   mysql_free_result($result);
   mysql_close($link);

    ?>

这是我的db:

  [DB][1]

此致,,

1 个答案:

答案 0 :(得分:0)

首先,PHP数组访问器是方括号,而不是大括号。

其次,您的代码应该假设密码错误并且默认情况下禁止访问所有密码,并且只有在密码正确时才允许访问。出于自动防故障原因。

例如,

$authenticated = false;
while ( $row = mysql_fetch_array($result))
{
   if  (($row['upassword'] == $pass )) {
     $authenticated = true;
     break;
   }
}

if(!$authenticated) {
  echo " pass wrong ";
  exit();
} else {

  ....[do you stuff here]....
}

Thrid,php mysql已被弃用了一段时间。你应该使用mysqli或PDO。