Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

Trong mã của bạn, câu lệnh

setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    
    $stmt = $db->("SELECT *, COUNT(*) as count FROM login WHERE `username`=:user and `password`=:pass");
    $stmt->bindParam(':user', $myusername);
    $stmt->bindParam(':pass', $mypassword);
    
    if ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
        $count = $row['count'];
        
        // If result matched $myusername and $mypassword, table must be 1 row
        if ($count == 1) {        
            switch( $row['role'] ){

                case 'Admin':
                    header("location:index.php");
                    exit();

                case 'Trainer':
                    header("location:index1.php");
                    exit();

                case 'Line Manager':
                    header("location:index2.php");
                    exit();

                case 'Client':
                    header("location:client.php");
                    exit();

                default:
                    echo "Wrong Username or Password";
            }
        }
    }
    
    $db = null;
}

catch(PDOException $e) {  
    echo $e->getMessage();  
}

?>
1 đầu tiên kiểm tra
setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    
    $stmt = $db->("SELECT *, COUNT(*) as count FROM login WHERE `username`=:user and `password`=:pass");
    $stmt->bindParam(':user', $myusername);
    $stmt->bindParam(':pass', $mypassword);
    
    if ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
        $count = $row['count'];
        
        // If result matched $myusername and $mypassword, table must be 1 row
        if ($count == 1) {        
            switch( $row['role'] ){

                case 'Admin':
                    header("location:index.php");
                    exit();

                case 'Trainer':
                    header("location:index1.php");
                    exit();

                case 'Line Manager':
                    header("location:index2.php");
                    exit();

                case 'Client':
                    header("location:client.php");
                    exit();

                default:
                    echo "Wrong Username or Password";
            }
        }
    }
    
    $db = null;
}

catch(PDOException $e) {  
    echo $e->getMessage();  
}

?>
2 trong khi các câu tuyên bố khác kiểm tra
setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    
    $stmt = $db->("SELECT *, COUNT(*) as count FROM login WHERE `username`=:user and `password`=:pass");
    $stmt->bindParam(':user', $myusername);
    $stmt->bindParam(':pass', $mypassword);
    
    if ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
        $count = $row['count'];
        
        // If result matched $myusername and $mypassword, table must be 1 row
        if ($count == 1) {        
            switch( $row['role'] ){

                case 'Admin':
                    header("location:index.php");
                    exit();

                case 'Trainer':
                    header("location:index1.php");
                    exit();

                case 'Line Manager':
                    header("location:index2.php");
                    exit();

                case 'Client':
                    header("location:client.php");
                    exit();

                default:
                    echo "Wrong Username or Password";
            }
        }
    }
    
    $db = null;
}

catch(PDOException $e) {  
    echo $e->getMessage();  
}

?>
3. Tôi đoán là bạn đang cố gắng đăng nhập là "quản trị viên" và đó là lý do tại sao nó không hoạt động.

Cập nhật

Có nhiều sai với mã của bạn hơn là ban đầu tôi nhận ra.

  1. Bạn đang trộn các hàm mysql_* với các hàm mysqli_*. Điều này không chỉ sai, mà các chức năng mysql_* đã bị phản đối. Bạn không còn nên sử dụng chúng nữa.

  2. Bạn đang để mình mở để tiêm SQL bằng cách sử dụng các biến bài đăng trực tiếp trong câu lệnh SELECT của bạn. Cách để khắc phục điều này là bằng cách sử dụng các câu lệnh đã chuẩn bị.

Tuyên bố miễn trừ trách nhiệm: Tôi đã không sử dụng MySQLI trong một thời gian khá lâu nên mã được trình bày ở đây có thể chứa lỗi. I haven't used mysqli in quite some time so the code presented here may contain errors.

connect_errno ){
    die('Unable to connect to database [' . $db->connect_error . ']');
}

// username and password sent from form 
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

