2012-12-28 25 views
0

嗨,我会尽力解释这一点,尽我所能。我使用一个PHP主页结构通过包括功能连接内容作为PHP主页结构链接显示不正确

<?php 
    $page=$_GET['page']; 
    include($page); 
?> 

我使用一个数据库来显示博客和添加了ID到每个柱,以允许用户导航到实际的博客发布,而不是在列表中查看它。我遇到的问题是链接工作,但是当我将主页面结构添加到链接中时,它无法找到ID。例如,

作品

<a href="blog2.php?id=<?php echo $post['post_id']; ?>"> 

不工作

<a href="../anonymous/anonymous.master.php?page=blog2.php?id=<?php echo $post['post_id']; ?>"> 

显然,第一个链接显示只有blog2.php数据,而不是母版页数据。我猜测这是我构建链接的方式,任何帮助都将被赞赏ated。如果还有其他问题,或者我无法解释我自己,请询问。

+1

您应该在使用'include'之前验证参数值。否则,可以包含任何文件。 – Gumbo

回答

1

一些事情。首先,要解决您的问题,您需要在pageid参数之间的&而不是?第二种情况下的参数。所以它应该看起来像这样:

<a href="../anonymous/anonymous.master.php?page=blog2.php&id=<?php echo $post['post_id']; ?>"> 

其次,你真的需要清理你的输入。

在这种情况下:

<?php 
    $page=$_GET['page']; 
    include($page); 
?> 

如果您的服务器配置不正确,我可以很容易地通过一个URL为page,让你的服务器从其他网站执行任意代码,影响整个系统。

对于URL的情况,您会直接向页面回传post变量,从而导致您自己打开跨站点脚本(XSS)攻击。

+0

谢谢迈克。这现在看起来很明显。我会挑衅地考虑排序代码,谢谢你的提高。 – memyselfandmyiphone