Cara Menentukan URL Base Domain di PHP

Cara Menentukan Base URL Dengan PHPCara menentukan url base domain di PHP script, atau anda yang mencoba untuk membuat aplikasi berbasis php arau pula anda yang sekarang masih belajar pemrograman PHP pasti membutuhkan sedikit trik ini.
Saya memberikan ini hanya untuk sebagai pembelajaran kalau anda yang sudah expert di bidang ini akan tetapi saya yang salah mohon di koreksi ya 🙂 .

Script / Kode berikut  adalah salah satu cara yang saya pakai untuk menentukan basis domain / basis url utama pada aplikasi web berbasis php saya. Dan tentunya alhamdulillah semuanya lancar. Di code ini adalah anda dapat tetap menentukan url utama domain anda walaupun mengakses subdirektori dan lainnya dan bisa untuk dijadikan sebagai fungsi.

Untuk anda yang masih bingung bagaimana cara menentukan base url domain di PHP script, berikut kodenya :

<?php
/* ------------------------------------------------------------------------------------------------------ \
                                        HELPER
                                 PUT THIS ON YOUR index.php
\ ------------------------------------------------------------------------------------------------------ */

/**
 * isset( $_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' # port 443 is not always for ssl
 * load balancer fix that has x forwarder protocol set with. add $_SERVER['HTTPS'] -> 'on' value
 */
if (isset( $_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
    $_SERVER['HTTPS'] = 'on';
}

/* GETTING PROTOCOL 
----------------------------------------- */
$protocol = ( isset($_SERVER['REQUEST_SCHEME']) && $_SERVER['REQUEST_SCHEME'] == 'https' ) ||
            ( isset( $_SERVER['HTTPS']) && ( strtolower( $_SERVER['HTTPS']) == 'on' || $_SERVER['HTTPS'] == '1' ) )
            ? 'https' : 'http';

/* GETTING DOCUMENT ROOT USING REALPATH AVOID SYMLINK
----------------------------------------- */
$docroot = function_exists('realpath') ? realpath($_SERVER['DOCUMENT_ROOT']) : $_SERVER['DOCUMENT_ROOT'];
// clean path ( windows directory separator fix )
$docroot = str_replace( array( "\\", "\\\\" ), "/", $docroot );

/* GETTING DOCUMENT ROOT USING REALPATH AVOID DIR SYMLINK IF PROVIDE
----------------------------------------- */
$base    = function_exists('realpath') ? realpath(dirname(__FILE__)) : dirname(__FILE__);
$base    = str_replace( array( "\\", "\\\\" ), "/", $base );

/* GETTING HOST AS DOMAIN
----------------------------------------- */
$host    = ( isset( $_SERVER['HTTP_HOST'] ) ? $_SERVER['HTTP_HOST'] : isset( $_SERVER['SERVER_NAME'] ) ? $_SERVER['SERVER_NAME'] : false );
/**
 * if no host exits
 *  if server is not support !important
 */
if( ! $host ) :
    header( 'HTTP/1.1 400 Bad Request');
    die('Server Not Supported, HTTP_HOST / SERVER_NAME is not defined!');
endif;

/* ------------------------------------------------------------------------------------------------------ \
                                        END HELPER
\ ------------------------------------------------------------------------------------------------------ */

// this is the path after domain will be directory after domain name
$path     = str_replace( $docroot, '', $base );
// remove slashes on start and ending with adding slash on start
$path     = '/'.trim($path, '/');
// real domain base url
$baseurl  = rtrim( $protocol.'://'. $host.$path );

Letakkan script tersebut di file index.php  anda atau file yang berada pada direktori utama aplikasi / web anda. Dan anda dapat menambahkan define , atau lainnya agar dapat dipanggil secara global pada aplikasi anda.

Dan apabila ingin mendapatkan IP asli dari Visitor web anda bisa baca : Cara Mengetahui Real IP Visitor Dengan PHP

untuk gist dapat di lihat disini : https://gist.github.com/aufa/5c0aafc6b8c7d218db05

Happy Coding.