if ($stmt = $db->prepare("SELECT role FROM login WHERE `username`=? and `password`=?")) {
    /* bind parameters for username and password */
    $stmt->bind_param('ss', $myusername, $mypassword);

    /* execute query */
    $stmt->execute();
    
    // If result matched $myusername and $mypassword, table row must be 1 row
    if ($stmt->affected_rows == 1) {
        // bind the result to a variable
        $stmt->bind_result($role);
        $stmt->fetch();
        
        switch( $role ){

            case 'Admin':
                header("location:index.php");
                exit();

            case 'Trainer':
                header("location:index1.php");
                exit();

            case 'Line Manager':
                header("location:index2.php");
                exit();

            case 'Client':
                header("location:client.php");
                exit();

            default:
                echo "Wrong Username or Password";
        }
    
    }

    $stmt->close();
}

$db->close();

?>

Cá nhân tôi thích PDO (minh họa dưới đây). Tôi đã không kiểm tra mã để nó cũng có thể không hoàn toàn chính xác, nhưng nó sẽ giúp bạn đi đúng hướng.

setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    
    $stmt = $db->("SELECT *, COUNT(*) as count FROM login WHERE `username`=:user and `password`=:pass");
    $stmt->bindParam(':user', $myusername);
    $stmt->bindParam(':pass', $mypassword);
    
    if ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
        $count = $row['count'];
        
        // If result matched $myusername and $mypassword, table must be 1 row
        if ($count == 1) {        
            switch( $row['role'] ){

                case 'Admin':
                    header("location:index.php");
                    exit();

                case 'Trainer':
                    header("location:index1.php");
                    exit();

                case 'Line Manager':
                    header("location:index2.php");
                    exit();

                case 'Client':
                    header("location:client.php");
                    exit();

                default:
                    echo "Wrong Username or Password";
            }
        }
    }
    
    $db = null;
}

catch(PDOException $e) {  
    echo $e->getMessage();  
}

?>

Để biết thêm về PDO, hãy xem: Tại sao bạn nên sử dụng PDO PHP để truy cập cơ sở dữ liệu

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

3 năm trước

Cảm ơn bạn cho các bài viết của bạn, tôi đã xoay sở để giải quyết vấn đề tất nhiên với sự giúp đỡ của bạn. Tôi đã bắt đầu làm việc với PDO cho bảo mật cũng như băm trong việc thay thế MD5 có thể bẻ khóa. Sẽ tiếp tục áp dụng các đề xuất của bạn khi tôi hòa đồng với việc học HTML, PHP, Java Script và MySQL. Tất cả trong tất cả, các bạn thật tuyệt vời. Cảm ơn bạn một lần nữa.

       Email    |   Password   |   UserType
         xxxxxx       System User
         xxxxxx       Administrator

Trả lời chủ đề này

$ret['email'],
'Password'=>$ret['password'],
'UserType'=>$ret['role']
);

$role=$_SESSION['detsuid']['ID'];
switch($role){
 case 'System User':
 header('location: dashboard.php');
 break;
 case 'Administrator':
 header('location: admin/index.html');
 break;
 }
 }else{
echo "";
}
}
?> 

Là một phần của cộng đồng Daniweb

Chúng tôi là một cộng đồng thân thiện, tập trung vào ngành của các nhà phát triển, các chuyên gia CNTT, nhà tiếp thị kỹ thuật số và những người đam mê công nghệ gặp gỡ, học tập và chia sẻ kiến ​​thức.

Làm cách nào để chuyển hướng người dùng đến các trang khác nhau dựa trên vai trò của họ?

Nếu bạn muốn chuyển hướng người dùng đến một trang cụ thể dựa trên vai trò của họ, thì hãy duyệt qua Bridge Bridge → Cài đặt → Một dấu hiệu đơn trên → Chuyển hướng và bật tùy chọn 'Chuyển hướng dựa trên vai trò người dùng'.

Làm cách nào để chuyển hướng người dùng đăng nhập?

