iT邦幫忙

3

php網頁登入不同帳戶 依權限開啟特定網頁

新手寫程式是這樣,都寫到這了發現這個問題

處理自己寫的php網頁
想依登入帳號的權限開啟某特定網頁

因為在帳號創建會選擇權限
下拉式選單:例 1 三種權限
2
3

此選單創建後寫入資料位於資料庫內表單的mission欄位
(帳號、密碼、mission都在同一資料表)
現在要如何在登入時確認帳號密碼(這部分已寫好)之後再比對mission欄位的值是1或是2還是3
然後導引至相對應的網頁

可能有點饒舌!! 有勞大大們指點

看更多先前的討論...收起先前的討論...
dragonH iT邦超人 5 級 ‧ 2019-09-03 20:02:12 檢舉
你是要登入完後

根據權限來決定導到哪個網頁的意思嗎
Justin iT邦新手 5 級 ‧ 2019-09-03 20:18:43 檢舉
沒錯 應該說按下登入後就直接跳轉到相對應權限的網頁(一個動作)

可否在登入的過程去中比對輸入的帳戶及密碼是否正確
下一步比對此帳戶的mission欄位值是甚麼,依mission欄位值的回應導向該有的.html,似乎就是要再加個迴圈,但不知怎麼下手(敘述不詳細請見諒)
dragonH iT邦超人 5 級 ‧ 2019-09-03 20:39:06 檢舉


為什麼要迴圈

基本上沒必要分成兩次

你在比對密碼時

就已經做了取得用戶資料的這個動作

取得完後再根據值來導向特定網頁
ccutmis iT邦高手 4 級 ‧ 2019-09-03 20:40:25 檢舉
Permission(權限)
登入成功取得用戶資料(userid,userpwd,permission)的同時,
可以把permission寫到session例如
session_star();
$_SESSION['permission']='A'; //例如A:最高 B:一般 C:遊客
之後就可以去抓$_SESSION['permission']判斷登入者權限
來決定轉導向到哪個頁面,例如:
$curr_permission=$_SESSION['permission'];
Header('location:'.$curr_permission.'.php');
//如果權限是'A' 就會跳到 A.php...權限是'C'就會跳到C.php
或者用if(){....}else{...}去處理轉導向

Mission Completed!
dragonH iT邦超人 5 級 ‧ 2019-09-03 21:20:49 檢舉
我以為他的 mission 真的是指 mission 之類的XD
ccutmis iT邦高手 4 級 ‧ 2019-09-03 22:11:02 檢舉
^~^|||
小魚 iT邦大師 1 級 ‧ 2019-09-03 22:52:53 檢舉
if else 或是 switch就可以了.
Justin iT邦新手 5 級 ‧ 2019-09-04 00:15:12 檢舉
感謝各位大大 
深夜撥空回復 我吸收一下XD''
原本是打算用Session去建,但覺得應該有辦法直接用迴圈之類的完成所以才卡在這
ccutmis iT邦高手 4 級 ‧ 2019-09-04 08:27:21 檢舉
如果你是認真學的話
登入成功後一定會用到Session的
因為... 所以...

1 個回答

4
dragonH
iT邦超人 5 級 ‧ 2019-09-03 21:17:54
最佳解答

給你一個極度簡易的示意範例

front.php

<form action = "./login.php" method = "post">
  <label for = "account">Account</label>
  <input type = "text" id = "account" name = "maccount"><br>
  <label for = "password">Password</label>
  <input type = "password" id = "password" name = "mpassword"><br>
  <button type = "submit">Login</button>
</form>

<style>
  * {
    margin: 5px;
  }
  body {
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
  }
</style>

login.php

<?php
  $users = array(
    array("account" => "user1", "password" => "123", "mission" => "1"),
    array("account" => "user2", "password" => "123", "mission" => "2"),
    array("account" => "user3", "password" => "123", "mission" => "3"),
  );
  if (isset($_POST["maccount"]) && isset($_POST["mpassword"]) ) {
    $account = $_POST["maccount"];
    $password = $_POST["mpassword"];
    $userData = null;
    foreach($users as $key => $val) {
      if ($val['account'] == $account) {
        $userData = $users[$key];
      }
    }
    if (!$userData) {
      echo "login fail";
      return;
    }
    if ($password == $userData['password']) {
      switch ($userData['mission']) {
        case '1': {
          header( 'Location: 1.php' );
          break;
        }
        case '2': {
          header( 'Location: 2.php' );
          break;
        }
        case '3': {
          header( 'Location: 3.php' );
          break;
        }
        default: {
          break;
        }
      }
    } else {
      echo "login fail";
    }
  }
?>

img

共有三個 user

分別有不同權限

登入後會導向各身分的頁面

這只是示意

不同身分來導向不同頁面而已

至於那些

連資料庫

密碼不該以明文儲存

session 之類的

這裡不考慮 /images/emoticon/emoticon11.gif

看更多先前的回應...收起先前的回應...
Justin iT邦新手 5 級 ‧ 2019-09-04 00:23:00 檢舉

大大這有點強阿,稍早還在想稍早還在goole if的方式果然方向是對的
感謝提供^^

dragonH iT邦超人 5 級 ‧ 2019-09-04 00:40:39 檢舉

/images/emoticon/emoticon82.gif

小魚 iT邦大師 1 級 ‧ 2019-09-04 08:58:41 檢舉

你未來的路還很長

甲土豆 iT邦新手 5 級 ‧ 2019-09-04 10:50:02 檢舉

H 大我注意你很久了,妳人真的超級好的,每次回覆基本都會,附上程式碼,如果有VIP,你應該當之無愧

dragonH iT邦超人 5 級 ‧ 2019-09-04 10:59:56 檢舉

你這樣子我怕招黑XD /images/emoticon/emoticon16.gif

也是要看情況啦

問功課或者厚問就不一定了 /images/emoticon/emoticon11.gif

我要發表回答

立即登入回答