PHP erhält vollständigen Servernamen einschließlich Portnummer und Protokoll

Lesezeit: 1 Minute

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.

  • 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

Benutzeravatar von Jonnix
Jonnix

Schauen Sie sich die an Dokumentation.

Sie wollen $_SERVER['SERVER_PORT'] Ich finde.

  • if($_SERVER[‘SERVER_PORT’] != ‘443’) { $URL = ‘https://’.$_SERVER[‘SERVER_NAME’].$_SERVER[‘REQUEST_URI’]; header(“Ort: $URL”); ?>

    – Mohammed Saqib Rajput

    6. November 2015 um 7:14 Uhr

$_SERVER['SERVER_PORT'] zeigt Ihnen den aktuell verwendeten Port an.

Benutzeravatar von sbrbot
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

Benutzeravatar von Alix Axel
Alix Axel

$protocol = isset($_SERVER['HTTPS']) && (strcasecmp('off', $_SERVER['HTTPS']) !== 0);
$hostname = $_SERVER['SERVER_ADDR'];
$port = $_SERVER['SERVER_PORT'];

Kristians Benutzer-Avatar
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

1433970cookie-checkPHP erhält vollständigen Servernamen einschließlich Portnummer und Protokoll

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy