2012-10-21 16 views
5

次のコード:PHPでヘッダを送信しないのはなぜですか?

$ch = curl_init('http://localhost/testweb/search.php'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLINFO_HEADER_OUT, true); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
     'Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
     'Accept-Encoding gzip, deflate', 
     'Accept-Language en-US,en;q=0.5', 
     'Connection keep-alive', 
     'SomeBull BeingIgnored', 
     'Cookie CLASSICPAGE=off', 
     'User-Agent Mozilla/5.0 (Windows NT 5.1; rv:16.0) Gecko/20100101 Firefox/16.0' 
     )); 
$response = curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch); 
$body = substr($response, -$info['download_content_length']); 
echo $body; 

は、次の出力(php.exeのmycurl.php)を持つ:

Host: localhost 
Accept: */* 
User-Agent  Mozilla/5.0 (Windows NT 5.1; rv: 16.0) Gecko/20100101 Firefox/16.0 

ローカルホスト上のsearch.phpを:

error_reporting(0); 
header("Content-Type: text/plain"); 
foreach (getallheaders() as $name => $value) { 
    echo "$name: $value\n"; 
} 

私の質問があります:私が設定したヘッダには何が起こったのですか?

+0

なぜデバッグ時にエラー報告を無効にするのですか????? – goat

+0

これはコマンドラインアプリケーション用で、PHP Webページコードは別のアプリケーションからのもので、そのページを借りてどのヘッダが送られてきたかを確認しました。次の行はdie(0) – HMR

答えて

16

ヘッダのフォーマットは以下のとおりです。

Header: value 

あなたの例では、ヘッダのそれぞれにコロンが欠落しています。

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
    'Accept-Encoding: gzip, deflate', 
    'Accept-Language: en-US,en;q=0.5', 
    'Connection: keep-alive', 
    'SomeBull: BeingIgnored', 
    'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:16.0) Gecko/20100101 Firefox/16.0' 
) 
); 
+0

でした。 Firebugのネットパネルから。 – HMR

関連する問題