动态更改页面

时间:2011-02-05 21:48:36

标签: php jquery html

<?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)不会刷新整个页面

3 个答案:

答案 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中。