簡體   English   中英

使用select exist()將postgres中的密碼與php進行比較

[英]Using select exists () to compare passwords in postgres with php

我正在使用以下postgresql命令來嘗試檢索給定電子郵件/哈希pw組合的記錄。 我將密碼和電子郵件存儲在表中,該查詢似乎已成功拉出f或t進行了密碼檢查,但php腳本似乎無法處理輸出。

PHP:

    // 2. Check Passwords
    $sql = "select exists(select 1 from users where (email='".$email."') AND (pw = '".$password."'));";
    echo $sql . "<br>";

    $ret = pg_query($db, $sql);
       if(!$ret){
          echo pg_last_error($db);
          exit;
       }
    if($ret === true){
            echo "Login Successful";

    }else{
            $errors = $errors . "Passwords do not match. Please try again. <br>";
    }

當前輸出sql查詢

select exists(select 1 from users where (email='alex@email.com') AND (pw = '8a8bA3anjqV.g'));

哪個返回

     exists
--------
 t
(1 row)

t或f成功。

我似乎無法弄清楚為什么這與我的php腳本不兼容。 (對於所有結果(t或f)都會失敗)

任何想法將不勝感激。

啊哈!

我對自己的PHP感到愚蠢。

我對代碼進行了如下修改,現在看來效果很好。

    // 2. Check Passwords
    $sql = "select exists(select 1 from users where (email='".$email."') AND (pw = '".$password."'));";
    echo $sql . "<br>";

    $ret = pg_query($db, $sql);
       if(!$ret){
          echo pg_last_error($db);
          exit;
       }
    $bool = pg_fetch_row($ret);
    echo $bool['0'] . "<br>";
    if($bool['0'] === "t"){
            echo "Login Successful";

    }else{
            $errors = $errors . "Passwords do not match. Please try again. <br>";
    }

布爾值似乎不容易獲得,您需要從返回結果中提取數組行,然后訪問第零個元素以獲取t / f。 另外,它似乎不是布爾值(即使值是“ t”,也=== true失敗)。

希望這對某人有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM