WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   [php] broken link (http://www.wcm.at/forum/showthread.php?t=137517)

mqs 22.06.2004 10:26

[php] broken link
 
gibt es so ne art abfrage ob eine url vorhanden ist mit dem ganzen pfad? so eine broken link funktion

renew 22.06.2004 10:28

Zitat:

Original geschrieben von mqs
gibt es so ne art abfrage ob eine url vorhanden ist mit dem ganzen pfad? so eine broken link funktion
Ohne jetzt genau sagen zu können wie das funktioniert (in PHP) - aber du musst nur den zurück gegebenen HTTP Response Code abfragen - ist er 200 ist alles OK, kommt was anderes zurück (404, 500, ...) is die Seite nicht erreichbar.

mqs 22.06.2004 10:42

hast du zufällig einen codeschnipsel bei dir rumliegen?

Karl99 22.06.2004 12:06

PING funktioniert nicht?

PING www.wcm.at
PING <IP-Adresse>

renew 22.06.2004 12:27

Zitat:

Original geschrieben von mqs
hast du zufällig einen codeschnipsel bei dir rumliegen?
Irgendwo hätt ich ein Perl Script... ;) (weil ich mir das ganze mal in Perl zusammengebastelt hab, welches über ASP aufgerufen wird, da das ganze in ASP nicht funktioniert hat - bzw. ich keine Lösung dafür gefunden habe)

Wennst willst such ich es dir am Abend, wenn ich daheim bin, raus.
Denn von PHP hab ich nicht wirklich viel Ahnung, da ich schon Ewigkeiten nix mehr in PHP gemacht hab (und das was ich gemacht hab, war auch nicht aufregend ;))

renew 22.06.2004 12:33

Aja, hab grad die alten Beiträge von mir ausgegraben, wo es um das ganze ging - vielleicht findest ja was brauchbares:

http://www.wcm.at/forum/showthread.php?threadid=75489

http://www.wcm.at/forum/showthread.php?threadid=74761

mqs 22.06.2004 12:45

danke! werd mich mal einlesen

eAnic 22.06.2004 12:49

Zitat:

Original geschrieben von Karl99
PING funktioniert nicht?

PING www.wcm.at
PING <IP-Adresse>

Wie soll das unter PHP funktionieren? ;)

mqs 22.06.2004 14:56

hab eine funktion gefunden, die das ausführt. also wenn die url vorhanden ist wird eine "1" zurückgeschickt. ich poste die mal her falls sie noch wer braucht:


PHP-Code:

   /*
   * @return boolean
   * @param  string $link
   * @desc  Überprüft die angegeben URL auf Erreichbarkeit (HTTP-Code: 200)
   */
   
function url_validate$link )
   {        
       
$url_parts = @parse_url$link );

       if ( empty( 
$url_parts["host"] ) ) return( false );

       if ( !empty( 
$url_parts["path"] ) )
       {
           
$documentpath $url_parts["path"];
       }
       else
       {
           
$documentpath "/";
       }

       if ( !empty( 
$url_parts["query"] ) )
       {
           
$documentpath .= "?" $url_parts["query"];
       }

       
$host $url_parts["host"];
       
$port $url_parts["port"];
       
// Now (HTTP-)GET $documentpath at $host";

       
if (empty( $port ) ) $port "80";
       
$socket = @fsockopen$host$port$errno$errstr30 );
       if (!
$socket)
       {
           return(
false);
       }
       else
       {
           
fwrite ($socket"HEAD ".$documentpath." HTTP/1.0\r\nHost: $host\r\n\r\n");
           
$http_response fgets$socket22 );
           
           if ( 
ereg("200 OK"$http_response$regs ) )
           {
               return(
true);
               
fclose$socket );
           } else
           {
//                echo "HTTP-Response: $http_response
";
               return(false);
           }
       }
   } 


JamesDean2 22.06.2004 15:09

Sollte mit einer Webseite auch funktionieren.
Läuft allerdings so nur unter Linux.
Bei einem Windows System müsst ma schaun was ping für Meldungen retour liefert und das Script anpassen.
Auf port.php und offline & onlineeintragen kann ja in deinem Fall verzichtet werden.
Du suchst ja nach keinen Ports oder willst dein Ergebnis nicht auch gleich in eine Datenbank schreiben.

<?php
$online=exec("ping $ip -c 1");
if (eregi("100% packet loss", $online) || eregi("0 packets received", $online)) {
print "<tr><td bgcolor='#FFFF99' bordercolor='#FF0000'><font size='-7' face='Arial'>$name</font></td>";
print "<td bgcolor='#FFFF99' bordercolor='#FF0000'>";
print "[img]perlred2.gif[/img]";
print "<font color='#FF0000' font size='-7' face='Arial'> $ip</font></td>";
if ($port <> "") {
require("port.php");
$port = "";
}
print "</tr>";
require("offlineeintragen.php");
} else {
print "<tr><td bgcolor='#FFFF99'><font size='-7' face='Arial'>$name</font></td>";
print "<td bgcolor='#FFFF99'>";
print "[img]perlgree2.gif[/img]";
print "<font color='#009900' font size='-7' face='Arial'> $ip</font></td>";
if ($port <> "") {
require("port.php");
$port = "";
}
print "</tr>";
require("onlineeintragen.php");
}
?>


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag