2013-08-03 8 views
6

Obecnie tworzę aplikację w IGB (w grze) do gry online MMO. W przypadku rozwoju stron trzecich przeglądarka wysyła nagłówki HTTP z informacjami o grze, takimi jak lokalizacje, identyfikator produktu, identyfikator typu przedmiotu itp.Czy istnieje apache_request_headers alternat dla wyświetlania nagłówków HTTP

To mały skrypt, z którego korzystałem. Ten skrypt działa na moim lokalnym serwerze i jak wszyscy inni, którzy są umieszczani w tym wydaniu, nie działa on na moim serwerze internetowym. Doszedłem do wniosku, że wynika to z faktu, że Apache nie jest instalowany jako moduł. Rozmawiałem z moim dostawcą usług hostingowych. Powiedzieli, że nie mogą powiedzieć mi niczego poza potrzebą znalezienia alternatywy dla "apache_request_headers". Przejrzałem wszystkie wcześniej opublikowane problemy dotyczące tego tematu na tej stronie i nie jestem w stanie zobaczyć, jak to wszystko razem pasuje. Jak korzystać z przykładów tutaj, aby osiągnąć mój wynik końcowy. Jak to [pytanie]: Call to undefined function apache_request_headers()

Mój kod:

<?php 
$headers = apache_request_headers(); 

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

Mój błąd:

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

Uczę się jak idę w tym roku i to był samoukiem i w szybkim tempie więc nadal jestem początkujący dla wielu z tych koncepcji. W tym momencie nie mam wyboru, jestem mocno zaangażowany i muszę go wypełnić. Podczas wyświetlania odpowiedzi Byłoby bardzo cenne, gdybyś pokazał swoje rozwiązanie w pełnej formie.

+0

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

Odpowiedz

8

Brzmi jak lokalnym serwerem Apache a zdalny serwer nie jest, jak ta funkcja działa tylko z Apache (chyba że serwer działa PHP 5.4.0, to działa również pod FastCGI.

On Strona podręcznika PHP dla tej funkcji, jeden z komentatorów zawiera funkcję zastępczą, która zostanie zadeklarowana tylko wtedy, gdy wbudowana funkcja nie istnieje. Nie testowałem tego, ale widziałem tę samą funkcję, która została opublikowana w innym miejscu.

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

odkryłem, że moja strona w ISP Config została ustawiona mieć PHP jako 'fast-CGI' - zmiana to "mOD-PHP stałych rzeczy ładnie .

+1

Uwaga: [apache_request_headers()] (http://php.net/manual/en/function.apache-request-headers.php) jest dostępny pod FastCGI od PHP 5.4.0 – Benjamin

Powiązane problemy