Php 防止将链接添加到另一个链接

Php 防止将链接添加到另一个链接,php,mysql,url,Php,Mysql,Url,您好,我目前正在使用php生成一个带有自己构建的CMS系统的菜单 我正在创建一个动态链接:$url=$\u-SERVER['HTTP\u-HOST'].$\u-SERVER['REQUEST\u-URI']./; 比我要补充的还要多$数据库中的行菜单['page\u link']。一开始它工作得很完美: 举例来说= $row_menu['page_link'] = page2; $url . $row_menu['page_link']; 它将作为示例返回: 但当我再次单击时,它会再次添加第

您好,我目前正在使用php生成一个带有自己构建的CMS系统的菜单

我正在创建一个动态链接:$url=$\u-SERVER['HTTP\u-HOST'].$\u-SERVER['REQUEST\u-URI']./; 比我要补充的还要多$数据库中的行菜单['page\u link']。一开始它工作得很完美:

举例来说=

$row_menu['page_link'] = page2;

$url . $row_menu['page_link'];
它将作为示例返回:

但当我再次单击时,它会再次添加第2页,如:

我如何防止这种情况


提前谢谢

因为第一次您的$\u服务器['REQUEST\u URI']会像http://example.com 但是,当用户单击链接时,$\u SERVER['REQUEST\u URI']的值将变为http://example.com/page2.That这就是为什么它要追加两次

相反,您可以使用HTTP\u REFERER,如

考虑到$\u服务器['HTTP\u REFERER']将导致http://example.com.Also 你可以试试看

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

REQUEST_URI将为您提供example.com之后的任何内容,所以将其全部忽略

$url = $_SERVER['HTTP_HOST'] . "/" . $row_menu['page_link'];
您可以找到$\u服务器引用的完整列表。

尝试以下操作:

$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;

是的,但是我如何防止它这样做呢?http referer不可信任我认为如果您尝试在这样的页面中使用此$url,您将遇到问题:。如果我理解,在这种情况下,您需要$url。此$url将在此处为@GabrielMoretti提供$row_菜单['page_link']=page2;它只是附加了hostitought,他需要使用请求的URI根据当前路径生成链接。。在这种情况下,我认为你的解决方案行不通谢谢你的回答,它非常有用!谢谢你的回答!但是当我尝试这个方法时,页面显示为blanc,我在['page_link']之后添加了一个分号,但这并没有解决问题。
$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;