您好我正在使用php生成一个带有自己的构建CMS系统的菜单。
我正在制作动态链接:$url = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."/";
我正在从数据库中添加. $row_menu['page_link']
。起初它完美无缺:
as example =
$row_menu['page_link'] = page2;
$url . $row_menu['page_link'];
它将返回示例:http://example.com/page2
但是当我再次点击时,它再次添加了page2,如:http://example.com/page2/page2
我如何防止这种情况?
提前致谢!
答案 0 :(得分:0)
因为您的$_SERVER['REQUEST_URI']
第一次与http://example.com
相似,但当用户点击该链接时,$_SERVER['REQUEST_URI']
的值将变为http://example.com/page2
。\ n&#39}为什么它会追加两次。
相反,您可以使用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'];
答案 1 :(得分:0)
REQUEST_URI将为您提供example.com之后的所有内容,因此请将其全部放在一起。
$url = $_SERVER['HTTP_HOST'] . "/" . $row_menu['page_link'];
您可以找到$ _SERVER引用的完整列表here。
答案 2 :(得分: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;