Nếu bạn muốn chuyển hướng người dùng đến một trang cụ thể dựa trên vai trò của họ, thì hãy duyệt qua Bridge Bridge → Cài đặt → Một dấu hiệu đơn trên → Chuyển hướng và bật tùy chọn 'Chuyển hướng dựa trên vai trò người dùng'.

Nếu bạn muốn chuyển hướng người dùng đến một trang cụ thể dựa trên vai trò của họ, thì hãy duyệt qua Bridge Bridge → Cài đặt → Một dấu hiệu đơn trên → Chuyển hướng và bật tùy chọn 'Chuyển hướng dựa trên vai trò người dùng'.

Làm cách nào để chuyển hướng người dùng đăng nhập?

Bạn có thể sử dụng biến phiên để thực hiện việc này, bạn sẽ được đặt phiên trên đăng nhập. Vì vậy, trên trang chỉnh sửa bắt đầu, bạn có thể viết mã sau để kiểm tra người dùng wheter được đăng nhập hoặc không .. Điều kiện của bạn là xấu, một ISSET đơn giản (phiên $ _) là không đủ. Một phiên khác có thể được đặt ở một nơi khác.

Nếu bạn muốn chuyển hướng người dùng đến một trang cụ thể dựa trên vai trò của họ, thì hãy duyệt qua Bridge Bridge → Cài đặt → Một dấu hiệu đơn trên → Chuyển hướng và bật tùy chọn 'Chuyển hướng dựa trên vai trò người dùng'.

"select ID from gts_users where  Email='$email' && Password='$password' "

Làm cách nào để chuyển hướng người dùng đăng nhập?

Nếu bạn muốn chuyển hướng người dùng đến một trang cụ thể dựa trên vai trò của họ, thì hãy duyệt qua Bridge Bridge → Cài đặt → Một dấu hiệu đơn trên → Chuyển hướng và bật tùy chọn 'Chuyển hướng dựa trên vai trò người dùng'.

Làm cách nào để chuyển hướng người dùng đăng nhập?

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

Bạn có thể sử dụng biến phiên để thực hiện việc này, bạn sẽ được đặt phiên trên đăng nhập. Vì vậy, trên trang chỉnh sửa bắt đầu, bạn có thể viết mã sau để kiểm tra người dùng wheter được đăng nhập hoặc không .. Điều kiện của bạn là xấu, một ISSET đơn giản (phiên $ _) là không đủ. Một phiên khác có thể được đặt ở một nơi khác. 2,346 "Nothing to see here." Moderator

3 năm trước

Làm cách nào để tạo một trang đăng nhập chuyển hướng dựa trên vai trò người dùng trong WordPress?

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

3 năm trước

Chỉ cần nhấp vào nút 'Thêm mới' trong phần 'Quy tắc chuyển hướng'. Sau đó, chọn điều kiện 'Vai trò người dùng' từ điều kiện 'điều kiện quy tắc' và chọn vai trò người dùng từ danh sách thả xuống.

Làm cách nào để chuyển hướng một trang cụ thể sau khi đăng nhập?

Để chuyển hướng người dùng đến một trang cụ thể sau khi đăng nhập, bạn chỉ cần thêm tham số URL chuyển hướng trong mã shortcode đăng nhập. Tham số redirect_url cho phép bạn chuyển hướng đến một trang nhất định sau khi người dùng đăng nhập.

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

Bạn có thể sử dụng biến phiên để thực hiện việc này, bạn sẽ được đặt phiên trên đăng nhập. Vì vậy, trên trang chỉnh sửa bắt đầu, bạn có thể viết mã sau để kiểm tra người dùng wheter được đăng nhập hoặc không .. Điều kiện của bạn là xấu, một ISSET đơn giản (phiên $ _) là không đủ. Một phiên khác có thể được đặt ở một nơi khác. 2,346 "Nothing to see here." Moderator

3 năm trước

