Avatar billede cyfer Nybegynder
12. februar 2005 - 22:08 Der er 13 kommentarer og
1 løsning

Hente externs side source

Hej.. Jeg har i lang tid siddet og bakset med dette problem.
Jeg skal hente en extern sides source code, og gemme det ned i en variabel, som jeg kan bruge senere i mit script.

Men jeg kan ikke få noget til at virke. Jeg har b-one, og de kører med safe-mode og alt muligt lort.

Jeg ved at man kan bruge fsockopen, men jeg kan ikke få det til at virke som jeg gerne vil have.

Nogen der gider at fixe et lille enkelt script der henter en sides source og lægger det ned i en variabel?

Du kan se hvad man må på b-one her: http://devcore.dk/phpinfo.php



På forhånd mange tak :)
Avatar billede leif Seniormester
12. februar 2005 - 22:15 #1
Hvad er det for en source du skal hente ?

Hvis det er fordi du vil hente en af mine .PHP filer så du kan se min source er dette ikke muligt.
Avatar billede jakoba Nybegynder
12. februar 2005 - 22:24 #2
Hvis din safe-mode ikke tillader det er der ingen måde at gøre det med php. punktum.

Hvis det du ønsker at gøre er at hente fx sportsresultater andre har bruget tid på at samle er det et copyright brud og du risikerer at blive sagsøgt.
Avatar billede cyfer Nybegynder
12. februar 2005 - 22:33 #3
Tak for informationen. Dog ved jeg det i forvejen.
Det er ikke til at hente php source. Det er jeg udemærket klar over ikke kan lade sig gøre.

Jeg skal hente fuldt lovlige rss feeds. Til det er jeg nød til at hente sourcen på filen.. U see?

Men tak for opsangen. Måske i har noget konstruktivt når i nu ved at jeg ikke har tænkt mig at benytte det til ulovlige sager :-o
Avatar billede cyfer Nybegynder
12. februar 2005 - 22:35 #4
jakoba, der har du ikke ret.

Dette her gamle stykke kode jeg har lavet en gang, kan gøre netop dette. Men jeg brugte det til et andet formål end jeg skal nu.
Jeg skal bare have lagt teksten/sourcen ned i en variabel jeg kan bruge udenfor while løkken. Men jeg ved ikke hvordan.


$s = fsockopen('domæne.dk', 80);
fwrite($s, "GET /fil.php HTTP/1.0\r\n" .
    "Host: domæne.dk\r\n" .
    "Connection: close\r\n\r\n");
while (!feof($s)) {
    $site = fgets($s);
    print $site;
   
}
fclose($s);
Avatar billede jakoba Nybegynder
12. februar 2005 - 22:41 #5
fra din php-info:
    allow_url_fopen      Off    Off

Det betyder du ikke kan tilgå en fremmed server derfra. jvf første linie i tidligere kommentar. direktivet gælder også for sockets og alle andre måder at snakke til andre servere.

så du kommer enten til at bed b-one om at åbne for dig (fat chance tror jeg, det er blevet misbrugt for meget af varez og porn sider) eller også må du skifte webhotel.
Avatar billede cyfer Nybegynder
12. februar 2005 - 22:46 #6
Se min ovenstående kommentar. Det virker fint. Men jeg skal have lavet det om til at være en variabel jeg kan bruge uden for while løkken.

Så endten er der noget b-one har glemt at tænke på, eller også er det meningen :)
Avatar billede jakoba Nybegynder
12. februar 2005 - 22:49 #7
det er ekstremt besynderligt. Jeg forstår ikke et kuk.
Avatar billede jakoba Nybegynder
12. februar 2005 - 22:51 #8
men hvis din fsockopen duer så kan du gøre det sådanher.

$side = "";            // data opsamles her
$s = fsockopen('domæne.dk', 80);
fwrite($s, "GET /fil.php HTTP/1.0\r\n" .
    "Host: domæne.dk\r\n" .
    "Connection: close\r\n\r\n");
while (!feof($s)) {
    $side .= fgets($s);
}
fclose($s);
//  teksten står nu i $side.
Avatar billede cyfer Nybegynder
12. februar 2005 - 22:57 #9
Hihi... Vi kan jo alle tage fejl en gang imellem. Personligt tror jeg det er et hul de har glemt at lukke. Det kan ikke være meningen når de har lukket for fopen :)

Prøver lige din løsning...
Btw. Hvilken funktion har det . før = tegnet?
Er det lidt ligesom global i funktioner?
Avatar billede jakoba Nybegynder
12. februar 2005 - 23:00 #10
.=  svaret  til  +=  i sin funktion
istedet for at erstatte det der stod i variabelen før bliver det ny tilføjet (så variavelen vokser og vokser).
Avatar billede coderdk Praktikant
14. februar 2005 - 10:59 #11
Lidt nemmere med:

$side = file_get_contents( 'http://example.dk/script.php' );

Det kræver dog stadig fopen wrappers.
Avatar billede coderdk Praktikant
14. februar 2005 - 11:06 #12
(Men som sagt, hvis allow_url_fopen er off er det jakoba's løsning)
Her er en variant der fjerner headere:

    if ( $fp = fsockopen( 'www.google.dk', 80, $en, $es, 10 ) )
    {
        fwrite( $fp, "GET / HTTP/1.0\nHost: www.google.dk\nConnection: close\n\n" );
        $str = '';
        while ( !feof( $fp ) )
        {
            $str .= fread( $fp, 2048 );
        }
        fclose( $fp );
        $str = preg_replace( "/.*?\r?\n\r?\n/s", '', $str );
    }
Avatar billede cyfer Nybegynder
14. februar 2005 - 12:17 #13
tak for svaret jakoba. Smid et svar :)
Avatar billede cyfer Nybegynder
02. april 2006 - 09:46 #14
Gong gong.. Smid et svar og få point...... lukker..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester