JIKA : Anda hanya perlu satu tajuk, alih-alih semua tajuk, metode tercepat adalah:
<?php
// Replace XXXXXX_XXXX with the name of the header you need in UPPERCASE (and with '-' replaced by '_')
$headerStringValue = $_SERVER['HTTP_XXXXXX_XXXX'];
LAIN JIKA : Anda menjalankan PHP sebagai modul Apache atau, pada PHP 5.4, menggunakan FastCGI (metode sederhana):
apache_request_headers ()
<?php
$headers = apache_request_headers();
foreach ($headers as $header => $value) {
echo "$header: $value <br />\n";
}
ELSE: Dalam hal lain, Anda dapat menggunakan (implementasi userland):
<?php
function getRequestHeaders() {
$headers = array();
foreach($_SERVER as $key => $value) {
if (substr($key, 0, 5) <> 'HTTP_') {
continue;
}
$header = str_replace(' ', '-', ucwords(str_replace('_', ' ', strtolower(substr($key, 5)))));
$headers[$header] = $value;
}
return $headers;
}
$headers = getRequestHeaders();
foreach ($headers as $header => $value) {
echo "$header: $value <br />\n";
}
Lihat Juga :
getallheaders () - (PHP> = 5.4) edisi lintas platform Alias of apache_request_headers()
apache_response_headers () - Ambil semua header respons HTTP.
headers_list () - Ambil daftar header yang akan dikirim.
RFC3875 , 4.1.18:
sumber
$_SERVER
variabel? Dokumentasi PHP di php.net/manual/en/reserved.variables.server.php mengelak tentang apa yang bisa kita yakini ada di sana.cache-control
tajuk, tapi saya tidak melihatnya di mana pun di$_SERVER
. Saya memang melihat beberapa tajuk diawali denganHTTP_
, termasuk "HTTP_ACCEPT", dan "HTTP_UPGRADE_INSECURE_REQUESTS" dan "HTTP_USER_AGENT" (di antara beberapa lainnya). Tapi tidak ada untuk "kontrol cache" juga tidak ada untuk "pragma". Ini terlepas dari kasus atauHTTP_
awalan. Apakah saya melewatkan sesuatu?_SERVER["HTTP_CACHE_CONTROL"] max-age=0
Anda harus menemukan semua header HTTP di
$_SERVER
variabel global yang diawali denganHTTP_
huruf besar dan dengan tanda hubung (-) diganti dengan garis bawah (_).Misalnya Anda
X-Requested-With
dapat ditemukan di:Mungkin nyaman untuk membuat array asosiatif dari
$_SERVER
variabel. Ini bisa dilakukan dalam beberapa gaya, tapi di sini ada fungsi yang mengeluarkan kunci camelcased:Sekarang cukup gunakan
$headers['XRequestedWith']
untuk mengambil header yang diinginkan.Manual PHP di
$_SERVER
: http://php.net/manual/en/reserved.variables.server.phpsumber
parseRequestHeaders()
fungsi. Jika array asosiatif seperti itu diperlukan, maka IMO fungsi apache adalah opsi terbaik, karena mengembalikan persis header yang diterima daripada versi CamelCase yang rusak. (Juga perhatikan bahwa pada PHP 5.4, tidak lagi hanya Apache.)apache_request_headers()
ataugetallheaders()
sepertinya tidak menggunakan nama judul saat saya menguji. Mereka kembali tepat ketika saya lulus dari sisi klien. Lalu mengapa Anda menggunakan nama judul dalam fungsi penggantian seperti itu?Karena PHP 5.4.0 Anda dapat menggunakan
getallheaders
fungsi yang mengembalikan semua header permintaan sebagai array asosiatif:Sebelumnya fungsi ini hanya berfungsi ketika PHP dijalankan sebagai modul Apache / NSAPI.
sumber
strtolower
kurang dalam beberapa solusi yang diusulkan, RFC2616 (HTTP / 1.1) mendefinisikan bidang header sebagai entitas case-insensitive. Semuanya, bukan hanya bagian nilai .Jadi saran seperti hanya mem- parsing entri HTTP_ salah.
Lebih baik seperti ini:
Perhatikan perbedaan halus dengan saran sebelumnya. Fungsi di sini juga berfungsi di php-fpm (+ nginx).
sumber
Date
header - dan bahwa "Nilai parameter [teks dalam Content-Type setelah titik koma] mungkin atau mungkin tidak peka huruf besar-kecil". Jadi mengingat setidaknya ada dua header dengan nilai case-sensitive, sepertinya Anda salah.HTTP header fields, which include general-header (section 4.5), request-header (section 5.3), response-header (section 6.2), and entity-header (section 7.1) fields, follow the same generic format as that given in Section 3.1 of RFC 822 [9]. Each header field consists of a name followed by a colon (":") and the field value. Field names are case-insensitive.
Jadi saya kira Anda salah.Berikan nama tajuk ke fungsi ini untuk mendapatkan nilainya tanpa menggunakan
for
lingkaran. Mengembalikan nol jika tajuk tidak ditemukan.Catatan: ini hanya berfungsi dengan server Apache, lihat: http://php.net/manual/en/function.getallheaders.php
Catatan: fungsi ini akan memproses dan memuat semua header ke memori dan itu kurang berkinerja daripada
for
loop.sumber
Untuk mempermudah, berikut ini cara mendapatkan yang Anda inginkan:
Sederhana:
atau ketika Anda perlu mendapatkannya satu per satu:
Header lain juga ada dalam array super global $ _SERVER, Anda dapat membaca tentang cara mendapatkannya di sini: http://php.net/manual/en/reserved.variables.server.php
sumber
HTTP_
$headerKey
Saya menggunakan CodeIgniter dan menggunakan kode di bawah ini untuk mendapatkannya. Semoga bermanfaat bagi seseorang di masa depan.
sumber
Begini cara saya melakukannya. Anda harus mendapatkan semua tajuk jika $ header_name tidak lulus:
Bagiku itu terlihat jauh lebih sederhana daripada sebagian besar contoh yang diberikan dalam jawaban lain. Ini juga mendapatkan metode (GET / POST / dll.) Dan URI diminta ketika mendapatkan semua header yang dapat berguna jika Anda mencoba menggunakannya dalam log.
Inilah hasilnya:
sumber
Ini cara mudah untuk melakukannya.
sumber
Cuplikan PHP kecil ini dapat membantu Anda:
sumber
Saya menggunakan fungsi ini untuk mendapatkan header kustom, jika header dimulai dari "HTTP_X_" kami mendorong dalam array :)
sumber
jika hanya satu kunci yang diperlukan untuk diambil, Misalnya
"Host"
alamat diperlukan, maka kita dapat menggunakanSehingga kita dapat menghindari loop dan meletakkannya sejajar dengan output echo
sumber
PHP 7: Null Coalesce Operator
sumber
Ini berfungsi jika Anda memiliki server Apache
Kode PHP:
Hasil:
sumber