Hej alle,
Jeg skal lave en funktion hvor brugerne kan hente en faktura fra en anden server end den hjemmesiden ligger på.
PDF fakturaerne ligger på en IIS server. (Har ikke det store kendskab til servere/opsætning, desværre).
Jeg har lavet en funktion hvor jeg har testet op imod et andet site og brugt Curl med HTTP protokol. det virker fint:
- $pdf_faktura_navn = 'Microsoft_sporgeskema.pdf';
-
- // Url der skal hentes fra
- //$url = 'ftp://mail.site.dk/terminal/pdffaktura/134/1347074.PDF'; // Virker ikke
- //$url = 'ftp.mail.site.dk/terminal/pdffaktura/134/1347074.PDF'; // Virker ikke
- $url = 'http://www.test-site.dk/'.$pdf_faktura_navn.''; // Virker
-
- // Definer sti + navn til/på faktura filen
- //$path = 'downloads/'.$pdf_faktura_navn.'';
- $path = '/ddd/ddd/dev.website.dk/docs/test_site/downloads/'.$pdf_faktura_navn.'';
-
- // Åben mappen hvor filen skal skrives til
- $fp = fopen($path, 'w');
-
- // CURL start + options
- $ch = curl_init($url);
- curl_setopt($ch, CURLOPT_FILE, $fp);
- //curl_setopt($ch, CURLOPT_USERPWD, "SITE\ADMIN:MYPASS");
- //curl_setopt($ch, CURLOPT_PORT, 21);
-
- // Tjek resultat - Action afhængig af succes eller fejl
- if( $data = curl_exec($ch) )
- {
- $info = curl_getinfo($ch, CURLINFO_HTTP_CODE);
-
- if( $info == 404 )
- {
- echo '<p>Return code: ' . $info . '.</p><br />';
- echo '<p>Den valgte fil eksisterer ikke.</p><br />';
- }
- else
- {
- echo '<p>Forbundet til server</p><br />';
- echo '<p>Return code: ' . $info . '.</p><br />';
- //header('Content-type: application/pdf');
- //header('location: downloads/'.$pdf_faktura_navn.'');
- //exit();
- echo '<p>Filen er hentet fra <b>'.$url.'</b></p><br />';
-
- echo '<p>Den valgte fil (Faktura) - Kan ses via linket her: <b><a href="downloads/'.$pdf_faktura_navn.'">LINK TIL FAKTURA...</a></b></p>';
- }
- }
- else
- {
- echo '<p>Der skete en fejl da vi forsøgte at hente fakturaen.</p>';
- }
-
- // CURL slut
- curl_close($ch);
- fclose($fp);
Det der er kommenteret ud, er det der egentlig skal virke. Jeg skal connecte til en ftp server, men får aldrig adgang, og der skulle være givet tilladelse til den IP der anmoder.
Jeg har også prøvet med phps ftp funktion, men det giver mig heller ikke adgang til ftp serveren. Gør jeg noget forkert i opsætningen af ftp scriptet herunder?
- $server = "11.111.111.111";
- $user = "SITE\ADMIN";
- $pass = "MYPASS";
- $file = "faktura.pdf";
- $local_file = 'downloads/test_faktura.pdf';
- $ftp_dir = "/FTPUpLoad";
-
- $conn_id = ftp_connect($server,2121);
- $log_in = ftp_login($conn_id, $user, $pass);
-
- if ( (!$conn_id) || (!$log_in) )
- {
- echo "Der blev ikke oprettet forbindelse: Tjek ftp host, username og password<br /><br />";
- }
- else
- {
- echo 'FTP forbindelse til '.$server.' er oprettet!<br /><br />';
- }
-
- if ( ftp_chdir($sessid, $ftp_dir) )
- {
- echo "Der er skiftet til folder: " . ftp_pwd($sessid) . "\n";
- }
- else
- {
- echo "Der kunne ikke skiftes til folder\n";
- }
-
- // Download filen fra ekstern server med ftp_get
-
- if ( ftp_get($conn_id, $local_file, $file, FTP_BINARY) )
- {
- echo 'Download af '.$file.' er gennemført, og filen ligger i mappen: '.$local_file.'<br /><br />';
-
- //header('application/pdf');
- //header('location: '.$local_file.'');
-
- }
- else
- // Hvis ftp_get download funktionen ikke hentede filen
- {
- echo "Der var et problem ved ftp_get funktionen<br /><br />";
- }
-
- // Luk FTP forbindelse
- ftp_close($conn_id);
Sidste eksempel virker også hvis jeg hvis jeg prøver med mit andet test site. Men igen ingen adgang til ftp server, hvor det skal virke.
Venter spændt på svar på dette issue!
Mvh,
Klemme