使用 Url 查询来定义页面

Using Url Query's to define page

我要访问的网页是 https://example.com/portal/projects.php?action=projectdetails&id=18

我有一个名为 projects.php 的文件,它查找变量并包含正确的页面(projectsm projectdetails、projectedit...)但我不知道如何让脚本检测是否有页面定义 (?action=projectdetails) &id 变量告诉服务器要在数据库上查询什么 id 以检索信息。

这是我当前的代码(不起作用)

    <?php 
session_start();
ob_start();
$currentPage = 'usrprojects';

require ('assets/config.inc.php');


if (isset($_SESSION['logged_in']) != true) {
header("location: login.php"); 
}
else {
    if (isset($_GET['action'])){
if( isset($_GET['projectdetails']) && $_GET['projectdetails'] == "")
{
echo "asd";
}
    }
    else {
    require 'includes/pages/projects.php';
    }
    }
?>

我认为上面的内容更有可能是这样的,因为您正在尝试查找 GET 变量是否等于 projectdetails 而不是查找名称为 projectdetails[=14 的 GET 变量=]

session_start();
ob_start();
$currentPage = 'usrprojects';

require ('assets/config.inc.php');


if ( isset( $_SESSION['logged_in'] ) != true ) {
    header( 'location: login.php' ); 
} else {
    if ( isset( $_GET['action'] ) ){
        if( $_GET['action'] == 'projectdetails' ) require 'includes/pages/projects.php';
        else echo 'asd';
    }
}

但是,正如我在评论中提到的,您可能想要使用白名单的想法 - 粗略的想法如下:

session_start();
ob_start();

if( empty( $_SESSION['logged_in'] ) ){
    exit( header( 'location: login.php' ) );
}

$whitelist=array(
    'projects'  =>  array('script'=>'includes/pages/projects.php','level'=>3),
    'admin'     =>  array('script'=>'includes/pages/admin.php','level'=>1),
    'other'     =>  array('script'=>'includes/pages/other.php','level'=>5)
);

$currentPage = 'usrprojects';
require ('assets/config.inc.php');



if( !empty( $_GET['action'] ) && array_key_exists( $_GET['action'], $whitelist ) ){

    $action = $whitelist[ $_GET['action'] ]['script'];
    $level  = $whitelist[ $_GET['action'] ]['level'];

    if( file_exists( $action ) && $_SESSION['level'] <= $level ) require $action;
}