0

私はphpコードでこの一般的なエラーを修正する方法について正しい答えを探してきました.コードのhttpヘッダーfailed to open stream: HTTP request failed!をバイパスするようにコードを書き直すことに解決策があると本当に思います. User-Agentアクセスする必要があるファイルは、このコードと同じサーバーにあります。このスクリプトの関数部分を書き直す方法について助けが必要です。

function runapp($dir,$latdeg,$latmin,$latsec,$longdeg,$longmin,$longsec)
{
    global $_english;

    $query= ($_english ? 'http://esnig.org/cgi-bin/ntv2_geo2_e.cgi' : 'http://esnig.org/cgi-bin/ntv2_geo2_f.cgi').
        '?' . PAR_DIR     .'=' . $dir .
        '&' . PAR_LATDEG  .'=' . $latdeg .
        '&' . PAR_LATMIN  .'=' . $latmin .
        '&' . PAR_LATSEC  .'=' . $latsec .
        '&' . PAR_LONGDEG .'=' . $longdeg .
        '&' . PAR_LONGMIN .'=' . $longmin .
        '&' . PAR_LONGSEC .'=' . $longsec;


    $response=file($query); 

    foreach ($response as $value)
    {
        echo $value;
    }
}
?>
4

2 に答える 2

0

file_get_contentのマニュアルページから:

注:スペースなどの特殊文字を使用してURIを開く場合は、urlencode()を使用してURIをエンコードする必要があります。

したがって、前にクエリパラメータをurlencodeしてみてください。さらに、 curlを使用してインターネットURLからドキュメントを取得することをお勧めします

于 2013-02-19T14:16:44.290 に答える
0

うーん、それらの URL にリクエストを送信すると、403 Forbidden レスポンスが返されます。それはそれでしょうか?

そうでない場合は、 runapp() 関数のパラメーターが空でない値を持つことをテストしていないようです。それらは空の文字列である可能性があります。一部の値を空にしてリクエストを実行するとどうなりますか? 不正な形式のクエリ パラメータが取得される可能性があります。

つまり、パラメータの長さや !empty などを確認し、設定されている場合にのみクエリ文字列に追加する必要があります。

于 2013-02-19T14:21:35.447 に答える