Alain: print "Location: $errorurl... || die und zu sleep(1)

Morgen,
Ich habe ein perl cgi script geschrieben,dass bei fehler auf ein anderes
perl script zeigt.Nun meine frage dazu kann man falls die anfrage vom client
abnormal (spider z.B.) zum script erfolgt die location auch so schreiben
print "Location: $errorurl\n\n" || die("401 error 8\n");
?
Weiter wollte ich wissen für was sleep(1); gut sein soll?
Ich habe mir dabei gedacht,dass es eventuell nützen würde,wenn jemand mit einem spider
versucht ein perl script bzw. den server zu überfordern mit 100e von requests pro sekunde und
das script mit sleep die requests auf ein request je sekunde verzögert anstatt 100 pro sekunde.
Dem ist aber leider nicht so,für was soll dann sleep(1) gut sein?
Gruss
Alain

  1. Hi,

    falls die anfrage vom client
    abnormal (spider z.B.) zum script erfolgt

    was ist daran abnormal? Sprich: Wie definierst Du diesen Begriff?

    print "Location: $errorurl\n\n" || die("401 error 8\n");

    Vom falschen Umbruch und dem sinnfreien Listenkontext abgesehen ist das korrekt: die wird ausgeführt, wenn der print-Befehl fehlschlägt. Nach letzter Zählung dürfte das also nie sein. Was ist eigentlich Dein Ziel?

    Weiter wollte ich wissen für was sleep(1); gut sein soll?

    Siehe perldoc -f sleep

    Ich habe mir dabei gedacht,dass es eventuell nützen würde,wenn jemand mit einem spider
    versucht ein perl script bzw. den server zu überfordern mit 100e von requests pro sekunde und
    das script mit sleep die requests auf ein request je sekunde verzögert anstatt 100 pro sekunde.

    Nein, denn es existiert kein Weg, diesen Spider zu erkennen. Wesentlich effektiver ist hier ein Anwalt.

    Dem ist aber leider nicht so,für was soll dann sleep(1) gut sein?

    Im CGI-Kontext? Für die Durchführung groben Unfugs.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo,

      falls die anfrage vom client
      abnormal (spider z.B.) zum script erfolgt

      was ist daran abnormal? Sprich: Wie definierst Du diesen Begriff?

      wenn der spider z.B. keinen header besitzt bzw. weder get noch post sendet.

      print "Location: $errorurl\n\n" || die("401 error 8\n");

      Vom falschen Umbruch und dem sinnfreien Listenkontext abgesehen ist das korrekt: die wird ausgeführt, wenn der print-Befehl fehlschlägt. Nach letzter Zählung dürfte das also nie sein. Was ist eigentlich Dein Ziel?

      was meinst Du mit falschem umbruch? - mein script läuft im use strict modus. mein ziehl ist,wenn das script dem client die location nicht senden kann,dann soll es den weitern vorgang beenden.

      gruss
      Alain

      1. Hi,

        wenn der spider z.B. keinen header besitzt bzw. weder get noch post sendet.

        Du scheinst mir ein wenig konzeptfrei zu sein. _Kein_ Client "besitzt einen Header". Bei Deinem Server kommt ein Request an - und der hat unter Garantie eine Methode, welche zumeist GET oder POSt ist.

        was meinst Du mit falschem umbruch?

        Du sendest nur Linefeeds, keine Carriage Returns.

        mein script läuft im use strict modus.

        Perl merkt nichts von defektem HTTP. Es würde auch nicht meckern, wenn Du im Location-Header eine relative URI angbibst, obwohl etwas anderes als eine absolute URL strikt verboten ist.

        mein ziehl ist,wenn das script dem client die location nicht senden kann,dann soll es den weitern vorgang beenden.

        Dann ist ja gut: Dein Script kann dem Client den Header _immer_ übermitteln.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          Dann ist ja gut: Dein Script kann dem Client den Header _immer_ übermitteln.

          Einspruch: die Verbindung könnte gekappt sein.

          Aber:
          Die Konstruktion

          print "Location: $errorurl\n\n" || die("401 error 8\n");

          ist trotzdem sinnfrei: wenn der Location-Header nicht geschickt werden kann, kann auch der Status-Header nicht gesendet werden.

          cu,
          Andreas

          --
          MudGuard? Siehe http://www.Mud-Guard.de/
          Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
          1. Hi,

            Dann ist ja gut: Dein Script kann dem Client den Header _immer_ übermitteln.
            Einspruch: die Verbindung könnte gekappt sein.

            ich habe nichts von "ankommen" gesagt ;-)

            Chea "Wieso wusste ich nur, dass so ein Einwand kommt?" tah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Hi,

              Hi,

              Dann ist ja gut: Dein Script kann dem Client den Header _immer_ übermitteln.
              Einspruch: die Verbindung könnte gekappt sein.

              ich habe nichts von "ankommen" gesagt ;-)

              "Übermitteln" schließt aber im Gegensatz zu "Senden" das "Ankommen" mit ein.

              Chea "Wieso wusste ich nur, dass so ein Einwand kommt?" tah

              Wenn Du es wußtest, wieso hast Du es nicht vermieden? ;-)

              cu,
              Andreas

              --
              MudGuard? Siehe http://www.Mud-Guard.de/
              Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
              1. Hi,

                "Übermitteln" schließt aber im Gegensatz zu "Senden" das "Ankommen" mit ein.

                das sehe ich anders.

                Chea "Wieso wusste ich nur, dass so ein Einwand kommt?" tah
                Wenn Du es wußtest, wieso hast Du es nicht vermieden? ;-)

                Weil das die Antwort völlig unnötig - weil äußerst überflüssig - verkompliziert hätte. Dieser Punkt ist in diesem Thread von extremer Irrelevanz.

                Cheatah

                --
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
        2. Hi,

          was meinst Du mit falschem umbruch?

          Du sendest nur Linefeeds, keine Carriage Returns.

          meinst du so
          print "Location: $errorurl\r\n" || die("401 error 8\n");
          ?
          In selfhtml unter beispiel 2 bei "beachten Sie" stehts aber so
          http://selfhtml.teamone.de/cgiperl/funktionen/einausgabe.htm#print

          mein script läuft im use strict modus.

          Dann ist ja gut: Dein Script kann dem Client den Header _immer_ übermitteln.

          nochmal zu sleep.Ich könnte mir vorstellen,dass sleep im zusammenhang mit

          flock(DATEN,LOCK_EX)#datei vor anderen zugriffen schützen
          $sleep(1);# 1 sekunde warten

          funktionieren dürfte.
          gruss
          Alain

          1. Hi,

            print "Location: $errorurl\r\n" || die("401 error 8\n");

            jetzt ist der Umbruch richtig, aber es ist nur noch einer.

            In selfhtml unter beispiel 2 bei "beachten Sie" stehts aber so

            Auch SelfHTML ist nicht frei von Fehlern.

            nochmal zu sleep.Ich könnte mir vorstellen,dass sleep im zusammenhang mit

            [...]

            funktionieren dürfte.

            Es funktioniert auch in anderen Zusammenhängen. Aber was versprichst Du Dir davon?

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Hi,

              also ist es so print "Location: $errorurl\r\n\r\n" || die("401 error 8\n");
              recht?

              jetzt ist der Umbruch richtig, aber es ist nur noch einer.

              Es funktioniert auch in anderen Zusammenhängen. Aber was versprichst Du Dir davon?

              eben dass nicht beliebige requests pro sekunde erfolgen sondern nur 1er/s
              weil eventuell noch andere zugriff haben wollen-desshalb.
              Gruss
              Alain

              1. Hi,

                also ist es so print "Location: $errorurl\r\n\r\n" || die("401 error 8\n");
                recht?

                ja (sofern $errorurl eine _absolute_ URL enthählt). Dass der Fehlerfall niemals eintritt und somit das "|| die" nutzfrei ist weißt Du ja schon; und den Listenkontext verstehe ich immer noch nicht.

                [sleep] Aber was versprichst Du Dir davon?
                eben dass nicht beliebige requests pro sekunde erfolgen sondern nur 1er/s
                weil eventuell noch andere zugriff haben wollen-desshalb.

                Nein, das funktioniert nicht. Du möchtest Dich mit den Grundlagen von HTTP und Serverarchitektur, insbesondere Worker-Prozesse beschäftigen.

                Cheatah

                --
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. Hi,

                  also ist es so print "Location: $errorurl\r\n\r\n" || die("401 error 8\n");
                  recht?

                  ja (sofern $errorurl eine _absolute_ URL enthählt). Dass der Fehlerfall niemals eintritt und somit das "|| die" nutzfrei ist weißt Du ja schon; und den Listenkontext verstehe ich immer noch nicht.

                  der url kann ja auch so sein ?
                  my $errorurl = "script.cgi"; ist ja im selben verzeichniss.Du denkst also print "Location... funktioniert immer egal wie oder was das script anspricht?
                  Dann lass ich "die" eben weg.
                  Gruss vom
                  Alain

                  1. Hi,

                    der url kann ja auch so sein ?
                    my $errorurl = "script.cgi";

                    nein, das ist im Location-Header explizit verboten.

                    Du denkst also print "Location... funktioniert immer egal wie oder was das script anspricht?

                    Es gibt nichts, was die Ausführung eines simplen print-Befehls verhindern könnte. Es sei denn, Du schließt STDOUT, aber davon gehe ich einfach mal nicht aus.

                    Cheatah

                    --
                    X-Will-Answer-Email: No
                    X-Please-Search-Archive-First: Absolutely Yes
                    1. Hi,

                      der url kann ja auch so sein ?
                      my $errorurl = "script.cgi";

                      nein, das ist im Location-Header explizit verboten.

                      naja,aber es geht trotzdem?!

                      Du denkst also print "Location... funktioniert immer egal wie oder was das script anspricht?

                      Es gibt nichts, was die Ausführung eines simplen print-Befehls verhindern könnte. Es sei denn, Du schließt STDOUT, aber davon gehe ich einfach mal nicht aus.

                      nach dem print folgt dann noch ein exit;
                      sub bad {
                          print "Location: $errorurl\r\n\r\n";
                          exit;
                      }

                      alles klar,ok thx
                      Grüsse Dich
                      Alain

                      1. Hi,

                        nein, das ist im Location-Header explizit verboten.
                        naja,aber es geht trotzdem?!

                        das hatte noch nie irgendeine Aussagekraft oder Relevanz. Der schwerwiegendste Fehler hierbei ist, von einer arg begrenzten Zahl an Testfällen auf die Allgemeinheit zu schließen.

                        nach dem print folgt dann noch ein exit;

                        Klar, wenn Du sicher bist, was Du tust.

                        Cheatah

                        --
                        X-Will-Answer-Email: No
                        X-Please-Search-Archive-First: Absolutely Yes