Bogus: Zieladresse vor dem redirect auf gültigkeit überprüfen. geht das?

hallo mitbewohner

*keine werbung! deshalb nur* meine networks kennt inzwischen fast jeder.
diese immer up-to-date zu haben is nicht so einfach. ich habe zwar eine funktion eingebaut, die sämtliche in der datenbank befindlichen url's überprüft, aber das dauert schon bei den (zur zeit) 160 seiten ewig.

deshalb dachte ich mir es wäre doch einfacher, wenn ein user auf einen link klickt, diesen zuerst zu überprüfen - sprich ob es die site gibt - und den user erst dann weiter zu leiten.

wenn die site nicht mehr vorhanden ist, wird der user vertröstet, und der datensatz in einer datei vermerkt.

ich will nicht das ihr mir hier programme schreibt! nur nen befehl oder ne sub die soetwas ermöglicht.

zur zeit verwende ich zum weiterleiten den befehl
print "Location: url\n\n";
vielleicht kann man ja auch an diesem befehl die funktion einbauen.

bin für jede hilfe wie immer sehr dankbar
mfg
Bogus

  1. Moin, moin,

    deshalb dachte ich mir es wäre doch einfacher, wenn ein user auf einen link klickt, diesen zuerst zu überprüfen - sprich ob es die site gibt - und den user erst dann weiter zu leiten.

    wenn die site nicht mehr vorhanden ist, wird der user vertröstet, und der datensatz in einer datei vermerkt.

    ich will nicht das ihr mir hier programme schreibt! nur nen befehl oder ne sub die soetwas ermöglicht.

    Mit den LWP Modulen, kommt man da sehr gut weiter. Diese müßen in der Regel aber erst
    noch installiert werden. Das Modul LWP::Simple enthält eine Methode head, die gut zum
    antestet verwendet werden kann:

    ($content_type, $document_length, $modified_time, $expires, $server) = head ($url);

    Im scalaren Kontext gibt die Funktion TRUE bei Erfolg zurück:

    use LWP::Simple;
    ...
    if (head $url)
    {
        print "Location: $url\n\n";
    }
    else
    {
        print "Location: sorry-page\n\n";
    }

    Zum starten sollte das reichen ;-) Viel Spaß damit,
       Jörk

  2. Hallo Bogus!

    hallo mitbewohner

    *keine werbung! deshalb nur* meine networks kennt inzwischen fast jeder.

    Also mal ehrlich Bogus, erst habe ich gedacht, naja schreibt er so drüber (und macht dann dadurch doch Werbung für seine ganzen netzwerke etc.) und dann sehe ich schon wieder dieses, imho total besch., banner unten, ein glück im archiv werden diese teile weggeschnitten *g*

    Deswegen erinnere ich Dich mal an <../../sfarchiv/1999_2/t03889.htm#a18847> , ich hoffe Du hälst Dich dann irgendwan wirklich mal etwas zurück (nur in bezug auf die Werbung!), auch die Verwendung von "?" und "!" in den von Dir angefangenen Threads bzw. in Deinen Postings kannst gern etwas einschränken ... *bg*
    Bitte führe mir nicht als Gegenbeweis die im Moment aktuelle self_forum.html an, ich denke Du weisst, was ich meine, oder?!

    Viele Gruesse,
    Stefan Einspender

    PS: Sammle doch einfach auf einer Seite im WWW Deine ganzen Domains und Projekte mit einer tollen Beschreibung und gib diese Seite dann als "URL Ihrer Homepage" an, dann schau (ich) eventuell auch mal wieder auf eine Deiner Websites ... ;-)

  3. deshalb dachte ich mir es wäre doch einfacher, wenn ein user auf einen link klickt, diesen zuerst zu überprüfen - sprich ob es die site gibt - und den user erst dann weiter zu leiten.
    wenn die site nicht mehr vorhanden ist, wird der user vertröstet, und der datensatz in einer datei vermerkt.

    Dafür gibt es bereits einen fertigen Mechanismus in "manchen" Webservern (will sagen: in Apache ... :-), und zwar die Definition des ErrorDocuments.
    Mit diesem kannst Du dem Benutzer eine ermutigende  Meldung ausgeben (sogar mit Werbung drauf - bei Yahoo oder Ähnlichem habe ich das schon gesehen).

    Und wenn Du als URL für das ErrorDocument statt einer statischen HTML-Seite eine CGI-Anwendung verwendest, dann kann diese die referenzierte URL auch in eine Datei schreiben, per Mail verschicken etc.

    1. Hi!

      Dafür gibt es bereits einen fertigen Mechanismus in "manchen" Webservern (will sagen: in Apache ... :-), und zwar die Definition des ErrorDocuments.
      Mit diesem kannst Du dem Benutzer eine ermutigende  Meldung ausgeben (sogar mit Werbung drauf - bei Yahoo oder Ähnlichem habe ich das schon gesehen).

      Und wenn Du als URL für das ErrorDocument statt einer statischen HTML-Seite eine CGI-Anwendung verwendest, dann kann diese die referenzierte URL auch in eine Datei schreiben, per Mail verschicken etc.

      Schön und gut. Der Mechanismus läßt sich dann aber nur einsetzen, wenn es sich um Links
      auf den eigenen Server handelt - die sollte man jedoch wesentlich besser im Griff haben, als
      die Seiten von "Unbekanten" Site-Inhabern.

      Wenn ich auf meinem Server A einen Link auf Server B habe (möglicherweise indirekt per Location) und jemand im Browser diesen Link anwählt, so wird der Browser versuchen, Server B
      anzusprechen. Sollte die gewünscht Seite dort nich vorhanden sein, hilft es mir überhaupt nicht,
      wenn Server A für nicht vorhandene Seiten eine nette Fehler-Seite parat hat ...

      Auf seinem eigenen Server kann man diesen Mechanismus durchaus positiv einsetzen.

      Jörk

      1. Schön und gut. Der Mechanismus läßt sich dann aber nur einsetzen, wenn es sich um Links
        auf den eigenen Server handelt - die sollte man jedoch wesentlich besser im Griff haben, als
        die Seiten von "Unbekanten" Site-Inhabern.
        Wenn ich auf meinem Server A einen Link auf Server B habe (möglicherweise indirekt per Location) und jemand im Browser diesen Link anwählt, so wird der Browser versuchen, Server B
        anzusprechen. Sollte die gewünscht Seite dort nich vorhanden sein, hilft es mir überhaupt nicht,
        wenn Server A für nicht vorhandene Seiten eine nette Fehler-Seite parat hat ...

        ... aber mehr erreichst Du doch mit dem "vorher prüfen" auch nicht als eine "nette Fehlermeldung".
        Bessere Chancen bietet vermutlich nur heftiges Links-Checken auf A - inklusive aller externen Links nach B in den eigenen Seiten.
        Und das würde ich lieber nachts automatisiert machen, als es Deinen Besuchern zu überlassen ...

        1. hye ihr zwei :-)

          ... aber mehr erreichst Du doch mit dem "vorher prüfen" auch nicht als eine "nette Fehlermeldung".
          Bessere Chancen bietet vermutlich nur heftiges Links-Checken auf A - inklusive aller externen Links nach B in den eigenen Seiten.
          Und das würde ich lieber nachts automatisiert machen, als es Deinen Besuchern zu überlassen ...

          jörk liegt genau richtig.
          danke michael für den tip. aber diese fuktion hab ich auf meinen networks bereits installiert (nicht gefundene dateien werdem mit datum,uhrzeit, referer, usw vermerkt)

          was ich brauche ist das was jörk schon definiert hat.
          wenn ich von meinem server, server A auf irgendeinen server B linke, möchte ich zuerst überprüfen ob es die site auf dem server gibt, und wenn ja - print "Location...
          wenn nicht: den link in ner db vermerkten, und den user vertrösten.

          ich würde das nicht nächtlich starten! sondern den user machen lassen. warum? zur zeit hab ich ja noch nicht viele seiten, aber schon jetzt dauert das überprüfen aller links immer ne halbe ewigkeit.
          wenn ein user hingegen einen link anklickt, dann muss die cgi-datei nur einen server überprüfen.

          aber ich werd mal den tip von jörk mit 'head' ausprobieren. LWP::Simple hab ich sowieso installiert zum überprüfen :-)

          mfg
          Bogus

          1. ich würde das nicht nächtlich starten! sondern den user machen lassen. warum? zur zeit hab ich ja noch nicht viele seiten, aber schon jetzt dauert das überprüfen aller links immer ne halbe ewigkeit.

            Du mußt ja nicht alle URLs auf einmal prüfen - ggf. hilft ein täglicher Teil-Check eines jeweils anderen URL-Teilbaums bis zu einer vordefinierten Links-Tiefe von 3 oder so auch schon eine ganze Menge.