使用PHP检查用户登录表单

时间:2014-03-25 20:26:35

标签: php jquery html

我对这种php语言有点新意。我似乎在检查用户的数据库中的表时遇到问题。它只是一直成功,即使它不是正确的密码。它只是去" admin / index-admin.php"。请帮帮我..

我的代码:

<form action="" method="POST">
      <table align="center">
              <tr>
                      <td align="center"><h2>Administrator Login</h2></td>
              </tr>
              <tr>
                      <td align="left">Username : </td>
              </tr>
              <tr>
                      <td><input type="text" name="username" /></td>
              </tr>
              <tr>
                      <td align="left">Password : </td>
              </tr>
              <tr>
                      <td><input type="password" name="password" /></td>
              </tr>
              <tr>
                      <td align="center"><input type="submit" name="submit" value="Login" /></td>
              </tr>
      </table>
      </form>

      <?php
            $user = $_REQUEST['username'];
            $pass = $_REQUEST['password'];

            $query = "SELECT * FROM users WHERE username=".$user." AND password=".$pass."";
            $result = mysql_query($query);
            if(count($result)>0)
            {  
                    header('Location: admin/index-admin.php');

                    echo "<script type='text/javascript'>";
                    echo "alert('You are logged In Successfully.')";
                    echo "</script>";
            }
            else
            {
                    echo "Invalid Username or Password.";
            }
       ?>

如果我使用jquery mobile与php会有什么不同我的问题?这会是同样的问题吗?

感谢您的帮助...

哦,我的数据库有点像这样:

<?php
$conn = mysql_connect("","",""); ==> //i just left them blank in purpose..
if(!$conn)
{
    echo mysql_error();
}

$db = mysql_select_db("",$conn); ==> //i just left them blank in purpose..
if(!$db)
{
    echo mysql_error();
}
?> 

2 个答案:

答案 0 :(得分:2)

你需要在查询中将变量放在单引号中:(也使用mysqli_real_escape_string来防止sql注入)

$query = "SELECT * FROM users WHERE username='".mysqli_real_escape_string($user)."' AND password='".mysqli_real_escape_string($pass)."'";

您需要从结果集中获取行:

$result = mysqli_query($query);
$row = mysqli_fetch_array($result);
if (!empty($row)) {
  ..
}

答案 1 :(得分:0)

首先,我建议您使用不同的密码存储方法。有些贴在我的脚注中。

试试这个适用于我的mysqli_*方法。

<form action="" method="POST">
      <table align="center">
              <tr>
                      <td align="center"><h2>Login</h2></td>
              </tr>
              <tr>
                      <td align="left">Username: </td>
              </tr>
              <tr>
                      <td><input type="text" name="username" /></td>
              </tr>
              <tr>
                      <td align="left">Password: </td>
              </tr>
              <tr>
                      <td><input type="password" name="password" /></td>
              </tr>
              <tr>
                      <td align="center"><input type="submit" name="submit" value="Login" /></td>
              </tr>
      </table>
      </form>

<?php
DEFINE ('DB_USER', 'xxx');
DEFINE ('DB_PASSWORD', 'xxx');  
DEFINE ('DB_HOST', 'xxx');
DEFINE ('DB_NAME', 'xxx');

$mysqli = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) 
OR die("could not connect");

if(isset($_POST['submit'])){

    $user = mysqli_real_escape_string($mysqli,$_REQUEST['username']);
    $pass = mysqli_real_escape_string($mysqli,$_REQUEST['password']);

    $query = "SELECT * FROM users WHERE username='$user' AND password='$pass'";
    $result = mysqli_query($mysqli,$query);

$row = mysqli_fetch_array($result);
if($row["username"]==$user && $row["password"]==$pass){
    echo "You are a validated user.";

    // header('Location: admin/index-admin.php');
    }

else{
    die("Sorry Jack");
    }

} // brace for if(isset($_POST['submit']))
?>

添加方法:

使用“YES”或“NO”作为值创建名为approved的列,以便暂时拒绝对标记为“NO”的用户进行访问。

$query = "SELECT * FROM users WHERE username='$user' AND password='$pass' AND approved='YES'";

<强>脚注:

密码

我注意到您以纯文本格式存储密码。不建议这样做。

使用以下其中一项:

其他链接:


mysql_*函数弃用通知:

http://www.php.net/manual/en/intro.mysql.php

从PHP 5.5.0开始,不推荐使用此扩展,不建议用于编写新代码,因为将来会删除它。相反,应使用mysqliPDO_MySQL扩展名。在选择MySQL API时,另请参阅MySQL API Overview以获得进一步的帮助。

这些功能允许您访问MySQL数据库服务器。有关MySQL的更多信息,请访问»http://www.mysql.com/

可以在»http://dev.mysql.com/doc/找到MySQL的文档。

相关问题