簡體   English   中英

如何阻止直接訪問我的php文件

[英]How to block direct access to my php file

我有以下文件與流:

index.html - > login.php - > displayinbox.php

login.php文件從數據庫確認用戶並重定向到displayinbox.php文件。

問題是如果有人只是鍵入displayinbox.php頁面的直接鏈接,頁面中的腳本就會運行。

我怎么能阻止這種情況發生? 我嘗試了'define'和'defined'方法,但這只適用於我猜的包含文件。 任何幫助?

使用會話值來跟蹤用戶是否已登錄。如果!$_SESSION['whatever'] ,將它們重定向到索引/登錄頁面。

例:

的login.php

session_start();
/* login code here */
$_SESSION['logged_in'] = true;

displayinbox.php

session_start();
if (!$_SESSION['logged_in']) {
    header("Location: login.php");
    exit;
}

有很多方法可以做到這一點。 在displayinbox.php和POST_SELF的頂部包含login.php或登錄后,設置會話cookie並在displayinbox.php頁面頂部檢查。

這是一個關於安全性的非常開放的問題,需要的不僅僅是這里可以提供的任何答案。 在最簡單的層面上,設置$_SESSION變量就是我要去的方式。

如果您正在使用MVC模式,請使用Secure_Controller ,以便所有需要密碼訪問權限的控制器可以從中擴展。 如果不使用MVC甚至某種類型的模板,您將需要在每個要受密碼保護的頁面中包含一個腳本。

的login.php

<?php
//check username and pw against the database
if($passwordAndUsername == 'good'){
    $_SESSION['loggedIn'] = 'yes';
}
?>

securityCheck.php

<?php
if($_SESSION['loggedIn'] != 'yes'){
    $message = 'you must log in to see this page.';
    header('location:login.php');
}
?>

在任何受密碼保護的頁面的開頭包含securityCheck.php。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM