6

私は現在、オンライン MMO 用の IGB (インゲーム ブラウザー) でアプリを開発しています。サード パーティの開発の場合、ブラウザーは、場所、アイテム ID、アイテム タイプ ID などのゲーム内情報を含む HTTP ヘッダーを送信します。

これは、私が練習に使用してきた小さなスクリプトです。このスクリプトは私のローカル サーバーでは機能しますが、この問題に投稿した他のすべてのユーザーと同様に、私の Web サーバーでは機能しません。これは Apache がモジュールとしてインストールされていないことが原因であるという結論に達しました。ホスティングプロバイダーと話しました。彼らは、「apache_request_headers」に代わるものを見つける必要があること以外は何も言えないと言いました。このサイトのこのトピックに関する以前に投稿された問題をすべて調べましたが、すべてがどのように組み合わされているかわかりません。私の最終結果を達成するためにここにある例を使用する方法。このように [質問]:未定義関数 apache_request_headers() の呼び出し

私のコード:

<?php
$headers = apache_request_headers();

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

私のエラー:

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

私は今年、独学で速いペースで学んできたので、これらの概念の多くについてはまだ初心者です. この時点で、私は選択の余地がありません。私は真剣に取り組んでおり、それを完了する必要があります。回答を表示する場合 回答を完全な形で表示していただければ幸いです。

4

2 に答える 2

9

この関数は Apache でのみ動作するため、ローカル サーバーでは Apache が実行されており、リモート サーバーでは実行されていないようです (サーバーが PHP 5.4.0 を実行していない限り、FastCGI の下でも動作します)。

この関数の PHP マニュアル ページでは、組み込みの関数が存在しない場合にのみ宣言される置換関数が、コメント投稿者の 1 人に含まれていました。私はこれをテストしていませんが、同じ関数が他の場所に投稿されているのを見ました。

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 );
    }
}
于 2013-08-03T06:42:17.907 に答える