带有$ _GET []参数的Contentloader

时间:2015-05-16 14:22:00

标签: javascript php

我喜欢使用“Contentloader”,但我有一点问题。

网址语法: http://example.com/?s=page

我的“页面 .php”在index.php上加载,你可以在“pages / page.php”中找到这个文件。

我有这个javascript来加载这个页面:

$('#navigation ul li a').click(function() {
    var attribute = $('#navigation ul li a').attr('href');
    $('#content').load(attribute);
        return false;
});

现在,整个网站再次加载<div id="content"></div>。 这是我的问题。

我只想使用简单的内容加载器加载“pages / page.php”的内容,我不知道如何解决这个问题。

这是加载内容的PHP代码:

<div id="content">
            <?php
                $includeDir = ".".DIRECTORY_SEPARATOR."pages".DIRECTORY_SEPARATOR;
                $includeDefault = $includeDir."startseite.php"; 

                if(isset($_GET['s']) && !empty($_GET['s'])) {
                    $_GET['s'] = str_replace("\0", '', $_GET['s']);
                    $includeFile = basename(realpath($includeDir.$_GET['s'].".php"));
                    $includePath = $includeDir.$includeFile;

                    if (!empty($includeFile) && file_exists($includePath)) {
                        include($includePath);
                    } else {
                       include($includePath."404.html");
                    }       
                } else {
                    include($includeDefault);
                }
            ?>
        </div>

这是目录中文件的示例:

<h2>Example</h2> <p>This is an example</p>

我希望,你可以帮助我。 (我很抱歉我的英语不好!)

1 个答案:

答案 0 :(得分:0)

1)您的index.php中有div#内容,当客户端请求s = page时,还有服务器响应。删除div包装器应解决重复的div#content问题。

2)每当您允许客户端提供输入以反过来获取服务器中的文件时,请确保您做足够的工作来验证用户的输入,因为有人可以使用 s = .. /等输入。 ./../../ etc / passwd 针对你的php服务器(假设它在* nix上运行)。