2016-04-22 18 views
0

我做在後臺進入,但無論我把用戶名和密碼登錄表單,我得到的所有的時間

else { 
      header('Location: ../auth/login.php?error=1'); 
重定向

我的代碼是:

<?php 
session_start(); 
require_once('../connexion.php'); 

$login = isset($_POST['login']) ? $_POST['login'] : null; 
$pass  = isset($_POST['mdp']) ? ($_POST['mdp']) : null; 

var_dump($_POST); 

$sql = 'SELECT * FROM users WHERE login = \'' . $login . '\' AND  pass = \'' . $pass . '\''; 

var_dump($sql); 
$req = $connexion->prepare($sql); 

var_dump($req); 
$result = $req->execute(array('login' => $login, 'mdp' => $pass)); 

var_dump($result); 
if($result == true){ 
     $_SESSION['logged'] = true; 
     header('Location: ../admin_panel.php'); 
    } else { 
       header('Location: ../auth/login.php?error=1'); 
} 
?> 

我在$結果恢復總是如此vardump

**

array (size=2) 
    'login' => string 'dsfc' (length=4) 
    'mdp' => string 'sdf' (length=3) 
string 'SELECT * FROM users WHERE login = 'dsfc' AND pass = 'sdf'' (length=57) 
object(PDOStatement)[2] 
    public 'queryString' => string 'SELECT * FROM users WHERE login = 'dsfc' AND pass = 'sdf'' (length=57) 
boolean true** 

我不明白爲什麼$結果是真實的,無論我放在我的表格。

感謝您的幫助!

----------------編輯----------------

我改變了一下我的準備,但仍然不工作,但現在我的vardump $ _ POST didnt讀什麼我把我的形式

$sql = 'SELECT * FROM users WHERE login = :login AND pass = :mdp'; 

var_dump($sql); 
$req = $connexion->prepare($sql); 

var_dump($req); 
$result = $req->execute(array(':login' => $login, ':mdp' => $pass)); 
+0

閱讀'prepare'語句。 –

+0

爲什麼你直接將變量包含到'$ sql'語句中,而不是使用'execute'來實現呢?它可能會導致重大的安全問題! – Aurel

+0

我這樣做後正確準備() $ sql ='選擇\t * \t從\t用戶\t WHERE登錄=:登錄AND通= = mdp'; var_dump($ sql); $ req = $ connexion-> prepare($ sql); \t var_dump($ req); (數組(':登錄'=> $登錄,':mdp'=> $通過)); – Hightline

回答

0

儘量小心使用三聯等於(===)

if($result === true){ 
//something here 
} 
+0

嗯,看起來像didnt效果我得到這個現在: 陣列(大小= 2) '登錄'=>字符串 'sdfsdfsdf'(長度= 9) 'MDP'=>字符串 'sdfsdfsdfsdfsdfsdfsdfs'(長度= 22) 串 'SELECT \t * \t FROM \t用戶\t WHERE登錄名=:登錄並傳=:MDP'(長度= 68) 對象(PDOStatement對象)[2] 公共 '的queryString'=>串「SELECT \t * \t FROM \t用戶\t WHERE login =:login AND pass =:mdp'(length = 68) 布爾值true – Hightline

+0

我的prepare()很好嗎? – Hightline