Làm cách nào để tạo một trang đăng nhập chuyển hướng dựa trên vai trò người dùng trong WordPress?

Chỉ cần nhấp vào nút 'Thêm mới' trong phần 'Quy tắc chuyển hướng'. Sau đó, chọn điều kiện 'Vai trò người dùng' từ điều kiện 'điều kiện quy tắc' và chọn vai trò người dùng từ danh sách thả xuống.

Làm cách nào để chuyển hướng một trang cụ thể sau khi đăng nhập?

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

Bạn có thể sử dụng biến phiên để thực hiện việc này, bạn sẽ được đặt phiên trên đăng nhập. Vì vậy, trên trang chỉnh sửa bắt đầu, bạn có thể viết mã sau để kiểm tra người dùng wheter được đăng nhập hoặc không .. Điều kiện của bạn là xấu, một ISSET đơn giản (phiên $ _) là không đủ. Một phiên khác có thể được đặt ở một nơi khác. 2,346 "Nothing to see here." Moderator

3 năm trước

Làm cách nào để tạo một trang đăng nhập chuyển hướng dựa trên vai trò người dùng trong WordPress?

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

3 năm trước

Chỉ cần nhấp vào nút 'Thêm mới' trong phần 'Quy tắc chuyển hướng'. Sau đó, chọn điều kiện 'Vai trò người dùng' từ điều kiện 'điều kiện quy tắc' và chọn vai trò người dùng từ danh sách thả xuống.

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

rproffitt2.346 "Không có gì để xem ở đây." Người điều hành 2,346 "Nothing to see here." Moderator

3 năm trước

Đó là tốt nhưng mã hóa là một trong những bước. Cần phải được muối là tốt. Điều này được bảo hiểm rộng rãi.

Tôi không thể biết nếu bạn đã giải quyết những điều trên. Tôi xin lỗi nhưng tôi không thấy bạn viết nó đã bị phá vỡ trong bài viết hàng đầu. (Không có báo cáo vấn đề.)

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

3 năm trước

Đó là tốt nhưng mã hóa là một trong những bước. Cần phải được muối là tốt. Điều này được bảo hiểm rộng rãi.

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

rproffitt2.346 "Không có gì để xem ở đây." Người điều hành 2,346 "Nothing to see here." Moderator

3 năm trước

Đó là tốt nhưng mã hóa là một trong những bước. Cần phải được muối là tốt. Điều này được bảo hiểm rộng rãi.

Tôi không thể biết nếu bạn đã giải quyết những điều trên. Tôi xin lỗi nhưng tôi không thấy bạn viết nó đã bị phá vỡ trong bài viết hàng đầu. (Không có báo cáo vấn đề.)

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

rproffitt2.346 "Không có gì để xem ở đây." Người điều hành 2,346 "Nothing to see here." Moderator

3 năm trước

Đó là tốt nhưng mã hóa là một trong những bước. Cần phải được muối là tốt. Điều này được bảo hiểm rộng rãi.

  1. Tôi không thể biết nếu bạn đã giải quyết những điều trên. Tôi xin lỗi nhưng tôi không thấy bạn viết nó đã bị phá vỡ trong bài viết hàng đầu. (Không có báo cáo vấn đề.)
    You won't know unless you debug this code.
  2. Tôi đã không tìm ra nơi proble ở đâu. Tôi đã đăng nó ở đây với một quan điểm rằng ai đó có thể giúp tôi sai.

Để tìm ra nơi nó đã sai, Echo hoặc ghi nhật ký các biến và kết quả đó khi mã của bạn chạy. Tôi tình cờ gặp rất nhiều lập trình viên quên rằng họ có thể lặp lại hoặc đăng nhập để xem lý do tại sao mã của họ không hoạt động. Vì không có thông báo lỗi được chia sẻ và chúng tôi không biết cơ sở dữ liệu và nhiều hơn nữa, nhiều thông tin gỡ lỗi có thể phá vỡ trường hợp này.

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

