iT邦幫忙

0

php有沒有什麼網頁的瀏覽限制的方法?

  • 分享至 

  • xImage

我在做網頁伺服器的登入頁面,我是看這個網站寫的https://jam68ty.github.io/BucketTalk/post/php-mysql-login/
基本上只改了username的顯示部分不過應該不影響
我目前遇到的問題是我用登入的網頁(index.php)登入後會跑到"welcome.php",可是我就算不登入直接打網址連到"welcome.php"也可以看到"welcome.php"裡面的內容,請問有辦法可以限制"welcome.php"的讀取嗎?

我目前只試過用username來過濾把不是指定使用者的人弄到"error.php"裡而已,雖然可以擋其他人可是到了"test1.php"就又一樣了,而且如果使用者多還要再手動加也不是辦法

welcome.php

<?php
session_start();  //很重要,可以用的變數存在session裡

$username=$_SESSION["username"];

if($username =="TestUser"){
        header("location:test1.php");
        exit;
}else{
        header("location:error.php");
        exit;
}



echo "<h1>你好 ".$username."</h1>";
echo "<a href='logout.php'>登出</a>";

?>

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
海綿寶寶
iT邦大神 1 級 ‧ 2022-06-08 16:38:01
最佳解答

觀察 index.php 最前面幾列

// Check if the user is already logged in, if yes then redirect him to welcome page
if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
    header("location: welcome.php");
    exit;  //記得要跳出來,不然會重複轉址過多次
}

這段寫的用途是「如果已經登入,就導向至 welcome.php」

不是「限制 welcome.php 的讀取」
而是「在 welcome.php 一開始判斷是否已登入,如果沒登入你要導向去那裡(eg.login.php)」
講白了就是在所有你想限制讀取的 php 的最前面,都加上是否已登入的判斷以及未登入的處理

另外
先前的問題如果已經解決
請選個最有幫助解答以結案

sc05201 iT邦新手 5 級 ‧ 2022-06-08 17:41:07 檢舉

已解決感謝

1
淺水員
iT邦大師 6 級 ‧ 2022-06-08 16:59:16

這討論下去會變成框架設計了
如果先不管進階的用法
簡單的方式可以考慮這樣做:

  1. 先寫一個 startup.php,這個檔案會:
    1. 解析使用者請求的 url 跟參數
    2. 檢查登入狀態與權限
    3. 依據前兩項資訊,若不符合權限就重導到適合的頁面
    4. 可以初始化一些「服務」,例如連接資料庫等。(或載入 service provider 相關的 php)
  2. 所有會產生內容的頁面最前面都要 require('startup.php');

PS. 作為 library 的檔案不 require('startup.php');,使用者雖然能請求這個 library 的 url,但只會看到空白頁面。

(以上是不動伺服器設定,新手可以用的方式)

sc05201 iT邦新手 5 級 ‧ 2022-06-08 17:41:22 檢舉

感謝建議

0

就現今框架而言。其登入判斷會主要寫到共用的「控制器」上。

不過依你的情況是屬於無物件導向及框架。
那一般的做法是先建立一個能共用的PHP。
然後再每一支程式的開頭都先 require 或 include 處理。
其最好是建立在可做為控制器的PHP檔。而不是每一支都要。

淺水員
教你的那樣就是如上同樣的理念寫法。

但一般還是會建議使用物件導向的方式來處理。
如有心要進入這個世界,還是學一下框架。
你會發現更高階層的應用處理方式。

看更多先前的回應...收起先前的回應...
obarisk iT邦研究生 2 級 ‧ 2022-06-09 10:09:52 檢舉

其實物件導向可有可無。框架比較重要

我倒是覺得你說相反了。
因該是框架可有可無,物件導向比較重要。

要不,你找找有哪一個框架沒用到物件導向的。

froce iT邦大師 1 級 ‧ 2022-06-09 10:19:05 檢舉

這兩個方向性又不一樣,哪來那個比較重要啦

單純跟他抬槓。
畢竟他光說物件導向可有可無,就.....

Terry L. iT邦研究生 4 級 ‧ 2022-06-15 11:10:34 檢舉

光憑物件導向可有可無這句話,能找的到工作我也蠻配服的。

我要發表回答

立即登入回答