PHP - 比较用户输入的数据库中的数据

时间:2015-05-01 11:12:17

标签: php mysql sql

我有一个简单的联系表单,它将两个变量发布到PHP,然后我将其插入到数据库中。

<?php
    $username = $_POST["username"];
    $password = $_POST["password"];
    $db->query("INSERT INTO users (username,password) VALUES ('$username', '$password')");
?>

我现在已经创建了login.php,我希望用户能够使用存储在数据库中的信息进行登录。我并不担心安全问题,我只是想让自己放松一下。允许用户使用用户名和密码登录的最简单方法是什么?

2 个答案:

答案 0 :(得分:0)

假设您不需要任何安全性。我会做这样的事情:

$db->query("SELECT * from `users` where username = :username AND password = :password");

用用户输入替换用户名和密码。

警告:请勿在生产环境中使用此功能。这是SQL注入漏洞。

您执行查询,检查查询行数,如果它等于1,则表示有一个用户usernamepassword。如果它等于0就意味着,它就找不到了。然后,您可以显示错误或其他任何内容。

伪代码中有这样的东西:

if(rowCount == 1) {
   // log the user in
}

// Invalid credentials. Print some errors.

如果您需要安全性,请使用PDO或mysqli功能。因为mysql_*函数已弃用且不再维护。并考虑使用password_hash API对您的密码进行哈希处理。

答案 1 :(得分:0)

 error_reporting(0);
  session_start();
  include_once '../example.php';

  /***************************** Step 2 ****************************/
  if(isset($_REQUEST['admsubmit']))
  {

      $result=executeQuery("select * from adminlogin where admname='".htmlspecialchars($_REQUEST['name'],ENT_QUOTES)."' and admpassword='".md5(htmlspecialchars($_REQUEST['password'],ENT_QUOTES))."'");

     // $result=mysqli_query("select * from adminlogin where admname='".htmlspecialchars($_REQUEST['name'])."' and admpassword='".md5(htmlspecialchars($_REQUEST['password']))."'");
      if(mysqli_num_rows($result)>0)
      {

          $r=mysqli_fetch_array($result);
          if(strcmp($r['admpassword'],md5(htmlspecialchars($_REQUEST['password'],ENT_QUOTES)))==0)
          {
              $_SESSION['admname']=htmlspecialchars_decode($r['admname'],ENT_QUOTES);

              header('Location: admwelcome.php');
          }else
      {
         echo "Check Your user name and Password.";

      }

      }
      else
      {
          echo "Check Your user name and Password.";

      }
      closedb();
  }

浏览上面的代码。通过登录凭据表单检查登录页面重定向的简单示例。