Php 检查用户名和密码

Php 检查用户名和密码,php,Php,我正在尝试创建一个php用户名和密码检查器,但无法使其工作,以下是代码: <?php $servername = "iphere"; $user = "userhere"; $pass = "passwordhere"; $dbname = "databasehere"; try { $username = $_GET['username']; $password = $_GET['password']; $conn = new PDO("mysql:host=$

我正在尝试创建一个php用户名和密码检查器,但无法使其工作,以下是代码:

<?php
$servername = "iphere";
$user = "userhere";
$pass = "passwordhere";
$dbname = "databasehere";

try {
    $username = $_GET['username'];
    $password = $_GET['password'];
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $user, $pass);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare("SELECT username FROM users WHERE username = :name AND password = :password");
    $stmt->bindParam(':name', $username);
    $stmt->bindParam(':password', $password);
    $stmt->execute();
    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);

    if($username == $result && $password == $result)
    {
        echo "OK";
    }
    else
    {
        echo "not OK";
    }


}
catch(PDOException $e) {
    echo "Error";
}
$conn = null;
?>


它没有给出任何错误或任何东西。它只是呼应OK,就这样。顺便说一句,我在另一个项目中使用GET。因此,我稍后将对其进行更改。

除非出现错误,否则:

将始终为布尔值
true

然后执行此测试:

非空字符串将始终等于
true



计算从数据库返回的行数。

忽略以下事实:

  • 你的密码是明文的
  • 您无缘无故地使用bindParam
然后我将使用的代码如下(没有测试,小心):


危险:“根本不散列”是;你需要知道你的用户的密码。也许是时候打印($result)?永远不要用纯文本存储密码,阅读手册
setFetchMode
做什么和返回什么作为旁白,我建议你看看关于安全密码存储的问题。谢谢,我把它修好了:)我对这个完全不熟悉。谢谢,现在它开始工作了:)
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
if($username == $result && $password == $result)
$stmt = $pdo->prepare("SELECT COUNT(*) AS user_exists FROM users WHERE username = :username AND password = :password");

$stmt->execute([':username' => $username, ':password' => $password]);

// This will return the value of first column, our query will always produce 1 row with 1 column
$exists = $stmt->fetchColumn(); 

// If you are using MySQL ND (native driver), then the above result will be 
// accurately represented as an integer so we can use it in an if() statement like this
if($exists)
{
    echo "OK!";
}
else
{
    echo "Not ok!";
}