2017-02-22 1 views
0

Folgen Sie meinem Code, der mir Ordner weise Login geben, aber nicht mein Passwort und Sitzung zu überprüfen.Multiuser Logging nicht überprüfen Passwort und Sitzung

ohne Schalter Fall, wenn sonst Zustand es Arbeit, aber dann nur Schlepptau Rolle arbeiten
Ich brauche eine multiple Rolle

ob_start(); 
require_once 'dbconnect.php'; 
$userName = ''; 
$passError = ''; 
$error = false; 
if (isset($_POST['btn-login'])) { 
    $userName = trim($_POST['userName']); 
    $userName = strip_tags($userName); 
    $userName = htmlspecialchars($userName); 
    $pass = trim($_POST['pass']); 
    $pass = strip_tags($pass); 
    $pass = htmlspecialchars($pass); 
    if (empty($userName)) { 
     $error = true; 
     $userNameError = "Please enter your User Name."; 
    } 
    if (empty($pass)) { 
     $error = true; 
     $passError = "Please enter your password."; 
    } 
    if (!$error) { 
     $password = hash('sha256', $pass); 
     $res = mysqli_query($conn, "SELECT userId, userName, userPass, role FROM users1 WHERE userName='$userName'"); 
     $row = mysqli_fetch_array($res); 
     $count = mysqli_num_rows($res); 
     var_dump($count); 
     $count == 1 && $row['userPass'] == $password && $row['role'] == 'multirole'; 
     $multirole = $row['role']; 
     $row['userPass'] == ($password); 
     switch ($multirole) { 
      case "admin": 
       $_SESSION['user'] = $row['userName']; 
       $_SESSION['role'] = 'admin'; 
       header('Location: admin/home.php'); 
       break; 
      case "user": 
       $_SESSION['user'] = $row['userName']; 
       $_SESSION['role'] = 'user'; 
       header('Location: user/home.php'); 
       break; 
      default: 
       echo "No User Found ! Please Contact Admin"; 
     } 
    } 
} 

Haben Sie Vorschläge?

Antwort

0

Okay, Ihr Skript ist sehr schlecht formatiert!

Ich denke, Ihr Problem in diesem Teil ist:

$ count == 1 & & $ row [ 'userpass'] == $ Passwort & & $ row [ 'Rolle'] ==‘ Mehrzweck ";

$ row ['role'] == 'multirole'; // Das könnte nicht wahr sein!

Ich versuche das Skript neu schreiben (unter Verwendung von + - Ihre Logik, die entweder nicht wirklich richtig ist!):

ob_start(); 
require_once 'dbconnect.php'; 

if(isset($_POST['btn-login'])) 
{ 
$username = $_POST['userName']; 
$pass = $_POST['pass']; 

if(empty($userName)) 
{ 
    $error = true; 
    $userNameError = "Please enter your User Name."; 
} 
elseif(empty($pass)) 
{ 
    $error = true; 
    $userNameError = "Please enter your password."; 
} 
else 
{ 
    $password = hash('sha256', $pass); 

    $res = $db -> prepare ("SELECT * FROM users1 WHERE userName = :userName"); 

    $res -> execute (array (":userName" => $userName)); 

    $count = $res -> rowCount(); 

     if($count == 1) 
     { 
     $rows = $res -> fetchAll (PDO::FETCH_ASSOC); 

     foreach ($rows as $row) 
     { 
      $db_password= $row['userPass']; 
      $multirole = $row["role"]; 
     } 

       if($password == $db_password) 
       { 
       switch ($multirole) 
       { 
        case "admin": 
        $_SESSION['user'] = $row['userName']; 
        $_SESSION['role'] = 'admin'; 
        header('Location: admin/home.php'); 
        break; 
        case "user": 
        $_SESSION['user'] = $row['userName']; 
        $_SESSION['role'] = 'user'; 
        header('Location: user/home.php'); 
        break; 
        default: 
        echo "No User Found ! Please Contact Admin"; 
       } 
       } 
     } 
} 
} 
+0

nicht arbeiten, um ihre ist somting bei der Codierung fehlt möglicherweise nicht richtig usname und Passwort-Objekt sein Set –

+0

@BillyBarret es ist möglich, der beste Weg, um das Problem zu finden, ist mit dem Testen Ihres Codes Teil für Teil beginnen! es bedeutet nur testen, wenn Ihre Daten mit if und sonst geschrieben und eine Nachricht für jede Bedingung Echo! So finden Sie, wo das Problem ist! – Soheyl

Verwandte Themen