2017-07-13 6 views
0

私は基本的にsollicitantとbedrijfである私のデータベースで2つの役割を持っています 私は別のページに両方をリダイレクトしたい、私は今データベース内の電子メールとパスワードを制御するスクリプトを持っているが、どのようにどの役割を持っているかを「確認」する方法を教えてください。ログインに基づいてログイン

これはパスワードと電子メールをチェックする役割ですが、私は両方の役割を別のページ?あなたは、あなたがそれゆえpassword_has()password_verify()

を使用してハッシュされたパスワード値を格納する必要があることを行うことを想定されていないのプレーンテキストとしてパスワードが保存されていているように見える物事のルックスによって

<?php 
if(isset($_POST['verzenden'])) { 

    $inputEmail = htmlspecialchars($_POST['email']); 
    $inputWachtwoord = htmlspecialchars($_POST['wachtwoord']); 

    $servername = "localhost"; 
    $databasename = "powerjobs"; 
    $username  = "root"; 
    $password  = ""; 

    try { 
     $conn = new PDO("mysql:host=$servername; dbname=$databasename", $username, $password); 

     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    } catch(PDOException $e) { 
     echo "Connection failed: " . $e->getMessage(); 
     return; 
    } 

    try { 
     $stmt = $conn->prepare("SELECT * FROM registratie WHERE email = '$inputEmail'"); 
     $stmt->execute(); 

     $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
     $row = $stmt->fetch(); 

     $rowCount = $stmt->rowCount(); 

     if ($rowCount) { 

      if ($inputWachtwoord == $row['wachtwoord']) 
       header("Location: sollicitant.html"); 
      else 
       echo "<br/>Gebruikersnaam en wachtwoord komen niet overeen."; 
     } else { 
      echo "<br/>Login failed, no record found"; 
     } 
    } 
    catch(PDOException $e) { 
     echo "Error: " . $e->getMessage(); 
    } 

    $conn = null; 

    session_start(); 

    $_SESSION["login"] = true; 
    $_SESSION["email"] = $inputEmail; 

} 
?> 
+0

'$ inputWachtwoord'はパスワードはありますか?準備された文を正しく使用し、クエリをパラメータ化する必要があります。 – chris85

+0

「会社」または申請者であるかどうかをチェックする 'header'の前に' if'と 'else'を追加するだけです。 – Daan

+0

あなたのデータベース構造は何ですか? –

答えて

1

そして、ワット

$hash = password_hash($inputWachtwoord,PASSWORD_DEFAULT); 

:あなたはあなたのサインアップページに保存されている場合、あなたは

のようなパスワードをハッシュする必要があります鶏あなたが使用してログインすることができますあなたは、もはや$inputWachtwoordを保存しませんが、あなたは次に$hash

を保存する保存などのpassword_verify()

<?php 
ob_start(); 
session_start(); 

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

    $inputEmail  = $_POST['email']; 
    $inputWachtwoord = $_POST['wachtwoord']; 

    $servername = "localhost"; 
    $databasename = "powerjobs"; 
    $username  = "root"; 
    $password  = ""; 

    try { 
     $conn = new PDO("mysql:host=$servername; dbname=$databasename", $username, $password); 

     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    } 
    catch (PDOException $e) { 
     echo "Connection failed: " . $e->getMessage(); 
    } 

    try { 
     $stmt = $conn->prepare("SELECT * FROM registratie WHERE email = ? "); 
     $stmt->execute([$inputEmail]); 
     $result = $stmt->fetchall(PDO::FETCH_ASSOC); 
     if (count($result) > 0) { 
      foreach ($result as $key => $row) { 
       if (password_verify($inputWachtwoord, $row['wachtwoord'])) { 
        //password matches 
        $_SESSION["login"] = true; 
        $_SESSION["email"] = $inputEmail; 

        //check user role 
        switch ($row['role']) { 
         case 0: 
          $redirectUrl = "ThisRolePage.php"; 
          break; 

         case 1: 
          $redirectUrl = "ThisRolePage.php"; 
          break; 
        } 

        header("location:$redirectUrl"); //redirect user to respective page 
        exit(); 

       } else { 

        echo "password and username does not match"; 
       } 
      } 

     } else { 

      echo "username invalid"; 
     } 
    } 
    catch (PDOException $e) { 
     echo "Error: " . $e->getMessage(); 
    } 
} 
?> 
+0

fyi、私はロールを0に変更しました(sollicitantと1(bedrjif)はデータベース内でどのように認識されているかを示しています)。 – Melissa

+0

パスワードがプレーンテキストとして保存されているため一致しません。コードを受け取ったばかりの上からフォローしていません –

+0

"$ inputWachtwoord = $ _POST ['wachtwoord'];"を "$ hash = password_hash $ _POST ['wachtwoord']、PASSWORD_DEFAULT); "は、私がしなければならなかったものではありませんか? – Melissa

関連する問題