3 năm trước

 0){
        $ret=mysqli_fetch_array($query);
        $_SESSION['detsuid']=array(
        'Email'=> $ret['email'],
        'Password'=> $ret['password'],
        'UserType'=> $ret['role']
        );
        $role=$_SESSION['detsuid']['ID'];
        switch($role){
          case 'System User':
          header('location: dashboard.php');
          break;
          case 'Administrator':
          header('location: admin/index.html');
          break;
          default:
          // Code to be executed if n is different from all Roles
          header('location: user/index.html');
        }
    } else { ?>
          ";
     

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

rproffitt2.346 "Không có gì để xem ở đây." Người điều hành 2,346 "Nothing to see here." Moderator

3 năm trước

Đó là tốt nhưng mã hóa là một trong những bước. Cần phải được muối là tốt. Điều này được bảo hiểm rộng rãi.

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

3 năm trước

Đó là tốt nhưng mã hóa là một trong những bước. Cần phải được muối là tốt. Điều này được bảo hiểm rộng rãi.
I appreciate and value your contribution.

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

rproffitt2.346 "Không có gì để xem ở đây." Người điều hành 2,346 "Nothing to see here." Moderator

3 năm trước

Đó là tốt nhưng mã hóa là một trong những bước. Cần phải được muối là tốt. Điều này được bảo hiểm rộng rãi.

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

Mark_k

3 năm trước

Hey,

Đó là tốt nhưng mã hóa là một trong những bước. Cần phải được muối là tốt. Điều này được bảo hiểm rộng rãi.
1 - Just stop with md5. It's completely useless. You might as well just store in plain text if this really is just for learning. Google what rainbow tables are, and further to that, watch this https://youtu.be/7U-RbOKanYs?t=249
2 - Start using PDO and prepare your statements. I see later on you started using mysqli_real_escape_string and that's great, but again, just start using PDO.
3 -

setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    
    $stmt = $db->("SELECT *, COUNT(*) as count FROM login WHERE `username`=:user and `password`=:pass");
    $stmt->bindParam(':user', $myusername);
    $stmt->bindParam(':pass', $mypassword);
    
    if ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
        $count = $row['count'];
        
        // If result matched $myusername and $mypassword, table must be 1 row
        if ($count == 1) {        
            switch( $row['role'] ){

                case 'Admin':
                    header("location:index.php");
                    exit();

                case 'Trainer':
                    header("location:index1.php");
                    exit();

                case 'Line Manager':
                    header("location:index2.php");
                    exit();

                case 'Client':
                    header("location:client.php");
                    exit();

                default:
                    echo "Wrong Username or Password";
            }
        }
    }
    
    $db = null;
}

catch(PDOException $e) {  
    echo $e->getMessage();  
}

?>
4 and
setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    
    $stmt = $db->("SELECT *, COUNT(*) as count FROM login WHERE `username`=:user and `password`=:pass");
    $stmt->bindParam(':user', $myusername);
    $stmt->bindParam(':pass', $mypassword);
    
    if ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
        $count = $row['count'];
        
        // If result matched $myusername and $mypassword, table must be 1 row
        if ($count == 1) {        
            switch( $row['role'] ){

                case 'Admin':
                    header("location:index.php");
                    exit();

                case 'Trainer':
                    header("location:index1.php");
                    exit();

                case 'Line Manager':
                    header("location:index2.php");
                    exit();

                case 'Client':
                    header("location:client.php");
                    exit();

                default:
                    echo "Wrong Username or Password";
            }
        }
    }
    
    $db = null;
}

catch(PDOException $e) {  
    echo $e->getMessage();  
}

