在PHP中,是否有一种可靠而好的方法来获取这些东西:
协议:即http或https Servername:例如localhost Portnumber:例如8080
我可以使用获取服务器名称$_SERVER['SERVER_NAME'].
我可以得到协议,但我不认为它是完美的:
if(strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https') {
return "https";
}
else {
return "http";
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何获得端口号.我使用的端口号不是80 ..它们是8080和8888.
谢谢.
sbr*_*bot 13
返回完整协议服务器端口信息的函数:
function getMyUrl()
{
$protocol = (!empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) == 'on' || $_SERVER['HTTPS'] == '1')) ? 'https://' : 'http://';
$server = $_SERVER['SERVER_NAME'];
$port = $_SERVER['SERVER_PORT'] ? ':'.$_SERVER['SERVER_PORT'] : '';
return $protocol.$server.$port;
}
Run Code Online (Sandbox Code Playgroud)
这是我使用的:
function my_server_url()
{
$server_name = $_SERVER['SERVER_NAME'];
if (!in_array($_SERVER['SERVER_PORT'], [80, 443])) {
$port = ":$_SERVER[SERVER_PORT]";
} else {
$port = '';
}
if (!empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) == 'on' || $_SERVER['HTTPS'] == '1')) {
$scheme = 'https';
} else {
$scheme = 'http';
}
return $scheme.'://'.$server_name.$port;
}
Run Code Online (Sandbox Code Playgroud)