2014-11-05 103 views
0

你好,我目前正在使用PHP來生成一個自己的構建CMS系統的菜單。防止添加鏈接到另一個鏈接

我正在與一個動態鏈接:$url = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."/"; 比我從數據庫中添加. $row_menu['page_link']。起初,它完美的作品:

爲例=

$row_menu['page_link'] = page2; 

$url . $row_menu['page_link']; 

它將返回爲例:http://example.com/page2

但是,當我再次點擊,再次增加了2頁,如:http://example.com/page2/page2

怎麼辦我防止這個?

提前致謝!

回答

0

因爲在第一次你$_SERVER['REQUEST_URI']會像http://example.com但當鏈接,在用戶點擊則$_SERVER['REQUEST_URI']價值將成爲http://example.com/page2。那就是爲什麼它被追加兩次。

相反,你可以使用HTTP_REFERER

$url = $_SERVER['HTTP_REFERER'].$row_menu['page_link']; 

考慮到您的$_SERVER['HTTP_REFERER']將結果http://example.com。也可以嘗試像

$protocol = 'http'; 
$url = $protocol .'//'. $_SERVER['HTTP_HOST'] .'/'. $row_menu['page_link']; 
+0

是的,但是我如何阻止它這樣做? – 2014-11-05 11:34:01

+0

查看我的編輯bro – Gautam3164 2014-11-05 11:35:55

+0

http://stackoverflow.com/questions/6880659/in-what-c​​ases-will-http-referer-be-empty http-referer can not be trusted – 2014-11-05 11:38:24

0

REQUEST_URI會給你以後example.com無論發生什麼事,所以離開這一切都在一起。

$url = $_SERVER['HTTP_HOST'] . "/" . $row_menu['page_link']; 

您可以找到$ _SERVER引用的完整列表here

+0

謝謝你爲你的答案,這是非常有益的! – 2014-11-05 11:51:05

0

試試這個:

$requested_uri = $_SERVER['REQUESTED_URI']; 
$host = $_SERVER['HTTP_HOST']; 
$uri_segments = explode('/',$requested_uri); 

$row_menu['page_link'] = 'page2'; 
if($row_menu['page_link'] == $uri_segments[sizeof($uri_segments)-1]) { 
    array_pop($uri_segments); 
} 

$uri = implode('/',$uri_segments); 

$url = 'http://'.$host.'/'.$uri.'/'.$row_menu['page_link']; 

echo $url; 
+0

感謝您的回答!但是當我嘗試這樣做時,頁面顯示爲白色,我在['page_link']後添加了分號,但這並沒有解決問題。 – 2014-11-05 12:03:10

+0

請..檢查編輯,再試一次 – 2014-11-05 12:21:17