?>
5 are your friends. Use those to see what you have inside of
setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    
    $stmt = $db->("SELECT *, COUNT(*) as count FROM login WHERE `username`=:user and `password`=:pass");
    $stmt->bindParam(':user', $myusername);
    $stmt->bindParam(':pass', $mypassword);
    
    if ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
        $count = $row['count'];
        
        // If result matched $myusername and $mypassword, table must be 1 row
        if ($count == 1) {        
            switch( $row['role'] ){

                case 'Admin':
                    header("location:index.php");
                    exit();

                case 'Trainer':
                    header("location:index1.php");
                    exit();

                case 'Line Manager':
                    header("location:index2.php");
                    exit();

                case 'Client':
                    header("location:client.php");
                    exit();

                default:
                    echo "Wrong Username or Password";
            }
        }
    }
    
    $db = null;
}

catch(PDOException $e) {  
    echo $e->getMessage();  
}

?>
6;
4 - If this just for learning purposes, I'm not sure why you'd turn off all errors with
setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    
    $stmt = $db->("SELECT *, COUNT(*) as count FROM login WHERE `username`=:user and `password`=:pass");
    $stmt->bindParam(':user', $myusername);
    $stmt->bindParam(':pass', $mypassword);
    
    if ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
        $count = $row['count'];
        
        // If result matched $myusername and $mypassword, table must be 1 row
        if ($count == 1) {        
            switch( $row['role'] ){

                case 'Admin':
                    header("location:index.php");
                    exit();

                case 'Trainer':
                    header("location:index1.php");
                    exit();

                case 'Line Manager':
                    header("location:index2.php");
                    exit();

                case 'Client':
                    header("location:client.php");
                    exit();

                default:
                    echo "Wrong Username or Password";
            }
        }
    }
    
    $db = null;
}

catch(PDOException $e) {  
    echo $e->getMessage();  
}

?>
7. See https://www.php.net/manual/en/function.error-reporting.php#refsect1-function.error-reporting-examples
5 - At the very top of this you show that you have a table with the columns Email, Password and UserType. The one thing in particular to note here is that you don't have a column called "role", but you keep trying to access
setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    
    $stmt = $db->("SELECT *, COUNT(*) as count FROM login WHERE `username`=:user and `password`=:pass");
    $stmt->bindParam(':user', $myusername);
    $stmt->bindParam(':pass', $mypassword);
    
    if ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
        $count = $row['count'];
        
        // If result matched $myusername and $mypassword, table must be 1 row
        if ($count == 1) {        
            switch( $row['role'] ){

                case 'Admin':
                    header("location:index.php");
                    exit();

                case 'Trainer':
                    header("location:index1.php");
                    exit();

                case 'Line Manager':
                    header("location:index2.php");
                    exit();

                case 'Client':
                    header("location:client.php");
                    exit();

                default:
                    echo "Wrong Username or Password";
            }
        }
    }
    
    $db = null;
}

catch(PDOException $e) {  
    echo $e->getMessage();  
}

?>
8 as if you do have that column. So check that.
6 - Further to that, you have this code:

$ret=mysqli_fetch_array($query);
$_SESSION['detsuid']=array(
    'Email'=> $ret['email'],
    'Password'=> $ret['password'],
    'UserType'=> $ret['role']
);
$role=$_SESSION['detsuid']['ID'];

Tôi không thể biết nếu bạn đã giải quyết những điều trên. Tôi xin lỗi nhưng tôi không thấy bạn viết nó đã bị phá vỡ trong bài viết hàng đầu. (Không có báo cáo vấn đề.)

Tôi đã không tìm ra nơi proble ở đâu. Tôi đã đăng nó ở đây với một quan điểm rằng ai đó có thể giúp tôi sai.

Để tìm ra nơi nó đã sai, Echo hoặc ghi nhật ký các biến và kết quả đó khi mã của bạn chạy. Tôi tình cờ gặp rất nhiều lập trình viên quên rằng họ có thể lặp lại hoặc đăng nhập để xem lý do tại sao mã của họ không hoạt động. Vì không có thông báo lỗi được chia sẻ và chúng tôi không biết cơ sở dữ liệu và nhiều hơn nữa, nhiều thông tin gỡ lỗi có thể phá vỡ trường hợp này.

