Gibt es in PHP eine zuverlässig und gute Möglichkeit, diese Dinge zu bekommen:
Protokoll: zB http oder https Servername: zB localhost Portnummer: zB 8080
Ich kann den Servernamen mit abrufen $_SERVER['SERVER_NAME']
.
Ich kann das Protokoll irgendwie bekommen, aber ich denke nicht, dass es perfekt ist:
if(strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https') {
return "https";
}
else {
return "http";
}
Ich weiß aber nicht, wie ich an die Portnummer komme. Die von mir verwendeten Portnummern sind nicht 80, sondern 8080 und 8888.
Vielen Dank.
Jonnix
Schauen Sie sich die an Dokumentation.
Sie wollen $_SERVER['SERVER_PORT']
Ich finde.
$_SERVER['SERVER_PORT']
zeigt Ihnen den aktuell verwendeten Port an.
sbrbot
Die Funktion, die die vollständigen Informationen zum Protokollserverport zurückgibt:
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;
}
Folgendes verwende ich:
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;
}
<?php
$services = array('http', 'ftp', 'ssh', 'telnet', 'imap', 'smtp', 'nicname', 'gopher', 'finger', 'pop3', 'www');
foreach ($services as $service) {
$port = getservbyname($service, 'tcp');
echo $service . ":- " . $port . "<br />\n";
}
?>
Dies zeigt alle Portnummern an.
Wenn Sie die Portnummer bereits kennen, können Sie Folgendes tun:
echo getservbyport(3306, "http"); // 80
Alix Axel
$protocol = isset($_SERVER['HTTPS']) && (strcasecmp('off', $_SERVER['HTTPS']) !== 0);
$hostname = $_SERVER['SERVER_ADDR'];
$port = $_SERVER['SERVER_PORT'];
Kristian
if(strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,4))=='http') {
$strOut = sprintf('http://%s:%d',
$_SERVER['SERVER_ADDR'],
$_SERVER['SERVER_PORT']);
} else {
$strOut = sprintf('https://%s:%d',
$_SERVER['SERVER_ADDR'],
$_SERVER['SERVER_PORT']);
}
return $strOut;
Probieren Sie so etwas aus, wenn Sie möchten
14339700cookie-checkPHP erhält vollständigen Servernamen einschließlich Portnummer und Protokollyes
print_r($_SERVER)
und sehen, was es dir gibt.– Jon
15. September 2011 um 13:07 Uhr
Ich verwende Vue CLI Port Forwarding lokal, also war für mich das Richtige
$_SERVER['HTTP_X_FORWARDED_PORT']
– dave
17. November um 15:40 Uhr