2017-02-17 7 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."; 

     } 
    } 
} 

であり、これは

<?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の

私userClass.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

あなたの答えは絶対に役に立たない。 –

+0

@ YourCommonSenseので、正しいパラメータ名をバインドすることは何も意味しないのですか? – bassxzero

関連する問題