PDF verplaatst naar nieuwe pagina. toch downloaden
Bij mijn leverancier kan ik pdf bestanden downloaden, die ik wil opslaan op mijn server.
Eerder was dit geen probleem, ik riep label.php aan en die gaf een pdf terug die ik download op de volgende manier:
Quote:
$imageString = file_get_contents($label_download);
$save = file_put_contents('***/pdf/'.$pdf_code.'.pdf',$imageString);
$save = file_put_contents('***/pdf/'.$pdf_code.'.pdf',$imageString);
Werkte prima.
Maar nu als ik label.php aanroep, wordt ik doorgestuurd naar documenten/label.php en staat daar de download. Maar helaas kan ik niet rechtstreeks documenten/label.php aanroepen omdat er op label.php door de leverancier een geheime hash wordt aangemaakt die ze niet vrij geven.
Ik moet dus iets verzinnen in php dat de pagina label.php wordt geopend en doorgelinkt naar documenten/label.php en daarna de pdf wordt gedownload. Iemand die me op weg kan helpen in welke richting ik moet zoeken?
Je wilt dus een beveiliging omzeilen?
Ik roep aan: label.php met mijn gegevens, achter de schermen laat ik de pagina doen wat ie moet doen, dan wordt ik doorgelinkt naar de nieuwe pagina en daar wordt dan een pdf getoond die ik wil downloaden.
Dus nog steeds de PDF downloaden alleen dan een stap later.......
Beetje moeilijk uitleggen
En opeens is label.php een pagina bij de leverancier?
Met andere woorden: Ik snap weinig van je verhaal en ik heb het idee dat ik nog wat code lijk te missen.
Echter hebben ze de beveiliging aangepast. Ik ga naar /label.php met een aantal parameters.
Vervolgens wordt ik dus doorgelinkt naar documenten/label.php
Hier wordt het .pdf bestand getoond.
Twee mogelijke oplossingen:
- roep gewoon de nieuwe URL aan?
- volg de redirect (bijvoorbeeld met curl), en ga dan pas een document ophalen
Maar als je weet hoe de nieuwe URL er uitziet zou ik gewoon voor oplossing #1 gaan omdat #2 nodeloos omslachtig is. Tenzij je om wat voor vage reden niet rechtstreeks documenten/label.php zou kunnen aanroepen.
EDIT: dit staat in je oorspronkelijke bericht. Hm, vaag. Dan zul je moeten uitzoeken hoe die "geheime hash" werkt. Je zou bij hun ook eens kunnen informeren waarom ze dit zo opgezet hebben.
Gewijzigd op 07/01/2017 15:33:51 door Thomas van den Heuvel
De reden waarom dit is, is omdat er in het verleden misbruik is gemaakt wat hun veel geld kost.
Ik moet dus de redirect volgen met curl en dan downloaden, maar het lukt helaas nog niet
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
curl_setopt($this->curl, CURLOPT_URL, $this->api_url . 'label.php?' . http_build_query($this->params));
curl_setopt($this->curl, CURLOPT_POST, 1);
curl_setopt($this->curl, CURLOPT_POSTFIELDS, $this->params);
curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($this->curl, CURLOPT_COOKIEJAR, '');
?>
curl_setopt($this->curl, CURLOPT_URL, $this->api_url . 'label.php?' . http_build_query($this->params));
curl_setopt($this->curl, CURLOPT_POST, 1);
curl_setopt($this->curl, CURLOPT_POSTFIELDS, $this->params);
curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($this->curl, CURLOPT_COOKIEJAR, '');
?>
Dit gebruik ik voor het ophalen van PDF etiketten bij een vervoerder, en dat werkt.
Gewijzigd op 08/01/2017 13:24:44 door Ger van Steenderen
Dank je wel Ger, hiermee is het mij ook gelukt!