Napisałem mały skrypcik, który sprawdza, czy podany URL jest poprawny. Kod odpytuje serwer i na podstawie zwróconego nagłówka stwiedza, czy adres istnieje. Coś jednak schrzaniłem, bo czasem dostaję błąd 404, 403 i inne nawet, gdy strona rzeczywiście istnieje. Oto kod:

  1. <?php
  2. class URLExistsRule extends Rule {
  3. public function isValid($field) {
  4. $url = parse_url($field);
  5.  
  6. if ($fp = @fsockopen($url['host'], 80, $errno, $errstr, 30)) {
  7. $page = $url['path'];
  8. $page .= !empty($url['query']) ? '?' . $url['query'] : '';
  9.  
  10. @fputs($fp, "HEAD " . $field . " ". "HTTP/1.0rnHost: " . $url['host'] ."rnrn");
  11. $response = @fgets($fp, 1024);
  12. if (!$response) {
  13. @fclose($fp);
  14. return false;
  15. }
  16.  
  17. if(eregi("200 OK", $response) || eregi("302 Found", $response)) {
  18. @fclose($fp);
  19. return true;
  20. }
  21. @fclose($fp);
  22. }
  23. return false;
  24. }
  25. }
  26. ?>


Co może być źle?