2012-12-28 58 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