Get current domain

前端 未结 9 1536
时光取名叫无心
时光取名叫无心 2020-11-29 17:48

I have my site on the server http://www.myserver.uk.com.

On this server I have two domains:

one.com and two.com

I would l

相关标签:
9条回答
  • 2020-11-29 18:00

    Try $_SERVER['SERVER_NAME'].

    Tips: Create a PHP file that calls the function phpinfo() and see the "PHP Variables" section. There are a bunch of useful variables we never think of there.

    0 讨论(0)
  • 2020-11-29 18:01

    Using $_SERVER['HTTP_HOST'] gets me (subdomain.)maindomain.extension. It seems like the easiest solution to me.

    If you're actually 'redirecting' through an iFrame, you could add a GET parameter which states the domain.

    <iframe src="myserver.uk.com?domain=one.com"/>
    

    And then you could set a session variable that persists this data throughout your application.

    0 讨论(0)
  • 2020-11-29 18:04

    The best use would be

    echo $_SERVER['HTTP_HOST'];
    

    And it can be used like this:

    if (strpos($_SERVER['HTTP_HOST'], 'banana.com') !== false) {
        echo "Yes this is indeed the banana.com domain";
    }
    

    This code below is a good way to see all the variables in $_SERVER in a structured HTML output with your keywords highlighted that halts directly after execution. Since I do sometimes forget which one to use myself - I think this can be nifty.

    <?php
        // Change banana.com to the domain you were looking for..
        $wordToHighlight = "banana.com";
        $serverVarHighlighted = str_replace( $wordToHighlight, '<span style=\'background-color:#883399; color: #FFFFFF;\'>'. $wordToHighlight .'</span>',  $_SERVER );
        echo "<pre>";
        print_r($serverVarHighlighted);
        echo "</pre>";
        exit();
    ?>
    
    0 讨论(0)
  • 2020-11-29 18:05

    Everybody is using the parse_url function, but sometimes user may pass the argumet in different format.

    So as to fix that, I have created the function. Check this out:

    function fixDomainName($url='')
    {
        $strToLower = strtolower(trim($url));
        $httpPregReplace = preg_replace('/^http:\/\//i', '', $strToLower);
        $httpsPregReplace = preg_replace('/^https:\/\//i', '', $httpPregReplace);
        $wwwPregReplace = preg_replace('/^www\./i', '', $httpsPregReplace);
        $explodeToArray = explode('/', $wwwPregReplace);
        $finalDomainName = trim($explodeToArray[0]);
        return $finalDomainName;
    }
    

    Just pass the URL and get the domain.

    For example,

    echo fixDomainName('https://stackoverflow.com');
    

    will return the result will be

    stackoverflow.com
    

    And in some situation:

    echo fixDomainName('stackoverflow.com/questions/id/slug');
    

    And it will also return stackoverflow.com.

    0 讨论(0)
  • 2020-11-29 18:07

    I know this might not be entirely on the subject, but in my experience, I find storing WWW-ness of current URL in a variable useful.

    Edit: In addition, please see my comment below, to see what this is getting at.

    This is important when determining whether to dispatch Ajax calls with "www", or without:

    $.ajax("url" : "www.site.com/script.php", ...
    
    $.ajax("url" : "site.com/script.php", ...
    

    When dispatching an Ajax call the domain name must match that of in the browser's address bar, otherwise you will have Uncaught SecurityError in console.

    So I came up with this solution to address the issue:

    <?php
        substr($_SERVER['SERVER_NAME'], 0, 3) == "www" ? $WWW = true : $WWW = false;
    
        if ($WWW) {
            /* We have www.example.com */
        } else {
            /* We have example.com */
        }
    ?>
    

    Then, based on whether $WWW is true, or false run the proper Ajax call.

    I know this might sound trivial, but this is such a common problem that is easy to trip over.

    0 讨论(0)
  • 2020-11-29 18:08

    Try using this: $_SERVER['SERVER_NAME']

    Or parse

    $_SERVER['REQUEST_URI']
    

    apache_request_headers()

    0 讨论(0)
提交回复
热议问题