Avatar billede creativethinker Nybegynder
12. februar 2006 - 12:43 Der er 15 kommentarer

Check om links findes

Hvordan checker jeg om et link findes i php?

jeg har prøvet med fopen($link,"r");

Men den sender ikke "true" når linket findes og "false" når linket ikke findes.
Avatar billede yezbarh Nybegynder
12. februar 2006 - 12:45 #1
Avatar billede yezbarh Nybegynder
12. februar 2006 - 12:46 #2
<?php
$filename = $link;

if (file_exists($filename)) {
  print "true\n\r"
} else {
  print "false\n\r";
}
?>
Avatar billede Slettet bruger
12. februar 2006 - 12:52 #3
yezbarh > Har du selv prøvet at gøre det der med en url?

creativethinker > Prøv dette:

<?php
  function url_exists($url) {
      $a_url = parse_url($url);
      if (!isset($a_url['port'])) $a_url['port'] = 80;
      $errno = 0;
      $errstr = '';
      $timeout = 30;
      if(isset($a_url['host']) && $a_url['host']!=gethostbyname($a_url['host'])){
          $fid = fsockopen($a_url['host'], $a_url['port'], $errno, $errstr, $timeout);
          if (!$fid) return false;
          $page = isset($a_url['path'])  ?$a_url['path']:'';
          $page .= isset($a_url['query'])?'?'.$a_url['query']:'';
          fputs($fid, 'HEAD '.$page.' HTTP/1.0'."\r\n".'Host: '.$a_url['host']."\r\n\r\n");
          $head = fread($fid, 4096);
          fclose($fid);
          return preg_match('#^HTTP/.*\s+[200|302]+\s#i', $head);
      } else {
          return false;
      }
  }
?>

--
pacroon
Avatar billede yezbarh Nybegynder
12. februar 2006 - 12:54 #4
Ah - vidste jo ikke om $link indholdte "tagwall.php" fx.
Men - ja, check url'en der står nyttige ting
Avatar billede creativethinker Nybegynder
12. februar 2006 - 13:01 #5
Prøver det lige =)
Avatar billede creativethinker Nybegynder
12. februar 2006 - 13:08 #6
jeg har lige afprøvet det - og den sender "false" hvis der fx bliver skrevet et link som: http://www.newz.dk men hvis der fx linkes til http://newz.dk/index.php så virker det.

Kan man ikke lave den sådan at alle links virker? også dem hvor der ikke refereres til index?
Avatar billede Slettet bruger
12. februar 2006 - 13:22 #7
Den virker også uden index.php - det kræver bare et trailing slash: http://www.newz.dk/

Måske vil det virke sådan:

  function url_exists($url) {
      $url = preg_replace("#/$#", "", $url);
      $a_url = parse_url($url);
      if (!isset($a_url['port'])) $a_url['port'] = 80;
      $errno = 0;
      $errstr = '';
      $timeout = 30;
      if(isset($a_url['host']) && $a_url['host']!=gethostbyname($a_url['host'])){
          $fid = fsockopen($a_url['host'], $a_url['port'], $errno, $errstr, $timeout);
          if (!$fid) return false;
          $page = isset($a_url['path'])  ?$a_url['path']:'';
          $page .= isset($a_url['query'])?'?'.$a_url['query']:'';
          fputs($fid, 'HEAD '.$page.' HTTP/1.0'."\r\n".'Host: '.$a_url['host']."\r\n\r\n");
          $head = fread($fid, 4096);
          fclose($fid);
          return preg_match('#^HTTP/.*\s+[200|302]+\s#i', $head);
      } else {
          return false;
      }
  }
Avatar billede Slettet bruger
12. februar 2006 - 13:23 #8
Hov:
      $url = preg_replace("#$#", "/", $url);

i stedet :)
Avatar billede creativethinker Nybegynder
12. februar 2006 - 13:26 #9
hehe :) nu virker alle links i den - og ikke kun dem der "findes"
Avatar billede creativethinker Nybegynder
12. februar 2006 - 13:30 #10
Avatar billede Slettet bruger
12. februar 2006 - 14:12 #11
Okay, så gør vi da bare noget andet.. det er jo egentlig bare et slash som skal tilføjes.

Fjern preg_replace og indsæt i stedet:

$url = $url."/";
Avatar billede creativethinker Nybegynder
12. februar 2006 - 14:28 #12
Den validerer stadig alle links som fx hedder http://www.dsadgsadasdsd.dk
Avatar billede creativethinker Nybegynder
12. februar 2006 - 15:50 #13
Jeg mangler stadig en der kan hjælpe mig med dette problem..
Avatar billede Slettet bruger
12. februar 2006 - 15:54 #14
Sikker på du har rettet det rigtige sted? Det virker her:
http://pacroon.dk/projects/checkUrl.php

--
pacroon
Avatar billede Slettet bruger
13. februar 2006 - 19:00 #15
creativethinker > Fik du det til at virke? :)
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