webForumDet fria alternativet

wget och FSData

14 svar · 737 visningar · startad av StinaD

StinaDMedlem sedan jan. 200625 inlägg
#1

Hej igen! Har lusläst manualen på FSdata och där står:

"PHP har inbyggda funktioner för att öppna filer över nätverket, tex genom kommandot fopen(). Detta medför dessvärre också stora säkerhetsrisker, då felaktigt skriven PHP-kod kan missbrukas av utomstående för att bryta sig in på webplatsen eller använda webplatsen som avsändare av skräppost. F S Data har därför valt att stänga av allow_url_fopen i PHP-konfigurationen (med start 1:e november 2006).

I de fall man verkligen behöver öppna filer över nätverket så används kommandot wget:
// Läs in fil.txt från annandomän.se och spara i variabeln $data:
$data = `wget http://annandoman.se/fil.txt -O -`;

I undantagsfall kan man dock temporärt behöva aktivera allow_url_fopen för någon del av webplatsen."

Då jag har allow_url_fopen påslagen fungerar koden jag skrivit med hjälp av er här i forumet. Men slår jag av den går det inte. Verkar alltså som att jag måste ändra till det där wget för att göra FSdata glada ...

Har letat på http://se.php.net men där finns inte wget med ens en gång.

Min fungerande kod ser ut så här:
<?php
$context=array('http' => array ('header'=> 'Range: bytes=1024-', ),);
$xcontext = stream_context_create($context);
$str=file_get_contents("http://www2.tellus.no/tellus/db.dll?co=SE&sp=SE&db=254&icp=hoor/1/productList&ek=1&ek=2&pt=1&so=1&dv_so=1&lla=10&dv_lla=10",FALSE,$xcontext);
echo $str;
?>

Och resultatet finns på http://turisthoor.se/gora/test2.php

Någon som är expert på wget???

Dies_IraeMedlem sedan aug. 2001145 inlägg
#2

En spontan gissning :)

Är inte wget ett shellkommando så du tex måste göra:

<? exec("wget $url /spara/i/katalog"); ?>

eller med lite tur

<? $data = exec("wget $url"); ?>

hm, säkert fel men sök lite på de, borde finnas :)

StinaDMedlem sedan jan. 200625 inlägg
#3

Tack, ska testa!

The_HulkMedlem sedan juni 20031 837 inlägg
#4

Har du testat kodraden FS-data hade i sin hjälp?

$data = `wget http://www2.tellus.no/tellus/db.dll?co=SE&sp=SE&db=254&icp=hoor/1/productList&ek=1&ek=2&pt=1&so=1&dv_so=1&lla=10&dv_lla=10 -O -`;
StinaDMedlem sedan jan. 200625 inlägg
#5

Ja, och det fungerade inte. Gissar att det beror på att jag inte vet vad som ska stå runt omkring. Är alldeles ny på php ...

GeinMedlem sedan sep. 20005 700 inlägg
#6

wget är inte en funktion i php utan ett program.
Fungerade inte Dies_Iraes tips?

The_HulkMedlem sedan juni 20031 837 inlägg
#7

vad hände när du försökte använda koden i förra posten?

The_HulkMedlem sedan juni 20031 837 inlägg
#8

det är viktigt att få med de två små ` tecknen runt `wget ... -O -`

StinaDMedlem sedan jan. 200625 inlägg
#9

Skriver jag så här så kommer det upp en blank sida:
<?php
$context=array('http' => array ('header'=> 'Range: bytes=1024-', ),);
$xcontext = stream_context_create($context);
$str = `wget http://www2.tellus.no/tellus/db.dll?co=SE&sp=SE&db=254&icp=hoor/1/productList&ek=1&ek=2&pt=1&so=1&dv_so=1&lla=10&dv_lla=10 -O -`;
echo $str;
?>

StinaDMedlem sedan jan. 200625 inlägg
#10

Även detta ger en blank sida:
<?php
$context=array('http' => array ('header'=> 'Range: bytes=1024-', ),);
$xcontext = stream_context_create($context);
$str = exec("`wget http://www2.tellus.no/tellus/db.dll?co=SE&sp=SE&db=254&icp=hoor/1/productList&ek=1&ek=2&pt=1&so=1&dv_so=1&lla=10&dv_lla=10 -O -`; ");
echo $str;
?>

Inser att jag behöver förstå mer om syntaxen i php ...

The_HulkMedlem sedan juni 20031 837 inlägg
#11

testa

<?php
$str = shell_exec("wget http://www2.tellus.no/tellus/db.dll...la=10&dv_lla=10 -O -");
echo $str;
?>

eller (d.v.s. utan sista - efter -O, vet inte vad det gör)

<?php
$str = shell_exec("wget http://www2.tellus.no/tellus/db.dll...la=10&dv_lla=10 -O");
echo $str;
?>
StinaDMedlem sedan jan. 200625 inlägg
#12

Nu har jag testat alla varianter av era förslag, med och utan shell_exec, `och -
Jag får inga felmeddelanden, men sidan är tom.

Har också sökt på Google och surfat runt och läst en massa om wget, verkar mest användas för att hämta filer i Linuxsammanhang???

Funktionen att hämta in data från en server och presentera den på en annan kan ju inte vara något ovanligt? Tycker att jag borde hitta massor med exempel.

GeinMedlem sedan sep. 20005 700 inlägg
#13

Provat slå på error_reporting?

The_HulkMedlem sedan juni 20031 837 inlägg
#14

wget är ett linux/unix program (finns även för windows m.m. nu)
shell_exec används för att köra extärna program inne i PHP-koden.
Har du testat att fråga FS-datas support?
De borde ju kunna hjälpa dig i och med att du hittade informationen om wget där.

StinaDMedlem sedan jan. 200625 inlägg
#15

FSdatas support är ganska svåråtkomlig, men det är nog det som ligger överst i högen just nu. Stort tack för all hjälp så här långt!

Tack för tipset om error_reporting det ska jag använda framöver!

136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)