<?php
$go = $_GET['go'];
if(!empty($go)) {
if(is_file("page/$go.html")) include "page/$go.html";
else echo "<h1>Error 404</h1><p>Strona nie odnaleziona</p><p>Warunek ?go jest niepoprawny</p>";
}
else include "page/start.html";
?>
<script>
$.get('go', function(change) {
$('#center').load('page/<?php echo $go ?>.html');
});
</script>
我有类似的东西,但它不起作用。我只是希望加载的页面(?go = name)不会刷新整个页面
答案 0 :(得分:1)
首先,它容易受到LFI漏洞(本地文件包含)的攻击。考虑当有人进入时发生的事情:http://site.com/file.php?go=../../../../../../../../etc/passwd%00
此外,您不能只回显您的文件名并期望将其打印出来......如果您想在$ go中包含页面内容并打印出$ go,那么请使用:
$go = urldecode([$_GET['go']);
$go = str_replace("/", "", $go);
$go = "page/$go.html";
编辑:实际上,如果您使用我的上述代码,他们仍然可以访问本地目录中的文件,例如.htpasswd和.htaccess,所以不要让您的用户包含任何本地文件。有更好的方法来解决你的问题。
关于AJAX,请遵循jeroen的建议。
答案 1 :(得分:1)
您正在混合两个ajax函数,$.get
和.load
,并且您缺少一个事件处理程序。
你需要这样的东西:
$('#go').live('change', function() {
$('#center').load('page/' + $(this).val() + '.html');
});
我已使用live
代替change
,以防go
按钮位于页面的刷新部分。
注意我猜你想根据选择刷新页面的一部分,问题/代码并不完全清楚......
答案 2 :(得分:0)
这是你想要达到的目标吗?
<script type="text/javascript">
$(document).ready(function() {
var getgo = '<?php echo $_GET['go']; ?>';
if(getgo.length) {
$('#center').load('page/'+getgo+'.html');
}
});
</script>
<div id="center"></div>
它会将 page / [your go param] .html 的内容加载到#center中。