Все значения PHP-переменной $_SERVER

Все значения PHP-переменной $_SERVER

Способ №1: использование массива индексов

Читая официальное руководство по PHP, в частности, про зарезервированную переменную $_SERVER, я наткнулся на интересный комментарий, в котором был приведён скрипт, выводящий все её значения. Этот скрипт я немного подкорректировал и выложил ниже.

<?php

$indices = array(
	'PHP_SELF',
	'argv',
	'argc',
	'GATEWAY_INTERFACE',
	'SERVER_ADDR',
	'SERVER_NAME',
	'SERVER_SOFTWARE',
	'SERVER_PROTOCOL',
	'REQUEST_METHOD',
	'REQUEST_TIME',
	'REQUEST_TIME_FLOAT',
	'QUERY_STRING',
	'DOCUMENT_ROOT',
	'HTTP_ACCEPT',
	'HTTP_ACCEPT_CHARSET',
	'HTTP_ACCEPT_ENCODING',
	'HTTP_ACCEPT_LANGUAGE',
	'HTTP_CONNECTION',
	'HTTP_HOST',
	'HTTP_REFERER',
	'HTTP_USER_AGENT',
	'HTTPS',
	'REMOTE_ADDR',
	'REMOTE_HOST',
	'REMOTE_PORT',
	'REMOTE_USER',
	'REDIRECT_REMOTE_USER',
	'SCRIPT_FILENAME',
	'SERVER_ADMIN',
	'SERVER_PORT',
	'SERVER_SIGNATURE',
	'PATH_TRANSLATED',
	'SCRIPT_NAME',
	'REQUEST_URI',
	'PHP_AUTH_DIGEST',
	'PHP_AUTH_USER',
	'PHP_AUTH_PW',
	'AUTH_TYPE',
	'PATH_INFO',
	'ORIG_PATH_INFO'
);

echo '<table style="border-spacing: 2em;">' . "\n";

	foreach ($indices as $index) {
		$result = (isset( $_SERVER[$index] )) ?
			('<td>' . $_SERVER[$index] . '</td>') :
			('<td>-</td>');
		echo '<tr><td>$_SERVER[\'<i style="color: red;">' . $index . '</i>\']</td>' . $result . '</tr>' . "\n";
	}

echo '</table>';

?>

Способ №2: использование функции print_r()

В процессе написания первого способа вывода всех значений переменной $_SERVER, Мне пришла в голову иная мысль о том как можно их вывести:

<?php

echo '<pre>';
print_r( $_SERVER );
echo '</pre>';

?>

Аналогичную идею, позже ☺, я обнаружил в другом комментарии:

<?php

echo '<textarea>';
print_r( $_SERVER );
echo '</textarea>';

?>

Способ №3: использование конструкции foreach () {}

Третий способ похож на предыдущий, однако:

<?php

foreach ($_SERVER as $index => $value) {
	echo '$_SERVER[\'' . $index . '\'] = ' . $value .' <br>' . "\n";
}

?>

Результат работы второго и третьего способов отличается от результата первого.

Списки индексов

Оригинальный (как на PHP.Net) Сортированный по алфавиту
  1. PHP_SELF
  2. argv
  3. argc
  4. GATEWAY_INTERFACE
  5. SERVER_ADDR
  6. SERVER_NAME
  7. SERVER_SOFTWARE
  8. SERVER_PROTOCOL
  9. REQUEST_METHOD
  10. REQUEST_TIME
  11. REQUEST_TIME_FLOAT
  12. QUERY_STRING
  13. DOCUMENT_ROOT
  14. HTTP_ACCEPT
  15. HTTP_ACCEPT_CHARSET
  16. HTTP_ACCEPT_ENCODING
  17. HTTP_ACCEPT_LANGUAGE
  18. HTTP_CONNECTION
  19. HTTP_HOST
  20. HTTP_REFERER
  21. HTTP_USER_AGENT
  22. HTTPS
  23. REMOTE_ADDR
  24. REMOTE_HOST
  25. REMOTE_PORT
  26. REMOTE_USER
  27. REDIRECT_REMOTE_USER
  28. SCRIPT_FILENAME
  29. SERVER_ADMIN
  30. SERVER_PORT
  31. SERVER_SIGNATURE
  32. PATH_TRANSLATED
  33. SCRIPT_NAME
  34. REQUEST_URI
  35. PHP_AUTH_DIGEST
  36. PHP_AUTH_USER
  37. PHP_AUTH_PW
  38. AUTH_TYPE
  39. PATH_INFO
  40. ORIG_PATH_INFO
  1. AUTH_TYPE
  2. DOCUMENT_ROOT
  3. GATEWAY_INTERFACE
  4. HTTPS
  5. HTTP_ACCEPT
  6. HTTP_ACCEPT_CHARSET
  7. HTTP_ACCEPT_ENCODING
  8. HTTP_ACCEPT_LANGUAGE
  9. HTTP_CONNECTION
  10. HTTP_HOST
  11. HTTP_REFERER
  12. HTTP_USER_AGENT
  13. ORIG_PATH_INFO
  14. PATH_INFO
  15. PATH_TRANSLATED
  16. PHP_AUTH_DIGEST
  17. PHP_AUTH_PW
  18. PHP_AUTH_USER
  19. PHP_SELF
  20. QUERY_STRING
  21. REDIRECT_REMOTE_USER
  22. REMOTE_ADDR
  23. REMOTE_HOST
  24. REMOTE_PORT
  25. REMOTE_USER
  26. REQUEST_METHOD
  27. REQUEST_TIME
  28. REQUEST_TIME_FLOAT
  29. REQUEST_URI
  30. SCRIPT_FILENAME
  31. SCRIPT_NAME
  32. SERVER_ADDR
  33. SERVER_ADMIN
  34. SERVER_NAME
  35. SERVER_PORT
  36. SERVER_PROTOCOL
  37. SERVER_SIGNATURE
  38. SERVER_SOFTWARE
  39. argc
  40. argv

Значение $_SERVER['SERVER_SIGNATURE'] автоматически помещается в HTML-элемент <address>, что можно увидеть, протестировав следующий код:

<?php

echo $_SERVER['SERVER_SIGNATURE'];

?>