Bootstrap FreeKB - PHP - HTTP Headers ($_SERVER)
PHP - HTTP Headers ($_SERVER)

Updated:   |  PHP articles

In PHP, the HTTP headers are stored in the $_SERVER variable. print_r or var_dump can be used to display the content of the $_SERVER variable.

<?php
  var_dump($_SERVER);
?>

 

Which should return something like this.

array(50) { ["HOSTNAME"]=> string(12) "78e0ca90f5c9" ["PHP_INI_DIR"]=> string(18) "/usr/local/etc/php" ["HOME"]=> string(8) "/var/www" ["PHP_LDFLAGS"]=> string(12) "-Wl,-O1 -pie" ["PHP_CFLAGS"]=> string(83) "-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" ["PHP_VERSION"]=> string(5) "8.1.1" ["GPG_KEYS"]=> string(122) "528995BFEDFBA7191D46839EF9BA0ADA31CBD89E 39B641343D8C104B2B146DC3F9C39DC0B9698544 F1F692238FBC1666E5A5CCD4199F9DFEF6FFBAFD" ["PHP_CPPFLAGS"]=> string(83) "-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" ["PHP_ASC_URL"]=> string(54) "https://www.php.net/distributions/php-8.1.1.tar.xz.asc" ["PHP_URL"]=> string(50) "https://www.php.net/distributions/php-8.1.1.tar.xz" ["PATH"]=> string(60) "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ["PHPIZE_DEPS"]=> string(76) "autoconf dpkg-dev file g++ gcc libc-dev make pkg-config re2c" ["PWD"]=> string(13) "/var/www/html" ["PHP_SHA256"]=> string(64) "33c09d76d0a8bbb5dd930d9dd32e6bfd44e9efcf867563759eb5492c3aff8856" ["USER"]=> string(8) "www-data" ["HTTP_CONNECTION"]=> string(5) "close" ["HTTP_X_FORWARDED_FOR"]=> string(13) "192.168.0.104" ["HTTP_COOKIE"]=> string(80) "PHPSESSID=7a85b23b205b725839b8b15fa4761e6a; PHPSESSID=m2sea5hqvdr6krn6ruiq5uruo5" ["HTTP_ACCEPT_LANGUAGE"]=> string(14) "en-US,en;q=0.9" ["HTTP_ACCEPT_ENCODING"]=> string(13) "gzip, deflate" ["HTTP_ACCEPT"]=> string(135) "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" ["HTTP_USER_AGENT"]=> string(115) "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36" ["HTTP_UPGRADE_INSECURE_REQUESTS"]=> string(1) "1" ["HTTP_CACHE_CONTROL"]=> string(9) "max-age=0" ["HTTP_HOST"]=> string(16) "stage.freekb.net" ["REDIRECT_STATUS"]=> string(3) "200" ["SERVER_NAME"]=> string(15) "test.freekb.net" ["SERVER_PORT"]=> string(5) "18085" ["SERVER_ADDR"]=> string(10) "172.17.0.4" ["REMOTE_PORT"]=> string(5) "32860" ["REMOTE_ADDR"]=> string(11) "192.168.0.5" ["SERVER_SOFTWARE"]=> string(12) "nginx/1.21.3" ["GATEWAY_INTERFACE"]=> string(7) "CGI/1.1" ["REQUEST_SCHEME"]=> string(4) "http" ["SERVER_PROTOCOL"]=> string(8) "HTTP/1.1" ["DOCUMENT_ROOT"]=> string(25) "/var/www/shared_resources" ["DOCUMENT_URI"]=> string(8) "/50x.php" ["REQUEST_URI"]=> string(8) "/50x.php" ["SCRIPT_NAME"]=> string(8) "/50x.php" ["CONTENT_LENGTH"]=> string(0) "" ["CONTENT_TYPE"]=> string(0) "" ["REQUEST_METHOD"]=> string(3) "GET" ["QUERY_STRING"]=> string(0) "" ["SCRIPT_FILENAME"]=> string(33) "/var/www/shared_resources/50x.php" ["FCGI_ROLE"]=> string(9) "RESPONDER" ["PHP_SELF"]=> string(8) "/50x.php" ["REQUEST_TIME_FLOAT"]=> float(1640596541.86822) ["REQUEST_TIME"]=> int(1640596541) ["argv"]=> array(0) { } ["argc"]=> int(0) }

 

This is often way to messy. A foreach loop can be used to loop through each key/value pair.

<?php
  foreach ( $_SERVER as $key=>$value ) {
    print "\$_SERVER[\"$key\"] == $value<br/>";
  }
?>

 

Which should return something like this.

$_SERVER["HOSTNAME"] == 78e0ca90f5c9
$_SERVER["PHP_INI_DIR"] == /usr/local/etc/php
$_SERVER["HOME"] == /var/www
$_SERVER["PHP_LDFLAGS"] == -Wl,-O1 -pie
$_SERVER["PHP_CFLAGS"] == -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
$_SERVER["PHP_VERSION"] == 8.1.1
$_SERVER["GPG_KEYS"] == 528995BFEDFBA7191D46839EF9BA0ADA31CBD89E 39B641343D8C104B2B146DC3F9C39DC0B9698544 F1F692238FBC1666E5A5CCD4199F9DFEF6FFBAFD
$_SERVER["PHP_CPPFLAGS"] == -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
$_SERVER["PHP_ASC_URL"] == https://www.php.net/distributions/php-8.1.1.tar.xz.asc
$_SERVER["PHP_URL"] == https://www.php.net/distributions/php-8.1.1.tar.xz
$_SERVER["PATH"] == /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$_SERVER["PHPIZE_DEPS"] == autoconf dpkg-dev file g++ gcc libc-dev make pkg-config re2c
$_SERVER["PWD"] == /var/www/html
$_SERVER["PHP_SHA256"] == 33c09d76d0a8bbb5dd930d9dd32e6bfd44e9efcf867563759eb5492c3aff8856
$_SERVER["USER"] == www-data
$_SERVER["HTTP_CONNECTION"] == close
$_SERVER["HTTP_X_FORWARDED_FOR"] == 192.168.0.104
$_SERVER["HTTP_COOKIE"] == PHPSESSID=7a85b23b205b725839b8b15fa4761e6a; PHPSESSID=m2sea5hqvdr6krn6ruiq5uruo5
$_SERVER["HTTP_ACCEPT_LANGUAGE"] == en-US,en;q=0.9
$_SERVER["HTTP_ACCEPT_ENCODING"] == gzip, deflate
$_SERVER["HTTP_ACCEPT"] == text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
$_SERVER["HTTP_USER_AGENT"] == Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
$_SERVER["HTTP_UPGRADE_INSECURE_REQUESTS"] == 1
$_SERVER["HTTP_CACHE_CONTROL"] == max-age=0
$_SERVER["HTTP_HOST"] == stage.freekb.net
$_SERVER["REDIRECT_STATUS"] == 200
$_SERVER["SERVER_NAME"] == test.freekb.net
$_SERVER["SERVER_PORT"] == 18085
$_SERVER["SERVER_ADDR"] == 172.17.0.4
$_SERVER["REMOTE_PORT"] == 33502
$_SERVER["REMOTE_ADDR"] == 192.168.0.5
$_SERVER["SERVER_SOFTWARE"] == nginx/1.21.3
$_SERVER["GATEWAY_INTERFACE"] == CGI/1.1
$_SERVER["REQUEST_SCHEME"] == http
$_SERVER["SERVER_PROTOCOL"] == HTTP/1.1
$_SERVER["DOCUMENT_ROOT"] == /var/www/shared_resources
$_SERVER["DOCUMENT_URI"] == /50x.php
$_SERVER["REQUEST_URI"] == /50x.php
$_SERVER["SCRIPT_NAME"] == /50x.php
$_SERVER["CONTENT_LENGTH"] ==
$_SERVER["CONTENT_TYPE"] ==
$_SERVER["REQUEST_METHOD"] == GET
$_SERVER["QUERY_STRING"] ==
$_SERVER["SCRIPT_FILENAME"] == /var/www/shared_resources/50x.php
$_SERVER["FCGI_ROLE"] == RESPONDER
$_SERVER["PHP_SELF"] == /50x.php
$_SERVER["REQUEST_TIME_FLOAT"] == 1640596619.4513
$_SERVER["REQUEST_TIME"] == 1640596619
$_SERVER["argv"] == Array
$_SERVER["argc"] == 0

 

Or you can print a certain item.

echo $_SERVER['HTTP_COOKIE'];

 




Did you find this article helpful?

If so, consider buying me a coffee over at Buy Me A Coffee



Comments


Add a Comment


Please enter 08694e in the box below so that we can be sure you are a human.