[PHP] fopen van externe graph.php afbeelding

Pagina: 1
Acties:
  • 119 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • DenDries
  • Registratie: Januari 2006
  • Laatst online: 07:44
Hallo,

Heb een klein scriptje gemaakt dat de afbeelding van maandelijks verbruikt volume van mijn provider moet weergeven.

Ik maak gebruik van curl om in te loggen, dit werkt perfect. Ook de pagina van het volume ophalen lukt, enkel de afbeelding niet.

De code die ik gebruik: (heb logins uitgeveegd)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php

// URL voor login volgen
$url = "https://crm.schedom-europe.net/login.php";
$vars = "username=XXXXXXXX&password=XXXXXXXX&op=login";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);

// Afbeelding met volume weergeven
header ( 'Content-Type: image/png' );  
$fp = fopen( 'https://crm.schedom-europe.net/include/scripts/linked/dslinfo/graph.php?dsluser=YYYYYYY&servid=26583&passwd=YYYYYYY', 'rb');  
fpassthru ($fp); 
fclose ($fp); 
?>


Kan mij iemand vertellen wat ik fout doe? Ikzelf denk dat het in de fout gaat door die graph.php, en dus het content-type. Een mogelijke oplossing?

Bedankt!

Acties:
  • 0 Henk 'm!

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 12:37

Gonadan

Admin Beeld & Geluid, Harde Waren
Wat gaat er precies fout?
By setting the Content-type to image/gif and then calling a pbmplus program to output a gif, you can create PHP scripts that output images directly.

[ Voor 76% gewijzigd door Gonadan op 25-07-2007 14:43 ]

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Acties:
  • 0 Henk 'm!

  • DenDries
  • Registratie: Januari 2006
  • Laatst online: 07:44
De afbeelding kan niet worden weergegeven, krijg geen error of iets dergelijks

[ Voor 31% gewijzigd door DenDries op 25-07-2007 14:44 ]


Acties:
  • 0 Henk 'm!

Verwijderd

DenDries schreef op woensdag 25 juli 2007 @ 14:44:
De afbeelding kan niet worden weergegeven, krijg geen error of iets dergelijks
Die error krijg je wel, maar zie je niet, omdat je een Content-Type header meestuurt. Haal die eens weg, en kijk wat er misgaat.

Acties:
  • 0 Henk 'm!

  • DenDries
  • Registratie: Januari 2006
  • Laatst online: 07:44
Nu wordt ik terug geredirect naar het inlogescherm van de site van mijn provider. Is er iets fout met de cookie ofzo? Nochtans lukt het inloggen perfect, want in een vorige versie kon ik perfect een andere beveiligde pagina ook opvragen (waarvoor je dus moet ingelogt zijn)

Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Nu online
(laat maar)

[ Voor 198% gewijzigd door Kalentum op 25-07-2007 14:50 . Reden: vraag stond er al ]


Acties:
  • 0 Henk 'm!

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 12:37

Gonadan

Admin Beeld & Geluid, Harde Waren
Je logt in via CURL, daarna ga je met fopen een nieuwe verbinding maken om het plaatje te downloaden.
Volgens mij wordt je sessie dan niet meegenomen. :)

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Acties:
  • 0 Henk 'm!

  • DenDries
  • Registratie: Januari 2006
  • Laatst online: 07:44
Je logt in via CURL, daarna ga je met fopen een nieuwe verbinding maken om het plaatje te downloaden.
Volgens mij wordt je sessie dan niet meegenomen.
Hmm... Als ik dit vervang door curl with het echter ook niet werken (voor de volumepagina zelf werkt het wel):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php

// URL voor login volgen
$url = "https://crm.schedom-europe.net/login.php";
$vars = "username=XXXXXX&password=XXXXXX&op=login";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);

// Afbeelding met volume weergeven
$url = "https://crm.schedom-europe.net/include/scripts/linked/dslinfo/graph.php";
$vars = "dsluser=YYYYYY&servid=26583&passwd=YYYYYY";

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);

$data = curl_exec($ch);

echo $data;
?>


Krijg alleen een lege pagina

Acties:
  • 0 Henk 'm!

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 12:37

Gonadan

Admin Beeld & Geluid, Harde Waren
Je stopt je variabelen nu ineens in de POST terwijl je eerst GET gebruikte.
Wat verwacht die PHP pagina precies, en wat geeft hij precies terug? :)

En wat Equator zegt natuurlijk. :+

[ Voor 11% gewijzigd door Gonadan op 25-07-2007 15:16 ]

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Acties:
  • 0 Henk 'm!

  • Equator
  • Registratie: April 2001
  • Laatst online: 09-09 15:29

Equator

Crew Council

#whisky #barista

Je zal tussen het inloggen en het opvragen ook een keer die curl moeten executen.
In mijn post in: Equator in "[PHP] Curl resultaat gebruiken bij volge..."
Doe ik dat ook. Bovendien zit daar een COOKIEJAR in, wellicht kanje die ook gebruiken..

Acties:
  • 0 Henk 'm!

  • DenDries
  • Registratie: Januari 2006
  • Laatst online: 07:44
Je zal tussen het inloggen en het opvragen ook een keer die curl moeten executen.
In mijn post in: Equator in "[PHP] Curl resultaat gebruiken bij volge..."
Doe ik dat ook. Bovendien zit daar een COOKIEJAR in, wellicht kanje die ook gebruiken..
Bedankt, het werkt! _/-\o_ :)

Voor degene die het zich interesseren, dit is de volledige code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php

// URL voor login volgen
$ch = curl_init();
$url = "https://crm.schedom-europe.net/login.php?username=XXXXXX&password=XXXXXX&op=login";

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiejar);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiejar);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);

curl_exec($ch);

// Afbeelding met volume weergeven
curl_exec($ch); 
$newurl = "https://crm.schedom-europe.net/include/scripts/linked/dslinfo/graph.php?dsluser=YYYYYY&servid=26583&passwd=YYYYYY"; 

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiejar); 
curl_setopt($ch, CURLOPT_URL, $newurl); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)'); // IE6 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_COOKIESESSION, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$volume = curl_exec($ch); 

// 
echo $volume;
?>
Pagina: 1