Goedendag allemaal.
Ik wil met een php script een PDF van een andere server ophalen en doorsturen naar de client. Mij leek fsockopen hier een goede oplossing voor.
De PDF staat met credentials beveiligt, laten we die user en pass noemen. In 1 van die 2 zit een spatie, maar daar hoeft toch niks speciaals mee gedaan te worden?
Het script:
uit print_r( stream_get_meta_data( $socket ) ); krijg ik het volgende:
Array ( [stream_type] => socket [unread_bytes] => 0 [timed_out] => [blocked] => [eof] => )
Er komt dus niks terug, ook geen andere headers. Ik krijg ook een timeout bij de while, omdat er nooit een EOF zal komen (logisch want het resultaat is 0)
Ik heb iets gelezen over een realm, maar dat is toch alleen voor de server waar de PDF opstaat?
De PDF staat op een windows machine.
Waarom werkt het niet?
Alvast tnx!
Roemer
Ik wil met een php script een PDF van een andere server ophalen en doorsturen naar de client. Mij leek fsockopen hier een goede oplossing voor.
De PDF staat met credentials beveiligt, laten we die user en pass noemen. In 1 van die 2 zit een spatie, maar daar hoeft toch niks speciaals mee gedaan te worden?
Het script:
PHP:
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
| <? error_reporting( E_ALL ); session_start(); $_SESSION = ''; $_SESSION['user'] = 72; if( IsSet( $_GET['module'] ) AND !empty( $_GET['module'] ) ) { # er is een module in de URL $module = intval( $_GET['module'] ); $cursist = $_SESSION['user']; # verbinding openen $socket = fsockopen( 'ipadres', 80, $errno, $errstr, 30 ); if( $socket ) { # verbinding opzetten is gelukt # header samenstellen $output = "GET url+query HTTP/1.1\r\n"; $output .="Host: ipadres\r\n"; $output .="Authorization: Basic " . base64_encode( "user:pass" ) . "\r\n"; $output .="\r\n"; # header naar socket sturen if( fwrite( $socket, $output ) ) { print_r( stream_get_meta_data( $socket ) ); # output van socket [de PDF] opslaan while ( !feof( $socket ) ) { $buffer = fgets( $socket, 1 ); echo $buffer; } } else { # output sturen is mislukt echo "Het sturen is mislukt!"; } # verbinding sluiten fclose( $socket ); } else { # verbinding is mislukt, error weergeven echo $errstr . ': ' . $errno; } } else { # geen module in URL echo "Geen module in url!"; } ?> |
uit print_r( stream_get_meta_data( $socket ) ); krijg ik het volgende:
Array ( [stream_type] => socket [unread_bytes] => 0 [timed_out] => [blocked] => [eof] => )
Er komt dus niks terug, ook geen andere headers. Ik krijg ook een timeout bij de while, omdat er nooit een EOF zal komen (logisch want het resultaat is 0)
Ik heb iets gelezen over een realm, maar dat is toch alleen voor de server waar de PDF opstaat?
De PDF staat op een windows machine.
Waarom werkt het niet?
Alvast tnx!
Roemer