Thomas Luethi: Valider Link? und Schleife -> Array?

Beitrag lesen

Hallo,

Ja, Tripod sucks - ich hätt's gleich auf meinem professionelleren Webspace probieren sollen.

Einen Vorteil hat es bei Tripod, dass man PHP benuetzen kann:
Anstatt die Dateien mit </html> abzuschliessen, kann man schreiben:
<?php print("</html>\n"); ?>
Dann wird das Werbungs-Zeugs nicht angehaengt...

Natuerlich ist professioneller Webspace immer vorzuziehen.

Hmm also 30 Sekunden hat's sicher nicht geladen, im Gegenteil, es geht ganz schnell aber es wird einfach nix ausgegeben.

Stimmt - bei Fantasie-URLs, deren Domain nicht aufgeloest werden
kann, wird sofort abgebrochen.
Der timeout von 30 sec kommt wohl zum Zuge, wenn eine Domain zwar
existiert, der betreffende Server aber momentan nicht erreichbar ist.

Ich hatte z.B. mal eine for-Schleife benutzt um den $http Array auszugeben, in der Schleife dann weiters die Funktion each() verwendet um key/value zu bekommen. Dann kam bei erfundenen URLs immer die Warnung, dass each() nicht geht, weill $http kein Array oder Object ist...

Schau die Funktion mal genau an:
$fp = fsockopen($url["host"], $url["port"], &$errno, &$errstr, 30);
  if (!$fp) return FALSE;
  else
  {
    /* Nutzlast */
    return  $http;
  }

Das heisst, bei einem Verbindungsfehler wird false zurueckgegeben, nur wenn die Verbindung hergestellt wurde, ein Array $http.
Du muesstest also pruefen, ob es ueberhaupt ein Array $http gibt.
Oder so:

Ich habe es fuer meinen Zweck leicht abgeaendert:

if (!$fp)
   {
    $http["Status-Code"] = "---";
    $http["Status-Line"] = "Verbindungsfehler $errno - $errstr";
    return $http;
   }
  else
   { /* ... */ }

Damit ist $http auf jeden Fall ein Array, und ich habe auf jeden
Fall einen "Statuscode" in der Variable $http["Status-Code"]
(bei Verbindungsfehler also "---"), den ich nachher
weiterverwenden kann.

Klingt gut, vor allem werd ich mir merken, dass also die Statuscodes 200 und 3xx als "OK" durchgehen!

Das war grob vereinfacht, reicht aber fuer meine Zwecke.
Richtig "OK" ist 200 - und das kriegt man auch bei den meisten
funktionierenden Seiten.
Bei den meisten 30x Meldungen (Redirection) ist wenigstens
noch irgend etwas erreichbar, aber je nach Fall sollte man
sich darum kuemmern, z.B. bei 301 sollte man die URL anpassen.
Fuer Details: siehe wie gesagt
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

Freundliche Gruesse
Thomas