2013-08-03 4 views
6

görüntülemek için bir apache_request_headers alternatve var Şu anda bir Çevrimiçi MMO için bir IGB (In-Game-Browser) bir uygulama geliştiriyorum. Üçüncü taraf geliştirme için tarayıcı, HTTP başlıklarını Locations, Item ID'ler, Items Type ID'ler, vb. Gibi oyun bilgilerinde gönderir.HTTP Başlıkları

Bu alıştırma yapmak için kullandığım küçük bir betik. Bu betik yerel sunucumda çalışıyor ve bu konuda yayınlanan herkes gibi web sunucumda çalışmaz. Bunun Apache'nin bir modül olarak kurulmamasından kaynaklandığı sonucuna vardım. Hosting sağlayıcımla konuştum. Bana "apache_request_headers" için bir alternatif bulmam gerekenden başka bir şey anlatamayacaklarını söylediler. Bu konuyla ilgili daha önce yayınlanmış tüm konulara bu sitede baktım ve bunların hepsinin nasıl bir araya geldiğini göremiyorum. Son sonucumu gerçekleştirmek için buradaki örnekleri nasıl kullanırım. Bunun gibi [soru]: Call to undefined function apache_request_headers()

Kodum:

<?php 
$headers = apache_request_headers(); 

foreach ($headers as $header => $value) { 
    echo "$header: $value <br />\n"; 
} 
?> 

Benim hatası:

Fatal error: Call to undefined function apache_request_headers() in /home/ncgotggb/public_html/ezalternatives.com/index.php on line 2 

hızlı bir tempoda bu yıl gidip kendini öğretilen oldu ve ben öğrenme edilmiştir Bu yüzden hala bu kavramların bir çoğunu yenileyim. Bu noktada, ağır bir şekilde taahhüt ettiğim ve tamamlaması gereken bir seçeneğim yok. Cevabınızı görüntülerken Çözümünüzü eksiksiz olarak göstermişseniz çok memnun oluruz.

+0

http://stackoverflow.com/a/27957883/919216 –

cevap

8

Bu sizin yerel sunucuda gibi sesler Apache kullanılan ve bu fonksiyon sadece sunucu PHP 5.4.0 çalışmadığı sürece, o zaman da FastCGI altında çalışır (Apache ile çalışır gibi uzak sunucu, değil.

On Bu işlevin PHP Manual sayfası, yorumculardan biri sadece yerleşik olanın mevcut olmaması durumunda ilan edilecek bir değiştirme işlevini içeriyordu. Bunu test etmedim, ancak başka bir yerde aynı işlevi gördüğümü gördüm.

if(!function_exists('apache_request_headers')) { 
    function apache_request_headers() { 
     $arh = array(); 
     $rx_http = '/\AHTTP_/'; 

     foreach($_SERVER as $key => $val) { 
      if(preg_match($rx_http, $key)) { 
       $arh_key = preg_replace($rx_http, '', $key); 
       $rx_matches = array(); 
      // do some nasty string manipulations to restore the original letter case 
      // this should work in most cases 
       $rx_matches = explode('_', $arh_key); 

       if(count($rx_matches) > 0 and strlen($arh_key) > 2) { 
        foreach($rx_matches as $ak_key => $ak_val) { 
         $rx_matches[$ak_key] = ucfirst($ak_val); 
        } 

        $arh_key = implode('-', $rx_matches); 
       } 

       $arh[$arh_key] = $val; 
      } 
     } 

     return($arh); 
    } 
} 
0

Ben ISS Config'de sitemde 'Hızlı CGI' olarak PHP sahip kuruldu bulundu - 'MOD-PHP' sabit şeyler bu güzel değişen .

+1

Not: [apache_request_headers()] (http://php.net/manual/en/function.apache-request-headers.php) altındadır. PHP 5.4.0'dan beri FastCGI – Benjamin