2017-07-24 163 views
-1

我找不到任何解決方案,我無法登錄。它顯示{「成功」:0,「消息」:「登錄失敗」}這是失敗。我能知道代碼有什麼問題嗎?非常感謝您的幫助。無法登錄PDO

的login.php

<?php 

require("config.php"); 

if(!empty($_POST)){ 


    $query = "SELECT * FROM lecturer WHERE lecID = :lecID"; 

    $query_params=array(':lecID'=> $_POST['lecID']); 

    try{ 
     $stmt=$db->prepare($query); 
     $result=$stmt->execute($query_params); 

    }catch(PDOException $ex){ 
     $response["success"]=0; 
     $response["message"]="Database Error1. Please try again"; 
     die(json_encode($response)); 
     } 

     $validate_info=false; 
     //fetching rows from query 
      $row = $stmt->fetch(); 

     if ($row){ 
      if($_POST['lecPass'] === $row['lecPass']){ 
       $login_ok==true; 

      } 

     } 
     if($login_ok){ 
      //userLogin 
      $response['success']=1; 
      $response['message']="Login Successful"; 
      die(json_encode($response)); 

     }else{ 
      $response["success"]=0; 
       $response["message"]= "Login Failure"; 
       die(json_encode($response)); 
     } 
    } 

    } 
+0

用戶密碼在數據庫表中是否加密?如果是,那麼你需要解密它並檢查輸入的密碼的POST值。並且,將'$ login_ok == true;'更改爲'$ login_ok = true'; –

+0

您需要使用'='賦值運算符而不是比較運算符'=='$ login_ok == true; – JYoThI

+0

非常感謝,現在有效。 – Lawrence

回答

0

你需要使用,而不是=Assignment operatorcomparison operator==

$login_ok==true; 

更改爲

$login_ok=true; 
+0

非常感謝。 – Lawrence

+0

很高興幫助你:) – JYoThI

0

嘗試刪除大括號( 「{」 和「 }「)從PDO連接字符串-

$db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options); 

當PHP替換雙引號字符串變量名稱與變量,它不影響大括號,因此您的連接字符串結尾看起來像這 -

"mysql:host={localhost};dbname={fypesyst_evaluation};charset=utf8" 

完成大括號,使主機和數據庫名稱不正確