Ví dụ, bạn có chắc chắn rằng $ vai trò phù hợp hay không?

Có hai lý do mã này có thể không làm những gì bạn mong đợi.

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

Kiểm tra chuyển đổi/trường hợp không thành công theo một cách nào đó. Điều gì sẽ xảy ra nếu chuỗi bạn có trong mã không phải là chuỗi trong cơ sở dữ liệu? Bạn sẽ không biết trừ khi bạn gỡ lỗi mã này. 3,227 The Queen of DaniWeb Administrator Featured Poster Premium Member

3 năm trước

Đó là tốt nhưng mã hóa là một trong những bước. Cần phải được muối là tốt. Điều này được bảo hiểm rộng rãi.

Tôi không thể biết nếu bạn đã giải quyết những điều trên. Tôi xin lỗi nhưng tôi không thấy bạn viết nó đã bị phá vỡ trong bài viết hàng đầu. (Không có báo cáo vấn đề.)

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

Mark_k

3 năm trước

Tôi không thể biết nếu bạn đã giải quyết những điều trên. Tôi xin lỗi nhưng tôi không thấy bạn viết nó đã bị phá vỡ trong bài viết hàng đầu. (Không có báo cáo vấn đề.)

Tôi đã không tìm ra nơi proble ở đâu. Tôi đã đăng nó ở đây với một quan điểm rằng ai đó có thể giúp tôi sai.

Không sử dụng pasword_hash ()! [Biểu tượng cảm xúc của Thumbsup]

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

3 năm trước

"select ID from gts_users where  Email='$email' && Password='$password' "

1) Câu lệnh CHỌN của bạn không chính xác khi bạn đang cố gắng gọi ID, vì vậy tất cả các bản trả về là ID, OT email được yêu cầu tìm kiếm bảng khác của bạn để trả về userType. .

$_SESSION['detsuid']=array(
'Email'=>$ret['email'],
'Password'=>$ret['password'],
'UserType'=>$ret['role']

Sau đó, bạn đã buộc $ ret vào dữ liệu thực tế của bạn được trả về nhưng tên trường không được công nhận. Email phải là 'email', mật khẩu phải là 'mật khẩu' và vai trò cuối cùng là 'userType' khi thấy rằng không có bản ghi nào được trả về vì "câu lệnh chọn" không chính xác, bạn đang trả lại một hàng trống, không có lỗi kiểm tra lỗi Nơi để nói - "Đưa tôi đến đó nếu không có hàng nào được trả lại", câu lệnh IF của bạn chỉ dựa vào một hàng trả lại thực sự.

Dưới đây nên thực hiện thủ thuật -

setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    
    $stmt = $db->("SELECT *, COUNT(*) as count FROM login WHERE `username`=:user and `password`=:pass");
    $stmt->bindParam(':user', $myusername);
    $stmt->bindParam(':pass', $mypassword);
    
    if ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
        $count = $row['count'];
        
        // If result matched $myusername and $mypassword, table must be 1 row
        if ($count == 1) {        
            switch( $row['role'] ){

                case 'Admin':
                    header("location:index.php");
                    exit();

                case 'Trainer':
                    header("location:index1.php");
                    exit();

                case 'Line Manager':
                    header("location:index2.php");
                    exit();

                case 'Client':
                    header("location:client.php");
                    exit();

                default:
                    echo "Wrong Username or Password";
            }
        }
    }
    
    $db = null;
}

catch(PDOException $e) {  
    echo $e->getMessage();  
}

?>
0

Hướng dẫn how to create login page that redirects based on user role in php - cách tạo trang đăng nhập chuyển hướng dựa trên vai trò của người dùng trong php

3 năm trước

