Avatar billede weblance Nybegynder
19. marts 2011 - 09:33 Der er 9 kommentarer og
1 løsning

Kan ikke se kildekode med file_get_contents

Jeg har et lille script der skal gå ind i en bestemt url og finde en værdi i kildekoden. Problemet er bare at jeg får en fejl når jeg prøver på netop den side jeg skal bruge. Det virker alle ander steder :(

For at teste det af lavede jeg en lille side som ser sådan ud:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Vis kildekode</title>
</head>

<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<p>Indtast URL:</p>
<input name="url" type="text" value="http://" />
<input type="submit" value="Vis kildekode" />
</form>
<hr />
<br />
<br />
<?php if(isset($_POST['url'])) {
    $source = file_get_contents($_POST['url']);
    echo htmlentities($source);
}
?>
</body>
</html>

Jeg har så prøvet at taste alle mulige adresser ind, som alle sammen virker, bare ikke denne ene, som jeg skal bruge. Fejlen jeg får er:

Warning: file_get_contents(http://domænet.dk) [function.file-get-contents]: failed to open stream: HTTP request failed! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> in /var/www/viskilde.php on line 18

Jeg har en mistanke om at den side jeg skal bruger er noget javabaseret og at det er derfor det ikke virker.

Hvad siger eksperterne?

/Carl
Avatar billede erikjacobsen Ekspert
19. marts 2011 - 09:46 #1
Du bør altid kunne se HTML koden til siden. Hvilken side er der tale om?
Avatar billede weblance Nybegynder
19. marts 2011 - 09:55 #2
akvt.dk
Avatar billede erikjacobsen Ekspert
19. marts 2011 - 10:25 #3
Ok. Der kan være noget med noget timeout, måske. file_get_contents er yderligere lidt "gammeldags". Du kan derfor med fordel bruge curl, som her:

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, "http://akvt.dk");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

  $output = curl_exec($ch);
  curl_close($ch);
  print $output;
Avatar billede weblance Nybegynder
19. marts 2011 - 11:03 #4
JA lige præcis.

Det virker dog ikke med curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); pga. safe_mode på mit webhotel. Men det er ligemeget, fjerner bare den linie.

Tusind tak!
Avatar billede weblance Nybegynder
19. marts 2011 - 18:28 #5
siden akvt.dk går offline hver dag ved solnedgang. Hvordan kan der komme en besked om at siden er offline når scriptet ikke får kontakt til siden?
Avatar billede olebole Juniormester
19. marts 2011 - 20:27 #6
<ole>

Går spørgsmålet på, hvad de gør - eller ...? Hvad er det præcist, du gerne vil?  =)

/mvh
</bole>
Avatar billede erikjacobsen Ekspert
19. marts 2011 - 22:40 #7
Du kan sætte en timeout på curl - her 2 sekunder:

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, "http://akvt.dk");
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,2);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

  $output = curl_exec($ch);
  curl_close($ch);
if (empty($output))
{
    print "Så er det godnat til dig.";
}
else
{
    print $output;
}
Avatar billede weblance Nybegynder
20. marts 2011 - 23:05 #8
Right again Erik.

Tusind tak for din hjælp! Ingen point??
Avatar billede erikjacobsen Ekspert
21. marts 2011 - 09:58 #9
Nej tak,
Avatar billede weblance Nybegynder
23. marts 2011 - 15:14 #10
Du skal i hvert fald have tak for din hjælp!
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