PHP $ _SERVER ['SERVER_NAME']正确使用

Kle*_*der 2 php

这里没有问题

我正在使用php构建一个交互式网站,我决定做一个交互式菜单.好吧,我的菜单包含一个名为menu.php的文件.

<?php
    echo "<ul>
        <li><a href='".$_SERVER['SERVER_NAME']."/menu/register.php'>Cadastro</a><br></li>
        </ul>";
?>
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,但是当我点击此链接时,它就像是那样

htpp:// localhost/my_site/localhost /menu/register.php

编辑:我如何删除该额外的localhost?

提前致谢

Pek*_*ica 7

那是因为你没有使用http://前缀.你必须使用

   <li><a href='http://".$_SERVER['SERVER_NAME']."/menu/register.php'></li>
Run Code Online (Sandbox Code Playgroud)

(假设http://您的网站可以使用的唯一协议)

但是,如果您有一个固定的站点结构,请考虑使用同样有效的相对路径,但不要头疼:

 <li><a href='/menu/register.php'></li>
Run Code Online (Sandbox Code Playgroud)


Gum*_*mbo 5

$_SERVER['SERVER_NAME'] 仅包含Web服务器/虚拟主机的名称:

'SERVER_NAME'
当前脚本正在其下执行的服务器主机的名称.如果脚本在虚拟主机上运行,​​则这将是为该虚拟主机定义的值.

在你的情况下它是localhost.并附加类似于/menu/register.php它的路径会产生相对路径:

localhost/menu/register.php
Run Code Online (Sandbox Code Playgroud)

现在,当您在基URI的文档中使用该URI引用http://localhost/my_site/(或具有相同路径前缀的类似URI)时,localhost/menu/register.php客户端将该相对路径解析为:

http://localhost/my_site/localhost/menu/register.php
Run Code Online (Sandbox Code Playgroud)

这就是你获得输出的原因.

那么你究竟想要完成什么?