2016-04-22 13 views
0

i ein Anmeldeformular zu tun für das Back-Office eingeben aber was auch immer ich in Login und Passwort setzen, erhalte ich die ganze Zeit die Umleitung in

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

Mein Code ist:

<?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'); 
} 
?> 

Mein vardump im Gegenzug $ result immer wahr

**

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** 

Ich habe nicht verstanden, warum $ Ergebnis ist wahr, was auch immer ich in meiner Form.

Vielen Dank für Ihre Hilfe!

---------------- ---------------- EDIT

ich etwas ändern vorbereiten meine, aber immer noch arbeiten nicht, aber jetzt mein vardump $ _POST nur knapp sein Ziel zu lesen, was ich in meiner Form setzen

$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

lesen 'prepare' Aussagen sorgfältig. –

+0

Warum nehmen Sie Ihre Variablen direkt in die Anweisung '$ sql' auf, anstatt' execute' zu ​​verwenden, was dafür gemacht wird? Es könnte zu großen Sicherheitsproblemen führen! – Aurel

+0

ich das richtig nach der Lektüre prepare() $ sql = 'SELECT * \t \t VON \t Benutzer \t WHERE login =: Login AND = übergeben: MDP'; var_dump ($ sql); $ req = $ verbindung-> vorbereiten ($ sql); \t var_dump ($ req); $ result = $ req-> ausführen (array (': login' => $ login, ': mdp' => $ pass)); – Hightline

Antwort

0

Versuch dreifach gleich zu verwenden (===)

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

Hm, sieht aus wie nur knapp sein Ziel Effekt bekam ich das jetzt: Array (size = 2) 'login' => string 'sdfsdfsdf' (Länge = 9) 'MDP' => string 'sdfsdfsdfsdfsdfsdfsdfs' (Länge = 22) Zeichenfolge 'SELECT \t * \t VON \t Benutzer \t WHERE login =: Login und pass =: MDP' (Länge = 68) Objekt (PDOStatement) [2] public 'querystring' => string ‚SELECT \t * \t VON \t Benutzer \t WHERE login =: login UND pass =: mdp '(length = 68) boolean true – Hightline

+0

War meine Vorbereitung() gut? – Hightline