2009-09-10 4 views

ответ

18

Каждое поле заголовка HTTP-запроса находится в $_SERVER (кроме Cookie), а ключ начинается с HTTP_. Если вы используете Apache, вы также можете попробовать apache_request_headers.

+0

Тогда как насчет информации о Cookie? Можем ли мы использовать $ _COOKIE [] для их получения? –

+1

@dskanth Да, '$ _COOKIE' будет содержать уже обработанные файлы cookie, отправленные клиентом. Но не будет '$ _SERVER ['HTTP_COOKIE']'. – Gumbo

+0

@Gumbo, Как этот diff от 'getallheaders'? Есть ли какие-то заголовки, которые удаляются для последнего? – Pacerier

33

Попробуйте

print_r ($ _SERVER)

Он перечислит все в пределах массива

+0

Если вы хотите использовать более конкретное использование: '' – LeRoy

5

Посмотрите на переменную $_SERVER, чтобы увидеть, что она содержит. Связанная страница руководства содержит много полезной информации, но также просто делает var_dump на ней, чтобы увидеть, что на самом деле в ней. Многие из записей будут заполнены или не будут заполнены, в зависимости от того, что клиент решает сделать, и странных причуд PHP. Глядя на тот, что находится на моем локальном сервере, есть также записи $ _SERVER ["ALL_HTTP"], которые просто перечисляют их как строку, но, по-видимому, это не стандартно, поскольку он не указан на странице руководства.

19

вы можете использовать getallheaders(), чтобы получить массив всех отправленных HTTP-заголовков.

$headers = getallheaders(); 
foreach($headers as $key=>$val){ 
    echo $key . ': ' . $val . '<br>'; 
} 
5

Вы можете просто использовать apache_request_headers() или его псевдоним getallheaders().

Использование: echo json_encode(getallheaders());

Если данная функция не существует (старый PHP или Nginx), вы можете использовать это в качестве запасного варианта:

<?php 
if (!function_exists('getallheaders')){ 
    function getallheaders() { 
     $headers = ''; 
     foreach ($_SERVER as $name => $value) { 
      if (substr($name, 0, 5) == 'HTTP_') { 
       $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; 
      } 
     } 
     return $headers; 
    } 
} 
?> 
0

вы можете использовать apache_request_header(); может помочь вам.

$headers = apache_request_headers();   
foreach ($headers as $header => $value) { 
echo "<pre>"; 
echo "$header : $value"; 
echo "</pre>"; 
} 
Смежные вопросы