我喜欢使用“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>
我希望,你可以帮助我。 (我很抱歉我的英语不好!)
答案 0 :(得分:0)
1)您的index.php中有div#内容,当客户端请求s = page时,还有服务器响应。删除div包装器应解决重复的div#content问题。
2)每当您允许客户端提供输入以反过来获取服务器中的文件时,请确保您做足够的工作来验证用户的输入,因为有人可以使用 s = .. /等输入。 ./../../ etc / passwd 针对你的php服务器(假设它在* nix上运行)。