php函数,用于从地址栏获取信息并包含指定文件(动态页面?)


php Function for Getting Information from Address Bar and Including a Specified File (Dynamic Pages?)

我是stackoverflow和php的新手,我正在尝试正确地编写代码。我想做的是消除index.php以外的页面的显示,但仍然通过使用地址栏来包含它们。例如,我正在尝试编写一个登录脚本,该脚本包含一个login.php文件,但处理表单的所有帖子信息并通过index.php文件进行检查。

我正在尝试创建一个函数,以便在地址栏调用时只包含特定的页面。那么表单的操作将是对index.php?act=login-我想$_GET the act(login)并包含login.php,而不允许用户包含任何其他会带来安全风险的文件。

这是我的代码:

    function getContent() {
    $pages = array('login','page1');
    if(isset($_GET['act']) && $_GET['act'] == $pages) {
        include($_GET['act'] . '.php');
    } elseif (!isset($_GET['act'])) {
        echo 'INDEX PAGE';
    }
}
getContent();

我哪里错了?当index.php?act=已设置登录名。文本"INDEX PAGE"显示得很好,但没有设置动作。

这行代码是您的问题:

 if(isset($_GET['act']) && $_GET['act'] == $pages) {

您需要将其更改为这样(因为您正在检查页面数组中是否存在act的值):

if(isset($_GET['act']) && in_array($_GET['act'], $pages)) {

不过,您可能希望用其他标准来替换elseif。因为如果设置了$_GET['act'],但不在页面数组中,则不会执行elseif。

此外,我强烈建议您使用像Limonade这样的微框架,一旦您对PHP更加熟悉,它将为您处理此问题(更加安全)。

您的if不正确。你想要这样的东西:

if(isset($_GET['act']) && in_array($_GET['act'], $pages)) {
    include($_GET['act'] . '.php');
}

您可以将其更改为in_array():

if(isset($_GET['act']) && in_array($_GET['act'], $pages)) {
    include('path-to-file/'.$_GET['act'] . '.php');
}