2016-04-14 10 views
0

Diese Validierungsseite zeigt keinen Fehler an und leitet nicht zur Startseite um. Ich überprüfen, ob sie die Überprüfung der databse erreichen und es funktioniert gut, aber nicht umleiten die Seite nicht so dass ich denke, dass das Problem mit „$ user = $ req-> holen()“ ist help plzAnmeldeseite zeigt keinen Fehler an und meldet sich nicht an. Php

if(isset($_POST['login'])){ 

$username = $_POST['username']; 
$password = $_POST['password']; 
$pc = md5($password); 

$req = $pdo->prepare('SELECT * FROM users WHERE nom= :username AND pass= :password'); 
$req->execute(array(
    'username' => $username, 
    'password' => $pc, 
    )); 

if ($user = $req->fetch()) { 
    $_SESSION['auth'] = $user; 
    header("location:home.php"); 
    exit(); 

} 

else{ 
echo"<script> alert('LE NOM D UTILISATEUR OU LE MOTS DE PASSE INCORRECTE')</script>"; 
} 
+0

Wenn Ihr 'echo“ 'feuert (feuert es?), Das würde Ihnen sagen, in Gewissheit, dass die' if ($ user = $ req -> fetch()) 'Bedingung ist fehlgeschlagen – Marcus

+0

das scriprt funktioniert gut, wenn ich es falsch gebe Benutzername – Davina

+0

das Problem hier ist dies.' If ($ user = $ req-> fetch()) 'Sie zuweisen statt comparing 'if ($ user == $ req-> fetch())' –

Antwort

0

Ich stimme @tadman zu, dass Sie mit einem Framework arbeiten sollten, das später Ihre eigene Zugriffskontrolle implementiert. Die Verwendung von MD5 allein ist keine gute Möglichkeit, Ihre Passwörter zu hashen. Bitte versuchen Sie zumindest ein Salz hinzuzufügen. Wie auch immer, das sollte für dich funktionieren. Ersetzen Sie einfach db, user und pass für die Datenbankverbindung. Wieder würde ich diese nicht direkt auf den Punkt bringen.

if(isset($_POST['login'])){ 

    $host = '127.0.0.1'; 
    $db = 'tester'; 
    $user = 'root'; 
    $pass = 'root'; 
    $charset = 'utf8'; 

    $username = $_POST['username']; 
    $password = $_POST['password']; 
    $pc = md5($password); 

    $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; 

    $opt = [ 
     PDO::ATTR_ERRMODE   => PDO::ERRMODE_EXCEPTION, 
     PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 
     PDO::ATTR_EMULATE_PREPARES => false, 
    ]; 

    $pdo = new PDO($dsn, $user, $pass, $opt); 


    $stmt = $pdo->prepare('SELECT * FROM users WHERE nom= :username AND pass= :password'); 

    $stmt->execute(['username' => $username,'password'=>$pc]); 

    if($user = $stmt->fetch()){ 
     $_SESSION['auth'] = $user; 
     header("location:home.php"); 
     exit(); 

    }else{ 
     echo"<script> alert('LE NOM D UTILISATEUR OU LE MOTS DE PASSE INCORRECTE')</script>"; 
    } 
} 
+0

danke, aber dieser Code auch nicht diplay Fehler und doesn "login: '( – Davina

+0

verwenden Sie session_start(); am Anfang jeder Seite? – codenathan

+0

der Fehler w wie auf der Homepage in session_start(); jetzt klappt es dank – Davina

Verwandte Themen