2017-02-22 3 views
0

Следуя моему коду, который дает мне логин в папке, но не проверяет мой пароль и сеанс.многопользовательский логин, не проверяющий пароль и сеанс

без переключателя случае, если другое условие его работы, но только тогда буксировка роль работают
мне нужна многогранную роль

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"; 
     } 
    } 
} 

Есть ли у вас какие-либо предложения?

ответ

0

Хорошо, ваш сценарий очень плохо отформатирован!

Я думаю, ваша проблема в этой части:

$ Количество == 1 & & $ строки [ 'UserPass'] == $ пароль & & $ строки [ 'роль'] ==» многоцелевой ';

$ row ['role'] == 'multirole'; // Это не может быть правдой!

Я пытаюсь заново написать свой сценарий (используя + - логику, которая не является на самом деле собственно тоже!):

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

не работают их в somting отсутствует в кодировании может быть usname и объект пароль не правильно set –

+0

@BillyBarret это возможно, лучший способ найти проблему - начать тестирование части кода по частям! это означает просто проверить, если ваши данные отправлены с if и else и эхо сообщения для каждого условия! так что вы найдете, где проблема! – Soheyl

Смежные вопросы