2009-09-10 25 views

Trả lời

18

Mọi trường tiêu đề yêu cầu HTTP nằm trong $_SERVER (trừ Cookie) và khóa bắt đầu bằng HTTP_. Nếu bạn đang sử dụng Apache, bạn cũng có thể thử apache_request_headers.

+0

Sau đó, thông tin về Cookie thì sao? Chúng tôi có thể sử dụng $ _COOKIE [] để tìm nạp chúng không? –

+1

@dskanth Có, '$ _COOKIE' sẽ chứa các cookie đã được phân tích cú pháp do khách hàng gửi. Nhưng sẽ không có '$ _SERVER ['HTTP_COOKIE']'. – Gumbo

+0

@Gumbo, Khác biệt này với 'getallheaders' như thế nào? Có một số tiêu đề bị tước bỏ sau này không? – Pacerier

33

Hãy thử điều này

print_r ($ _SERVER)

Nó sẽ liệt kê tất cả mọi thứ trong mảng

+0

Nếu bạn muốn sử dụng một cái gì đó cụ thể hơn: '' – LeRoy

5

Nhìn vào biến $_SERVER để xem những gì nó chứa. Trang hướng dẫn được liên kết có rất nhiều thông tin hữu ích, nhưng cũng chỉ cần thực hiện một số var_dump trên đó để xem những gì thực sự có trong đó. Nhiều người trong số các mục sẽ hoặc sẽ không được điền vào, tùy thuộc vào những gì khách hàng quyết định làm, và quirks lẻ của PHP. Nhìn vào máy chủ cục bộ của tôi, cũng có một mục nhập $ _SERVER ["ALL_HTTP"] chỉ liệt kê tất cả chúng dưới dạng một chuỗi, nhưng dường như đây không phải là tiêu chuẩn vì nó không được liệt kê trên trang hướng dẫn sử dụng.

19

bạn có thể sử dụng getallheaders() để nhận một mảng của tất cả các tiêu đề HTTP được gửi.

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

Bạn chỉ có thể sử dụng apache_request_headers() hoặc bí danh của nó getallheaders().

Cách sử dụng: echo json_encode(getallheaders());

Nếu trên chức năng không tồn tại (PHP cũ hoặc nginx), bạn có thể sử dụng điều này như một dự phòng:

<?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

bạn có thể sử dụng apache_request_header(); có thể giúp bạn.

$headers = apache_request_headers();   
foreach ($headers as $header => $value) { 
echo "<pre>"; 
echo "$header : $value"; 
echo "</pre>"; 
} 
Các vấn đề liên quan