1) Câu lệnh CHỌN của bạn không chính xác khi bạn đang cố gắng gọi ID, vì vậy tất cả các bản trả về là ID, OT email được yêu cầu tìm kiếm bảng khác của bạn để trả về userType. .
I have started working with PDO for security as well as hashing in replacement of crackable MD5.
Will keep on applying your suggestions as I get along with learning HTML, PHP, Java Script, and MYSQL.
All in all, you guys are wonderful.
Thank you once more.

Sau đó, bạn đã buộc $ ret vào dữ liệu thực tế của bạn được trả về nhưng tên trường không được công nhận. Email phải là 'email', mật khẩu phải là 'mật khẩu' và vai trò cuối cùng là 'userType' khi thấy rằng không có bản ghi nào được trả về vì "câu lệnh chọn" không chính xác, bạn đang trả lại một hàng trống, không có lỗi kiểm tra lỗi Nơi để nói - "Đưa tôi đến đó nếu không có hàng nào được trả lại", câu lệnh IF của bạn chỉ dựa vào một hàng trả lại thực sự.

Dưới đây nên thực hiện thủ thuật -

Cảm ơn bạn cho các bài viết của bạn, tôi đã xoay sở để giải quyết vấn đề tất nhiên với sự giúp đỡ của bạn. Tôi đã bắt đầu làm việc với PDO cho bảo mật cũng như băm trong việc thay thế MD5 có thể bẻ khóa. Sẽ tiếp tục áp dụng các đề xuất của bạn khi tôi hòa đồng với việc học HTML, PHP, Java Script và MySQL. Tất cả trong tất cả, các bạn thật tuyệt vời. Cảm ơn bạn một lần nữa.

Làm cách nào để chuyển hướng người dùng đến các trang khác nhau dựa trên vai trò của họ?

Nếu bạn muốn chuyển hướng người dùng đến một trang cụ thể dựa trên vai trò của họ, thì hãy duyệt qua Bridge Bridge → Cài đặt → Một dấu hiệu đơn trên → Chuyển hướng và bật tùy chọn 'Chuyển hướng dựa trên vai trò người dùng'.browse Edwiser Bridge → Settings → Single Sign On → Redirection and enable the 'User Role Based Redirection' option.

Làm cách nào để chuyển hướng người dùng đăng nhập?

Bạn có thể sử dụng biến phiên để thực hiện việc này, bạn sẽ được đặt phiên trên đăng nhập. Vì vậy, trên trang chỉnh sửa bắt đầu, bạn có thể viết mã sau để kiểm tra người dùng wheter được đăng nhập hoặc không .. Điều kiện của bạn là xấu, một ISSET đơn giản (phiên $ _) là không đủ. Một phiên khác có thể được đặt ở một nơi khác.use session variable to do this, you ust be set session on login. So on edit page starting you can write following code to check wheter user is logged in or not.. your condition is bad, a simple issset($_SESSION) is not enough. another session might be set somewhere else.

Làm cách nào để tạo một trang đăng nhập chuyển hướng dựa trên vai trò người dùng trong WordPress?

Chỉ cần nhấp vào nút 'Thêm mới' trong phần 'Quy tắc chuyển hướng'. Sau đó, chọn điều kiện 'Vai trò người dùng' từ điều kiện 'điều kiện quy tắc' và chọn vai trò người dùng từ danh sách thả xuống.click the 'Add New' button in the 'Redirection Rules' section. Then, select the 'User Role' condition from the 'Rule Condition' drop down and choose the user role from the drop down list.

Làm cách nào để chuyển hướng một trang cụ thể sau khi đăng nhập?

Để chuyển hướng người dùng đến một trang cụ thể sau khi đăng nhập, bạn chỉ cần thêm tham số URL chuyển hướng trong mã shortcode đăng nhập.Tham số redirect_url cho phép bạn chuyển hướng đến một trang nhất định sau khi người dùng đăng nhập.add the redirect URL parameter in login form Shortcode. The redirect_url parameter allows you to redirect to a certain page after the user is logged in.