2017-02-17 66 views
0

這是我的login.phpPDO - 查詢上WAMP但Web服務器上的工作

<?php 
error_reporting(E_ALL); 
ini_set('display_errors',1); 
include("config.php"); 
include("userClass.php"); 
$userClass = new userClass(); 

$errorMsgReg = ''; 
$errorMsgLogin = ''; 
/* Login Form */ 

if (!empty($_POST['loginSubmit'])) { 
    $usernameEmail = $_POST['usernameEmail']; 
    $password = $_POST['password']; 

    if (strlen(trim($usernameEmail)) > 1 && strlen(trim($password)) > 1) { 

     $id = $userClass->userLogin($usernameEmail, $password); 
     if(!$id) 
     { 
     echo "Not entering in userClass->Login"; 
     } 

     if ($id) { 
      // Not entering here 
      $url = BASE_URL . 'welcome.php';   
      header("Location: $url"); 
     } else { 
      echo "$id"; 
      $errorMsgLogin = "Please check login details."; 

     } 
    } 
} 

這是我userClass.php

<?php 
error_reporting(E_ALL); 
ini_set('display_errors',1); 
class userClass 
{ 
    /* User Login */ 
    public function userLogin($usernameEmail,$password) 
    { 
     try{ 
      $db = getDB(); 

      $hash_password= hash('sha256', $password); //Password encryption 
      $stmt = $db->prepare("SELECT id FROM doctorlocation WHERE (doctorusername=:usernameEmail or doctoremail=:usernameEmail) AND doctorpassword=:hash_password"); 

      $stmt->bindParam("usernameEmail", $usernameEmail,PDO::PARAM_STR) ; 
      $stmt->bindParam("hash_password", $hash_password,PDO::PARAM_STR) ; 
      $stmt->execute(); 
      $count=$stmt->rowCount(); 
      $data=$stmt->fetch(PDO::FETCH_OBJ); 
      $db = null; 
      if($count) 
      { 
       $_SESSION['usernameEmail']=$usernameEmail; 
       $_SESSION['id']=$data->id; // Storing user session value 
       return true; 
      } 
      else 
      { 
       return false; 
       } 
      } 
      catch(PDOException $e) { 
       echo '{"error":{"text":'. $e->getMessage() .'}}'; 
      } 

     } 

我的連接文件,config.php文件

<?php 
error_reporting(E_ALL); 
ini_set('display_errors',1); 
session_start(); 
/* DATABASE CONFIGURATION */ 
define('DB_SERVER', '******'); 
define('DB_USERNAME', '******'); 
define('DB_PASSWORD', '******'); 
define('DB_DATABASE', '*******'); 
define("BASE_URL", "******"); 



function getDB() 
{ 
$dbhost=DB_SERVER; 
$dbuser=DB_USERNAME; 
$dbpass=DB_PASSWORD; 
$dbname=DB_DATABASE; 
try { 
$dbConnection = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); 
$dbConnection->exec("set names utf8"); 
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

return $dbConnection; 
} 
catch (PDOException $e) { 
echo 'Connection failed: ' . $e->getMessage(); 
} 

} 
?> 

錯誤似乎在這裏$ id = $ userClass-> userLogin($ usernameEmail,$ password);

它應該是一個小問題,似乎不能包圍我的頭。任何指導都會有所幫助。

謝謝

+2

您不能使用相同的命名佔位符 –

+0

@ Fred-ii-實際上您可以使用相同的命名佔位符,您只需使用模擬準備即可。 PDO :: ATTR_EMULATE_PREPARES http://php.net/manual/en/pdo.setattribute.php – bassxzero

+0

@bassxzero你有一點,可能爲什麼它只能在他們的本地系統上工作,而不是在現場服務器上 –

回答

-1

嘗試創建這樣的連接。請務必用您的連接信息替換$json['MYSQL'][blah]

$this->PDOMYSQL = new PDO(
     'mysql:host='. $json['MYSQL']['HOST'] .';dbname='.$json['MYSQL']['DATABASE'].';charset=utf8mb4', 
     $json['MYSQL']['USER'], 
     $json['MYSQL']['PASS'], 
     [ 
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 
      PDO::ATTR_EMULATE_PREPARES => TRUE 
     ] 
    ); 

編輯

NVM我只注意到:usernameEmail != usernameEmail

變化

$stmt->bindParam("usernameEmail", $usernameEmail,PDO::PARAM_STR) ; 
    $stmt->bindParam("hash_password", $hash_password,PDO::PARAM_STR) ; 

$stmt->bindParam(":usernameEmail", $usernameEmail,PDO::PARAM_STR) ; 
    $stmt->bindParam(":hash_password", $hash_password,PDO::PARAM_STR) ; 

你缺少:

+0

我的連接有什麼問題? – AIS

+0

你的答案絕對沒有幫助。建議您暫時不要回答pdo問題 –

+0

@YourCommonSense如此綁定正確的參數名稱意味着什麼? – bassxzero

相關問題