Agarramento de imagem com falso referente
-
26-09-2019 - |
Pergunta
Estou lutando para pegar uma imagem no momento ... parece bobo, mas confira este link: P
http://manga.justcarl.co.uk/a/oishii_kankei/31/1
Se você receber o URL da imagem, a imagem carrega. Volte, parece que está funcionando bem, mas esse é apenas o navegador carregando a imagem em cache.
O aplicativo estava funcionando bem antes, acho que eles implementaram algum tipo de verificação do referente às suas imagens. Então eu encontrei algum código e criei o seguinte ...
$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);
Essencialmente, está inventando um falso referenciador. Tudo o que estou voltando é um monte de bobagens (graças a Fpassthru), então acho que está recebendo a imagem, mas tenho medo de dizer que não tenho idéia de como produzir/exibir a imagem coletada.
Solução
Tente chamar isso antes da sua chamada para Fpassthru:
header('Content-Type: image/jpeg');
Isso dirá ao seu navegador que os dados que virão a seguir são uma imagem JPEG. Caso contrário, o PHP dirá automaticamente que é um documento HTML, que está obviamente errado.
Observação: Lembre -se de que todas as chamadas para header
deve ser feito antes que qualquer outra coisa seja produzida para o navegador, o que significa que você não pode ter nenhum echo
ou print
chamadas antes de ligar header
, e você não pode ter nada antes da abertura <?php
marcação.