0

現在、画像を取得するのに苦労しています...ばかげているように聞こえますが、このリンクをチェックしてください:P

http://manga.justcarl.co.uk/A/Oishii_Kankei/31/1

画像の URL を取得すると、画像が読み込まれます。戻ると、正常に動作しているように見えますが、それはブラウザがキャッシュされた画像をロードしているだけです。

アプリケーションは以前は正常に動作していましたが、画像に何らかのリファラー チェックを実装していると思います。それで、いくつかのコードを見つけて、次のことを思いつきました...

$ref = 'http://www.thesite.com/'; 
$file = 'theimage.jpg';
$hdrs = array( 'http' => array(
 'method' => "GET",
 'header'=> "accept-language: en\r\n" . 
  "Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*\/*;q=0.5\r\n" .
  "Referer: $ref\r\n" . // Setting the http-referer
  "Content-Type: image/jpeg\r\n" 
 )
);
// get the requested page from the server
// with our header as a request-header
$context = stream_context_create($hdrs);

$fp = fopen($imgChapterPath.$file, 'rb', false, $context);
fpassthru($fp);
fclose($fp);

基本的に、それは偽のリファラーを構成しています。私が戻ってきたのは意味不明なものだけです(fpassthruのおかげです)ので、画像を取得していると思いますが、収集した画像を出力/表示する方法がわかりません。

4

1 に答える 1

0

fpassthru を呼び出す前に、これを呼び出してみてください。

header('Content-Type: image/jpeg');

これにより、次に来るデータが JPEG 画像であることをブラウザに伝えます。そうしないと、PHP は自動的にそれが HTML ドキュメントであると判断しますが、これは明らかに間違っています。

注:すべての への呼び出しは、header他の何かがブラウザーに出力される前に行う必要があることに注意してください。つまり、 を呼び出す前にechoまたはを呼び出すことはできず、開始タグの前には何も指定できません。printheader<?php

于 2010-06-10T16:49:01.567 に答える