我做在後臺進入,但無論我把用戶名和密碼登錄表單,我得到的所有的時間
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));
閱讀'prepare'語句。 –
爲什麼你直接將變量包含到'$ sql'語句中,而不是使用'execute'來實現呢?它可能會導致重大的安全問題! – Aurel
我這樣做後正確準備() $ sql ='選擇\t * \t從\t用戶\t WHERE登錄=:登錄AND通= = mdp'; var_dump($ sql); $ req = $ connexion-> prepare($ sql); \t var_dump($ req); (數組(':登錄'=> $登錄,':mdp'=> $通過)); – Hightline