Sunboy: was ist falsch am PL ? Url eingabe => Refresh auf url

Hallo,

ich kann zwar Perl und CGI scripte anpassen ändern, aber
mit dem schreiben klemmt es etwas...

Ich möchte ein einfaches Formular erstellen,
dass eine Eingabe erlaubt und zwar einer URL,
die dann von dem CGI oder Perl Script
in den Meta Tag REFRESH eingesetzt wird.

Bisher habe ich ein Formular, dass so aussieht:

<html><head></head>
<form action="http://mein.cgidir.de/test/refresh.cgi" method=post>
Gib die Url ein und ich erstelle Dir eine
Refreh Seite daraus
<input type=text name=textfeld value="http://www.DeineSeite.de" size=30 maxlength=40><p>
<input type=reset value="Zurücksetzen">
<input type=submit name=submit value="Abschicken">
</form></body></html>

Das File refresh.pl sieht so aus:

====
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "REFRESH 111; URL=$textfeld">
print "<html><head><title>test</title></head>\n";
print "</body></html>\n";
1;

Leider klappt es nicht und der server bringt den Fehler 500.
Die Rechte sind richtig vergeben...

Wer kann mir helfen und mir nen Tip geben wie ich
die Variable "textfeld" richtig in den Refresh Befehl einbaue ?

Es soll erreicht werden, dass eine Seite geladen wird, die
vorher eingeben wurde, und zwar mit dem Refresh 111 aktualisiert
wird. Das ganze hat den Zweck ein lästiges Timeout zu umgehen.

Vielen Dank auf jeden Fall !!!

Gruss

Sunboy

  1. Hi,

    #!/usr/local/bin/perl

    besser:

    #!/usr/local/bin/perl -w
    use strict;

    Dann hättest Du auch erfahren, daß Du $textfeld zu deklarieren vergessen hast.

    print "Content-type: text/html\n\n";

    Dein (korrekter) HTTP-Header ist durch die Leerzeile ("\n\n") beendet worden.

    print "REFRESH 111; URL=$textfeld">

    Dies ist bereits der Body; und nebenbei bemerkt ist das ungültiges HTML.

    Übrigens ist die Perl-Syntax falsch, wie Dir

    perl -c refresh.pl

    auf Deinem heimischen PC verraten hätte.

    1;

    Die Zeile ist nicht nötig, sofern Du das Script nicht z.B. mit require einbindest.

    Leider klappt es nicht und der server bringt den Fehler 500.
    Die Rechte sind richtig vergeben...

    Nicht raten, nachschauen! Woher der 500er kommt, steht im Error-Log Deines Servers - alles andere ist vertane Zeit!

    Wer kann mir helfen und mir nen Tip geben wie ich
    die Variable "textfeld" richtig in den Refresh Befehl einbaue ?

    Lies dazu auf Deinem Rechner

    perldoc CGI

    Beispiel:

    #!/usr/local/bin/perl -w
    use strict;
    use CGI ':standard';
    print header, start_html('test'), p('Eingegeben wurde: ' . param('textfeld')), end_html;

    Vermutlich meinst Du aber:

    #!/usr/local/bin/perl -w
    use strict;
    use CGI ':standard';
    print redirect(param('textfeld'));

    Es soll erreicht werden, dass eine Seite geladen wird, die
    vorher eingeben wurde, und zwar mit dem Refresh 111 aktualisiert
    wird. Das ganze hat den Zweck ein lästiges Timeout zu umgehen.

    Ach so. Nun, dann ist die zweite Variante nicht die richtige, sondern eine Variation der ersten. Siehe dazu (wie gesagt)

    perldoc CGI

    Ein bißchen Eigenleistung muß ja immerhin auch sein ;-)

    Cheatah

    1. Moin!

      print "REFRESH 111; URL=$textfeld">
      Dies ist bereits der Body; und nebenbei bemerkt ist das ungültiges HTML.

      Oha, das hab ich ja auch noch uebersehen, er meinte wohl sowas wie

      print qq|<META HTTP-EQUIV="refresh" CONTENT="111; URL=$textfeld"|;

      So long

  2. Hi!

    Bisher habe ich ein Formular, dass so aussieht:

    <html><head></head>
    <form action="http://mein.cgidir.de/test/refresh.cgi" method=post>
    Gib die Url ein und ich erstelle Dir eine
    Refreh Seite daraus
    <input type=text name=textfeld value="http://www.DeineSeite.de" size=30 maxlength=40><p>
    <input type=reset value="Zurücksetzen">
    <input type=submit name=submit value="Abschicken">
    </form></body></html>

    Das File refresh.pl sieht so aus:

    ====
    #!/usr/local/bin/perl
    print "Content-type: text/html\n\n";
    print "REFRESH 111; URL=$textfeld">
    print "<html><head><title>test</title></head>\n";
    print "</body></html>\n";
    1;

    Na gut, aber was meinst Du, was in der Variable $textfeld drinsteht? Nichts natuerlich, denn Du hast die Variable nie initialisiert, d.h. ihr einen Wert zugewiesen. Vermutlich denkst Du, dass der Inhalt Deines <INPUT NAME=textfeld> dortrein kopiert wird, aber wieso sollte das passieren?

    Besser so:
    #!/usr/local/perl/bin -w

    use strict;                 # weist Dich auf viele Fehler hin, macht manches
                                # aber auch laestiger (ist einfach pingelig)
    use CGI qw/:standard/;      # das uebernimmt fuer Dich das Auswerten der
                                # mitgeschickten Daten

    my $textfeld = param('textfeld');    # Hier passiert's ;-)

    der Rest wie gehabt:

    print "Content-type: text/html\n\n";
    print "REFRESH 111; URL=$textfeld">
    print "<html><head><title>test</title></head>\n";
    print "</body></html>\n";

    Leider klappt es nicht und der server bringt den Fehler 500.

    Das weist aber auf ein anderes Problem hin. Obiger Code sollte jedenfalls keinen solchen Fehler bringen (liegt Perl auch wirklich in /usr/local/bin?). Michael hat hierfuer einen umfangreichen Artikel geschrieben, der auch eine Checkliste enthaelt, die Du durchgehen solltest: </selfaktuell/artikel/schroepl03.htm#a19>.

    So long

    1. Hi

      use CGI qw/:standard/;      # das uebernimmt fuer Dich das Auswerten der
                                  # mitgeschickten Daten

      1. Was bewirkt eigentlich das qw/:standard/ bei use cgi?

      2. Was ist der Vorteil des qw-Operator, wenn ich eh nur ein Wort zu quoten habe?
         Wo ist der Vorteil gegenüber einem normalen Quoting, z.B. so ":standard"?

      Grüsse

      Eisbär

      1. Re!

        use CGI qw/:standard/;      # das uebernimmt fuer Dich das Auswerten der
                                    # mitgeschickten Daten

        1. Was bewirkt eigentlich das qw/:standard/ bei use cgi?

        Dasselbe was es an jeder anderen Stelle bewirkt. Es erstellt eine Liste mit dem einzigen Element ':standard'. Es ist also aequivalent mit
          use CGI (':standard');

        Siehe auch <http://aspn.activestate.com/ASPN/Reference/Products/ActivePerl/lib/Pod/perlop.html#quote and quotelike operators>.

        1. Was ist der Vorteil des qw-Operator, wenn ich eh nur ein Wort zu quoten habe?
             Wo ist der Vorteil gegenüber einem normalen Quoting, z.B. so ":standard"?

        Keiner, ich mach das nur aus Gewohnheit so. Und angewoehnt hab ich mir das, weil ich finde, bei dieser Variante ist das Verhaeltnis von gut aussehen und wenig Tipparbeit am guenstigsten. *g*

        So long

  3. Hey vielen Dank...
    Ihr seid echt schnell...

    Ich weiss, dass einige Fehler drin sind,
    aber ich hab einfach kein optimum an Info
    im Web gefunden. Manche Dinge sind zu einfach zu
    ausführlich, andere zu lasch und lassen Infos weg.

    Ich lerne gerne an Beispielen und am besten nach
    Trail & Error Prinzip.
    Ich hab einige Beispiele gesehen, aber meistens
    wird dann an entscheidender Stelle etwas verschwiegen,
    was mir dann fehlt. So wäre eine gute Lernhilfe
    eine Webseite, die immer Aufruf & Ergebnis sowohl
    auf einer konkreten Webseite, als auch im Source
    zeigt. Naja ich kenne das von DHTML Scripten und
    fand das recht praktisch...

    • Ein Problem noch zu "»» print "REFRESH 111; URL=$textfeld">"

    Ich dachte mir, dass das nicht richtig ist.
    Ursprünglich war das im HEAD der Meta Tag
    <meta HTTP-EQUIV="REFRESH" CONTENT="111; URL=http://www.webseite.de">

    Aber ich weiss nicht, wie man das transformiert ?
    Ich bin da von der Änderung des "Content-Type" ausgegangen...
    Die ja aus:
    "<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">"  zu ~ dem macht:
    "print "Content-type: text/html\n\n";"

    -Das mit der Verwechselung von cgi und pl hab ich schon gemerkt...
     Die Server Logs von meinem FREE Webspace haben leider nichts
     ergeben.

    -Der Perl Pfad von VirtualAve ist #!/usr/local/bin/perl
     das müsste stimmen

    -Hier passiert's  ;) <- Muss ich mir merken ;)

    So hier nun die derzeitige Fassung....
    leider kommt dann nur eine Seite mit dem TITEL "TEST"...
    Der META TAG Refresh und der Wert der Url die eingegeben wurde
    kam ned an...
    Der Server Fehler lag wohl an meiner Dummheit... ich denke
    ich habs ausversehen binary geuploaded 0:D

    "print header, start_html('test'), p('Eingegeben wurde: ' . param ('textfeld')), end_html;"
    gibt korrekt den TEXT aus...aber das ist ja nicht das Ziel...

    Es soll ja der üble Meta Tag
    <meta HTTP-EQUIV="REFRESH" CONTENT="111; URL=http://www.webseite.de">
    geniert werden...
    Und ich hab keine Ahnung wie der im Script heissen müsste...

    Das hat leider nicht geklappt---

    #!/usr/local/bin/perl -w
    use strict;
    use CGI qw/:standard/;
    my $textfeld = param('textfeld');
    print "Content-type: text/html\n\n";
    print "REFRESH 111; URL=$textfeld">
    print "<html><head><title>test</title></head>\n";
    print "</body></html>\n";

    Es wurde nur der Titel TEST ausgeben und der Refresh erschien
    gar nicht...

    Vielen Dank auf jeden Fall für die superschnell Hilfe !!!

    Gruss aus dem gewitterigen Freiburg

    Sunboy

    1. Hi,

      <meta HTTP-EQUIV="REFRESH" CONTENT="111; URL=http://www.webseite.de">

      Aber ich weiss nicht, wie man das transformiert ?

      in HTTP gar nicht, weil dort keine Zeitangabe möglich ist - dieses Protokoll funktioniert grundsätzlich instantan. Daher ist die Bezeichnung "HTTP-EQUIV" eigentlich grottenfalsch, was natürlich sehr irreführend wirkt.

      Ich bin da von der Änderung des "Content-Type" ausgegangen...

      Das ist nur ein möglicher HTTP-Header.

      "<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">"  zu ~ dem macht:
      "print "Content-type: text/html\n\n";"

      Der Header muß _vor_ jedem Inhalt stehen. Verwechsele auch nicht HTTP und HTML: "Content-Type" ist HTTP, "<meta>" HTML. Letzteres wird mit ersterem transportiert.

      -Der Perl Pfad von VirtualAve ist #!/usr/local/bin/perl
      das müsste stimmen

      Besser:

      #!/usr/local/bin/perl -w
      use strict;

      Damit wirst Du auf (auch potentielle) Fehler aufmerksam gemacht. Sämtliche Infos stehen im Error-Log des Servers - gut wäre für Dich auch ein Telnet-Zugang.

      "print header, start_html('test'), p('Eingegeben wurde: ' . param ('textfeld')), end_html;"
      gibt korrekt den TEXT aus...aber das ist ja nicht das Ziel...

      Tja, ich hab Dir gesagt, daß Du in

      perldoc CGI

      nachlesen sollst, wie Du start_html erweiterst, um den Refresh hinzubekommen ;-) Ich nehme doch stark an, Du hast Perl bei Dir installiert, oder? Ohne Doku (die selbstverständlich dabei ist) kann man schlecht programmieren.

      Das hat leider nicht geklappt---

      Ich zitiere noch mal die Zeile, die mir gleich ins Auge springt:

      print "REFRESH 111; URL=$textfeld">

      Und ich meine _nicht_, daß das ein abgekappter <meta>-Tag ist, der eigentlich in den <head>-Bereich gehört, sondern spiele auf einen Syntaxfehler an. Teste Deine Scripts mit

      perl -c scriptname.pl

      Es wurde nur der Titel TEST ausgeben und der Refresh erschien
      gar nicht...

      Schau Dir ggf. mal den Quellcode der Ausgabe an.

      Cheatah

      1. in HTTP gar nicht, weil dort keine Zeitangabe möglich ist - dieses Protokoll funktioniert grundsätzlich instantan. Daher ist die Bezeichnung "HTTP-EQUIV" eigentlich grottenfalsch, was natürlich sehr irreführend wirkt.

        Stimmt, das hat mich auch schon immer gewundert.

        Ich zitiere noch mal die Zeile, die mir gleich ins Auge springt:

        print "REFRESH 111; URL=$textfeld">
        Und ich meine _nicht_, daß das ein abgekappter <meta>-Tag ist, der eigentlich in den <head>-Bereich gehört, sondern spiele auf einen Syntaxfehler an. Teste Deine Scripts mit
        perl -c scriptname.pl

        Mmh, ich hab's jetzt nicht ausprobiert, aber wenn ich mir die Zeilen

        print "REFRESH 111; URL=$textfeld">
        print "<html><head><title>test</title></head>\n";

        so anschaue, also... koennte es sein, dass das gar kein Syntaxfehler ist? Ist doch nicht verboten, "REFRESH 111; URL=$textfeld" mit dem Ruckgabewert des zweiten print numerisch zu vergleichen und das Ergebnis auszugeben (mit dem ersten print). Muesste aber mit -w eine Warnung geben, die er aber nicht sieht, weil er wohl kein Error log hat.

        So long

        1. Hi,

          Mmh, ich hab's jetzt nicht ausprobiert, aber wenn ich mir die Zeilen

          print "REFRESH 111; URL=$textfeld">
          print "<html><head><title>test</title></head>\n";
          so anschaue, also... koennte es sein, dass das gar kein Syntaxfehler ist?

          <test /> hm, stimmt! Ich hätte gewättet, er würde etwas von wegen "useless use..." monieren. Schade eigentlich!

          Muesste aber mit -w eine Warnung geben,

          ´Argument "REFRESH 111; URL=bla" isn't numeric in gt at D:\Web.de\online\cgi-bin\test\test10.pl line 6.´

          (Ich hab $textfeld mal fix auf 'bla' gesetzt, damit nicht der uninitialized value im offline-Test erkannt wird.)

          die er aber nicht sieht, weil er wohl kein Error log hat.

          Ein Auto, bei dem in der Karosserie die Aussparungen für die Scheiben vergessen wurden...

          Cheatah

    2. Hi Folks

      Es kann nun sein, dass ich einigen Leuten den Spass verderbe. Ich möchte nun aber das Rätseln nach ca. 5h mit einer möglichen Lösung abkürzen.

      Das Ziel, das Sunboy erreichen will, wird wohl mit folgendem Code erreicht werden können:

      ===
      #!/usr/local/bin/perl -w
      use strict;
      use CGI qw/:standard/;
      my $textfeld = param('textfeld');
      print "Content-type: text/html\n\n";
      print "<html><head><title>test</title>";
      print "<meta HTTP-EQUIV="REFRESH" CONTENT="3; URL=".$textfeld."">";
      print "</head>\n";
      print "<body>Bla bla ...";
      print "</body></html>\n";

      Und nun die Erläuterung zu den einzelnen Zeilen:

      use CGI qw/:standard/;
         my $textfeld = param('textfeld');
         print "Content-type: text/html\n\n";
      Mit diesen Befehlen wird das CGI-Modul geladen, der Inhalt des Formularfeldes "textfeld" in den Skalar "texfeld" kopiert und der HTTP-Header für eine HTML-Datei generiert.
      Mit dem Schreiben von "\n\n" ist der HTTP-Header abgeschlossen, alles was danach geschrieben wird ist Bestandteil der HTML-Datei. Im Übrigen gibts keinen HTTP-Header-Eintrag der das verzögerte Umleiten erlaubt.
      Für das unmittelbare Umleiten steht jedoch der HTTP-Header-Befehl "Location" zur Verfügung.
      z.B.  print "Location: $textfeld\n\n";  # Ohne Content-Type oder ein anderer HTTP-Haeder-Eintrag davor oder danach.

      print "<html><head><title>test</title>";
         print "<meta HTTP-EQUIV="REFRESH" CONTENT="3; URL=".$textfeld."">";
      Damit wird normal die HTML-Datei geschrieben, die im speziellen den Meta-Tag "Refresh" für die zeitlich verzögerte Weiterleitung enthält.
      Zu beachten ist hierbei, dass die Zeitangabe in Sekunden erfolgt, womit der ursprüngliche Wert von 111 sich zum testen nicht sehr eignet ;-)

      print "</head>\n";
      print "<body>Bla bla ...";
      print "</body></html>\n";

      Der Rset ist wie gehabt.

      Grüsse

      Eisbär

  4. HOI !!!!

    Also ich habs noch ned hinbekommen...
    Aber ich hab KEIN Perldoc... und auch keinen
    lokalen server...oder ne Perl Installation...
    Ich lebe mit freewebspace usw...

    Hmmm so wie es aussieht geht das also gar ned....
    *seuftz*

    Die Zeile is 100% falsch, aber wie lautet sie richtig ?
    print "REFRESH 111; URL=$textfeld">

    Dürfen da überhaupt ";" drinnen sein ???

    Also manuell kann man die Seite doch erzeugen,
    also muss es doch irgendwie möglich sein, den Eintrag
    <meta HTTP-EQUIV="REFRESH" CONTENT="1; URL=http://www.123.de">
    im script darstellen zu lassen...

    Ich weiss nur, dass das ganze im HEAD steht und ausserdem
    immer nach url ein HTTP:// stehen muss...
    aber durch die Vorgabe, die ich im formular einbaue wo schon
    "http://" drinnen steht sollte das gehen...

    Mein Auto sieht viiiiiiiel schlimmer aus als meine Script versuche *g*

    Ohjeeeee das sieht aber ned gut aus...
    Auf jeden Fall vielen Dank für Eure Mühe...

    Gruss

    Sunboy

    1. Hi,

      Aber ich hab KEIN Perldoc...

      http://www.perl.com/
      http://www.perldoc.org/
      ...

      Hmmm so wie es aussieht geht das also gar ned....

      Du gibst HTML aus und kannst darin exakt das gleiche machen, was auch mit jeder anderen HTML-Ressource geht. Es existiert im Endergebnis nicht der geringste Unterschied.

      Die Zeile is 100% falsch, aber wie lautet sie richtig ?
      print "REFRESH 111; URL=$textfeld">

      Schau mal nach ganz rechts.

      Dürfen da überhaupt ";" drinnen sein ???

      Innerhalb des Strings darf im Grunde alles stehen. Ein paar Zeichen müssen durch den Backslash maskiert werden, das Semikolon gehört aber nicht dazu.

      Frage Dich lieber, was _nach_ dem String stehen muß ;-)

      Also manuell kann man die Seite doch erzeugen,
      also muss es doch irgendwie möglich sein, den Eintrag
      <meta HTTP-EQUIV="REFRESH" CONTENT="1; URL=http://www.123.de">
      im script darstellen zu lassen...

      Natürlich. Du mußt nur exakt das ausgeben, was Du auch manuell schreiben würdest.

      Ich weiss nur, dass das ganze im HEAD steht

      Im HTML-<head>, nicht im HTTP-Header.

      Mein Auto sieht viiiiiiiel schlimmer aus als meine Script versuche *g*

      Hoppla :-)

      Cheatah

    2. Hi,

      Also ich habs noch ned hinbekommen...
      Aber ich hab KEIN Perldoc... und auch keinen
      lokalen server...oder ne Perl Installation...
      Ich lebe mit freewebspace usw...

      Dagegen ist nichts einzuwenden.
      Aber Deine Arbeitsmethodik solltest Du grundlegend überdenken.

      Ein Programm der Komplexität Deines Skripts bietet einem Programmierer
      mit Deinen Erfahrungen größenordnungsmäßig 10-15 Fehlermöglichkeiten.
      Wenn Du für jeden Fehler fünf Forums-Postings produzierst und danach
      immer noch keine Lösung hast, dann kann die Methode nichts taugen.
      Andere Programmierer arbeiten systematischer.

      Zuallererst mal hilft es nichts, erraten zu wollen, wie eine Sprache
      funktioniert - Du mußt Dir die Regeln bewußt machen, und das geht
      deutlich am besten durch Lesen (bzw. Nachschlagen). SELFHTML basiert
      auf *genau* dieser Idee.
      Als nächstes: Der Perl-Interpreter würde Dir den größten Teil Deiner
      Arbeit abnehmen, wenn Du es ihm denn erlauben würdest. Deine Blindflug-
      Methode ist unnütze Selbstquälerei; installiere Dir Perl und teste
      Deine Skripte lokal so weit aus, bis sie zumindest syntaktisch okay
      sind und eine halbwegs taugliche Ausgabe produzieren. Auf diesem Teil
      des Weges sind die Fehlermeldungen des Perl-Interpreters mindestens so
      gut wie Hilfestellungen im Forum. Erst danach, wenn Dir ein semantischer
      Sachverhalt unklar ist oder ein Teil des Algorithmus nicht gelungen ist,
      macht es Sinn, eine zweite und dritte Meinung einzuholen.

      Wenn Du konkret CGI-Anwendungen entwickeln möchtest, dann würde ich Dir
      sogar dazu raten, einen Webserver lokal zu installieren - denn auch hier
      wieder liefert der Webserver eine Menge Diagnoseinformationen, die Dir
      helfen, nunmehr semantische Fehler zu finden (etwa einen fehlerhaften
      HTTP-Header). Aber das eilt nicht, solange Du noch derartig unsicher
      bist, was Perl selbst angeht.

      Es ist nicht so, daß ich Dir nicht helfen möchte (ganz im Gegenteil) -
      nur sehe ich nicht, daß Dich selbst das Posten eines vollständigen
      korrekten Perl-Skripts wirklich weiter bringt.

      Viele Grüße
            Michael

      1. HI,
        danke für Deine Kritik...
        Aber ich möchte kein (!) Proghrammierer werden und
        auch nicht stunden mit Grundlagen verbringen,
        wenn ich so ne einfach Funktion machen will.

        Niemand geht wegen nem kaputten Scheibenwischer
        gleich zur Werkstatt. Klar es wäre besser, aber
        ich hab dazu leider keine Zeit.

        Ich hab weder die Kohle noch die nötige Sachen....sein
        es Bücher oder mal schnell auf einen Rechner Perl hochzuziehen usw.
        Gut es ist etwas quälend, aber ich hab das Script fast soweit,
        dass es das macht was ich will.
        Das Ergebnis zählt für mich mehr als der Weg dahin.
        Klar ist mir auch, dass das nicht mit ALLEM so gehen wird.

        Naja ich lerne halt anders... ich nehme mir lieber ein Beispiel
        und zerpflücke es dann und schaue mal, was dann passiert.

        Ich hab schon etliche Scripte für mich ins deutsche übetragen
        und es geht einwandfrei... dabei hab ich dann auch schon einiges
        gelernt, was ich besser nicht tun sollte.
        Jeder Schritt wird abgespeichert, so dass wenn ich mal ein BUG
        oder etwas übersehe später auch wieder rausfliegt.

        Scripte selber schreiben ist sehr langweilig und ich wünchte
        es gäbe eine leistungsfähige Software die das einem abnimmt...

        Ich meine HTML kann kann man auch aus dem Buch oder durch betrachten von Homepages erlernen. Gut sicher es das methodisch sauberere
        Vorgehen sicher das Buch oder das Nachschlagen. Aber ich bin kein Programmierer und ich denke der Job des Programmierers stirbt so wie er heute ist irgendwann aus.
        Ich arbeite neben dem Studium (nicht informatik) in ner Software Firma und teste Software und kenne fast alle Entwickler per Du. Aber glaubst Du die wissen noch was die da tun ??? Jeder arbeitet an nem anderen Ast und wenn es ein Problem gibt, dann wissen nur noch wenige wiso weshalb warum. Jeder ist auf seinem Gebiet der Meister, aber wenn dann Nachbarsgarten betroffen ist haben sie keine Ahnung mehr.
        Ich will damit sagen, dass die Spezialisierung auf ein Gebiet ist nicht unbedingt was gutes sein muss. Irgend jemand muss auch wenn nicht perfekt Zusammenhänge erkennen.

        Sooo genug gelabbert

        Grüssle

        vom

        Sunboy

        1. Hi auch,

          Aber ich möchte kein (!) Proghrammierer werden und
          auch nicht stunden mit Grundlagen verbringen,
          wenn ich so ne einfach Funktion machen will.

          Wenn die Funktion "so einfach" ist, warum mußt Du dann um Hilfe rufen? ;-)

          Niemand geht wegen nem kaputten Scheibenwischer gleich zur Werkstatt.

          Klar, Du kannst es auch selbst machen. Kommt darauf an, wie teuer Dein
          Auto war und welche handwerklichen Vorkenntnisse Du mitbringst.

          Ich hab weder die Kohle noch die nötige Sachen....sein
          es Bücher oder mal schnell auf einen Rechner Perl hochzuziehen usw.

          Sowohl Perl http://www.activestate.com/ als auch der
          Webserver http://httpd.apache.org/ sind kostenlos verfügbar.

          Du mußt nur wollen ...

          Naja ich lerne halt anders... ich nehme mir lieber ein Beispiel
          und zerpflücke es dann und schaue mal, was dann passiert.

          Wenn Du damit glücklich wirst, ist das okay.

          Es gibt sehr unterschiedliche Lerntypen - es gibt aber auch allgemeine
          wissenschaftliche Erkenntnisse über das Lernen.

          Jeder Schritt wird abgespeichert, so dass wenn ich mal ein BUG
          oder etwas übersehe später auch wieder rausfliegt.

          Das ist immerhin schon mal eine sehr gute Idee.

          Scripte selber schreiben ist sehr langweilig und ich wünchte
          es gäbe eine leistungsfähige Software die das einem abnimmt...

          Das ist leider derzeit grundsätzlich unmöglich.

          Denn Skripte schreiben ist kreativ - will sagen: Du setzt Deine eigenen
          Vorstellungen in Anweisungen einer Sprache um. Genau so wie das Malen
          eines Bildes oder das Schreiben eines Buchs. Nichts davon läßt sich
          automatisieren, solange Du kein Interface zwischen Deinem Gehirn und
          dem entsprechenden Rechner hast.

          Ich meine HTML kann man auch aus dem Buch oder durch betrachten von
          Homepages erlernen.

          Wie kannst Du sicher sein, daß das, was Du in einer Homepage vorfindest,
          wirklich HTML ist? Du siehst nur, wie Dein Browser darauf reagiert, nicht
          aber, ob er so reagiert, wie der Autor das gewollt hat (der diese Seite
          womöglich nur mit einem ganz anderen Browser angesehen hat).

          ich denke der Job des Programmierers stirbt so wie er heute ist
          irgendwann aus.

          Siehe oben.

          Ich arbeite neben dem Studium (nicht informatik) in ner Software
          Firma und teste Software und kenne fast alle Entwickler per Du.
          Aber glaubst Du die wissen noch was die da tun ???

          Wenn sie systematisch arbeiten und die Ergebnisse ihrer Arbeit doku-
          mentieren würden, dann würde ich genau das eigentlich annehmen.

          Jeder arbeitet an nem anderen Ast und wenn es ein Problem gibt,
          dann wissen nur noch wenige wiso weshalb warum.

          Ich nehme an, Du möchtest den Namen dieser Firma hier nicht nenen? ;-)

          Jeder ist auf seinem Gebiet der Meister, aber wenn dann Nachbarsgarten
          betroffen ist haben sie keine Ahnung mehr.

          Bei mir ist es genau anders herum: Ich bin nirgendwo "Meister" (deshalb
          poste ich auch keine exakten Code-Stücke als Lösung, sondern nur Ideen).
          Mein Gebiet ist es, von möglichst vielen Gebieten die Grundzüge zu ver-
          stehen und das Bindeglied zwischen meinen Kollegen zu sein, die wiederum
          überwiegend Spezialisten sind.

          Ich will damit sagen, dass die Spezialisierung auf ein Gebiet ist
          nicht unbedingt was gutes sein muss.
          Irgend jemand muss auch wenn nicht perfekt Zusammenhänge erkennen.

          Ganz meine Meinung - genau das macht mir am meisten Spaß.

          Aber Dir ist auch klar, daß jemand mit dieser Funktion Deine Arbeits-
          methode (und Dein bewußter Verzicht auf das Verstehen der Zusammenhänge)
          immer mit Mißtrauen betrachten wird?

          Viele Grüße
                Michael

  5. So nun hat es FAST geklappt...
    Kurz bevor Eisbär es gepostet hab ich auch eine
    Webseite gefunden die den Refresh Befehl in einem
    Beispiel hatte und die Seite wird korrekt erstellt und
    leitet auch weiter. Super Eisbär !!!

    Leider funktioniert das ganze Skript aber nicht so, wie
    ich mir das gedacht hatte :(

    Die eingegebene URL führt auf eine Seite mit dem Refresh
    und dann wird die neue Seite, als neue Seite im selben Frame
    geladen.
    Ich wollte eigentlich, dass der Refresh IMMER WIEDER kommt
    und man so nicht auf einer besuchten Seite mit Timeout
    in den Timeout plumpst, weil ein refresh das unterbindet.

    Ich hab das ganze mit HTML ohne Skript bisher so gemacht und
    würde diese Funktion gerne noch irgendwie einbauen:

    Also ich hab ein INDEX.HTML und ein IFRAME.HTM
    Index.html sieht so aus:

    ===
    <head>
    <meta HTTP-EQUIV="REFRESH" CONTENT="11; URL=http://www.url.de/index.html">
    </head>
    <BODY bgColor=#000000 text="#FFFF00">
    <DIV align=center>
    <P><B><FONT face="Verdana, Arial, Helvetica, sans-serif" color=#000000
    size=3><IFRAME border=0 src="iframe.htm" width=648
    height=350></IFRAME></FONT></B></P></DIV>
    </BODY>

    Iframe.htm ist unsere bisherige HTML Seite wo man die Url eingibt.

    <head>/head>
    <body bgcolor="#ffffff">
    <form action="http://www.url.de/refresh.pl" method=post>
    Deine Url
    <input type=text name=textfeld value="https://www.idrive.com/" size=30 maxlength=40><p>
    <input type=reset value="Zurücksetzen">
    <input type=submit name=submit value="Abschicken">
    </form></body>

    ===

    Der Refresh auf der auf der Index Seite sorgt dafür, dass die Seite immer wieder neu geladen wird und somit das Timeout umgangen wird.

    Bleibt ein letztes Problem:

    Ich kann zwar auf eine Seite umlenken, die ich vorher eingegeben habe, aber leider will das Skript immer wieder, dass ich die URL von neuen eingebe nach jedem REFRESH wird das Skript neu geladen und erfordert eine erneute Eingabe der Url.
    Wie kann ich erreichen, dass im IFRAME die einmal eingebene Seite
    bleibt und immer wieder aktualisiert wird ?

    Anwendung wäre Z.B. eine Börsen Charts Seite oder eine Seite wo häufige Aktualisierung braucht. Jeder User kann so Seine Url eingeben und die betrachtete Seite ist ständig aktuell.

    Vielleicht gehts mit einem HTML Template, welches von Script erzeugt
    wird und dann auf die eingegebene Seite weiterleitet....

    Hmmm das kann doch nicht so schwer sein... allerdings
    komme ich selber grade nicht drauf.

    Merci auf jedenfall allen betreiligten ;)

    Sunboy

    1. Hi,

      Kurz bevor Eisbär es gepostet hab ich auch eine
      Webseite gefunden die den Refresh Befehl in einem
      Beispiel hatte

      Dies erstaunt mich nicht, daß Du ja - um dieses Forum gemäß FAQ
      benutzen zu können - <> gelesen haben mußtest.

      Leider funktioniert das ganze Skript aber nicht so, wie
      ich mir das gedacht hatte :(

      Dies erstaunt mich irgendwie nicht.
      Ich war gleich mitrauisch, als Du trotz wenig Lust auf Program-
      mierern-Lernen mit einer technischen Detail-Frage ankamst.

      Jetzt können wir uns also über Deine eigentliche Aufgabenstellung
      unterhalten, was Du gleich als erstes hättest tun sollen.

      Die eingegebene URL führt auf eine Seite mit dem Refresh
      und dann wird die neue Seite, als neue Seite im selben Frame
      geladen.
      Ich wollte eigentlich, dass der Refresh IMMER WIEDER kommt

      Ein Refresh "kommt" aber nicht immer wieder. Du hast in eine Seite
      den Befehl eingetragen, automatisch auf eine *andere* Seite
      weiterzuleiten. Woher sollte die wissen, daß Du von ihr dasselbe
      willst? (Und wieso sollte sie Dir das auch erlauben wollen - es ist
      ja möglicherweise gar nicht Deine Seite?)

      und man so nicht auf einer besuchten Seite mit Timeout
      in den Timeout plumpst, weil ein refresh das unterbindet.

      Das wiederum solltest Du detaillierter erklären. Denn wenn der
      Anbieter einer Seite darin einen Timeout-Mechanismus integriert
      hat, dann hat er sich üblicherweise dabei etwas gedacht.

      Diese Seite nun durch automatische wiederholte Anforderung daran
      zu hindern, so zu reagieren, wie sie es eigentlich sollte, macht
      nur in wenigen, ausgewählten Sonderfällen wirklich Sinn.

      Ich hab das ganze mit HTML ohne Skript bisher so gemacht und
      würde diese Funktion gerne noch irgendwie einbauen:

      <meta HTTP-EQUIV="REFRESH" CONTENT="11; URL=http://www.url.de/index.html">

      damit bewirkst DU, daß Deine eigene Seite immer wieder geladen wird.

      <IFRAME border=0 src="iframe.htm"

      Und damit bindest Du statisch eine bestimmte Seite ein.

      <form action="http://www.url.de/refresh.pl" method=post>

      Das wiederum bewirkt den AUfruf einer dritten Seite - und damit verläßt
      Du das "bekannte Universum".

      <input type=text name=textfeld value="https://www.idrive.com/"

      Dies wiederum ist eine vierte Seite - und offenbar nicht Deine, richtig?

      Der Refresh auf der auf der Index Seite sorgt dafür, dass die Seite
      immer wieder neu geladen wird und somit das Timeout umgangen wird.

      Welcher Timeout?

      Bleibt ein letztes Problem:

      Ich kann zwar auf eine Seite umlenken, die ich vorher eingegeben habe,
      aber leider will das Skript immer wieder, dass ich die URL von neuen
      eingebe

      Wenn Du das nicht willst, dann mußt Du das Skript entsprechend umschreiben.

      nach jedem REFRESH wird das Skript neu geladen und erfordert eine
      erneute Eingabe der Url.

      Niemand hat dem Skript gesagt, daß es das nicht tun soll. Dein Skript
      kann den ersten Aufruf nicht von jedem weiteren unterscheiden.

      Anwendung wäre Z.B. eine Börsen Charts Seite oder eine Seite wo häufige
      Aktualisierung braucht. Jeder User kann so Seine Url eingeben und die
      betrachtete Seite ist ständig aktuell.

      Aha, langsam beginne ich zu ahnen, was Du eigentlich willst.

      Wenn der Anbieter dieser Börsenseite (der ja nicht Du selbst bist)
      das für sinnvoll halten würde, warum hat er das nicht selbst so ein-
      gerichtet?
      Beispielsweise mit einer Frames-Struktur, welche in einem Frame genau
      diesen Chart als Dokument mit einer Refresh-Anweisung auf sich selbst
      anzeigt. Genau für so etwas sind Frames nämlich ganz praktisch.

      Allerdings ist ein META REFRESH für eine sich selbst auffrischende
      Anzeige z. B. eines Börsencharts m. E. Unfug. Selbst bei einem
      Intraday-Chart tut sich so wenig innerhalb einer sinnvollen Refresh-
      Zeit, daß sich ein automatischer Refresh nicht lohnt.
      Wenn man das richtig machen will, dann würde man ein Java-Applet neh-
      men, das dann ereignisorientiert mit dem Server kommuniziert (Push-
      Technologie), also den Anstoß für die erneute Übertragung nicht im
      Browser, sondern auf dem Server auflöst (denn *der* weiß, ob es
      überhaupt Bedarf nach einer neuen Übertragung gibt).

      Vielleicht gehts mit einem HTML Template, welches von Script erzeugt
      wird und dann auf die eingegebene Seite weiterleitet....
      Hmmm das kann doch nicht so schwer sein... allerdings
      komme ich selber grade nicht drauf.

      Ich denke, das Problem liegt nicht auf der Seite der Technik, sondern
      in einer (zumindest mir) noch nicht transparenten Aufgabenstellung.

      Viele Grüße
            Michael

      1. Hi nochmal,

        Dies erstaunt mich nicht, daß Du ja - um dieses Forum gemäß FAQ
        benutzen zu können - <> gelesen haben mußtest.

        gngngn ... http://www.teamone.de/selfhtml/tcbc.htm#a9 natürlich.

        Viele Grüße
              Michael

      2. Sooo nun bin ich wieder da...
        musste noch etwas die Welt verbessern *g*
        Nunja an machen stellen geht das ja noch---

        Also ich hab bisher nicht weitergearbeitet am Script...
        aber ich hab eine neue Anwendung dafür gefunden...
        und deswegen möchte ich es schon noch fertig stellen...
        Mit IDRIVE kann man eigentlich nur ein FIle downloaden
        mit dem script wird man mehrere runterladen können---
        grade wegen dem immer wiederkommenden REFRESH,,,
        Nunja auf HTML geht das wunderbar...aber ich will ja ned
        für jeden IDrive download eine neue Page schreiben...
        DAS soll das script machen
        Ich poste das aber neu--- sonst wird mir zu unübersichtlich-...

        Dies erstaunt mich nicht, daß Du ja - um dieses Forum gemäß FAQ
        benutzen zu können - <> gelesen haben mußtest.

        Ja ich nicht...ich hole nur nützliches wissen...
        alles andere wird verworden...und erst abgerufen
        wenn es gebraucht wird.... tja da könnte sich so manches
        Betreibssystem eine Scheibe von abschneiden *g*

        Dies erstaunt mich irgendwie nicht.
        Ich war gleich mitrauisch, als Du trotz wenig Lust auf Program-
        mierern-Lernen mit einer technischen Detail-Frage ankamst.

        Naja... warte mal ab es wird noch detailierter...
        Ich kann auch den Kopierschutz von einer Software knacken oder
        andere sachen ohne je in ein C++ Buch geschaut zu haben....
        Ich glaube nicht so ganz, dass man gewisse Dinge erlernen kann....

        Ein Refresh "kommt" aber nicht immer wieder. Du hast in eine Seite
        den Befehl eingetragen, automatisch auf eine *andere* Seite
        weiterzuleiten. Woher sollte die wissen, daß Du von ihr dasselbe
        willst? (Und wieso sollte sie Dir das auch erlauben wollen - es >>> ist ja möglicherweise gar nicht Deine Seite?)

        Nein die seite wird ja von script erstellt...
        dummerweise ist die Seite ja über das pl angesprochen...und
        nach dem refresh wird die seite neu generiert...
        Hmmm ein cockie könnte das erledigen.... aber das ist
        mir zu stressig... ein template das dann seinerseits
        wieder aufgerufen wird...und immer reloaded wird...
        Hmmmm auch ned gut... ich muss mir da noch was einfallen
        lassen....

        Das wiederum solltest Du detaillierter erklären. Denn wenn der
        Anbieter einer Seite darin einen Timeout-Mechanismus integriert
        hat, dann hat er sich üblicherweise dabei etwas gedacht.
        Diese Seite nun durch automatische wiederholte Anforderung daran
        zu hindern, so zu reagieren, wie sie es eigentlich sollte, macht
        nur in wenigen, ausgewählten Sonderfällen wirklich Sinn.

        Tjaaaaaaaa der sinn , s.o. beschrieben ist, dass ich mehrere files donwloaden kann, was der anbieter ned will....
        es kann aber auch dazu gut sein eine seite oft zu aktualisieren...
        das script ist sehr universell einsetzbar...
        Hmmm naja wenn ich mir so die Gegenseite ansehe wäre es verdammt
        einfach diese script ausser gefecht zu setzen....aber
        soweit ist man ja nocht nicht *g* es krank... aber mir macht
        das mehr spass, als das was ich da effektiv runterlade...

        Genauso wie beim cheaten.... das spiel ist es nicht...
        aber es geschafft zu haben das game oder programm so zu verändern
        wie man es gerne hätte.... Irgendwie ein geiles gefühl :)))
        Soviel zu meinen abartigen Neigungen *g*

        <meta HTTP-EQUIV="REFRESH" CONTENT="11; URL=http://www.url.de/index.html">
        damit bewirkst DU, daß Deine eigene Seite immer wieder geladen wird.

        Bei dem, was ich selber schreibe weiss ich schon was ich da tue...
        meistens zumindestens.... externe effekte können schon auftreten...

        <form action="http://www.url.de/refresh.pl" method=post>

        Das wiederum bewirkt den AUfruf einer dritten Seite - und damit verläßt
        Du das "bekannte Universum".

        Hmmm vielleicht mit get.... *grübel*
        Ich sollte mal wieder was essen

        <input type=text name=textfeld value="https://www.idrive.com/"

        Dies wiederum ist eine vierte Seite - und offenbar nicht Deine, richtig?

        Ohem nein das ist nur ein vorgabewert...
        also wenn ich ein IDrive haben will gebe ich nach
        dem https://www.idrive.com/accountname an...
        Und www.idrive steht halt schon da... kann auch leer gelassen werden
        nur bin ich chronisch schreib faul...

        Der Refresh auf der auf der Index Seite sorgt dafür, dass die Seite
        immer wieder neu geladen wird und somit das Timeout umgangen wird.
        Welcher Timeout?

        Der des IDrives.... Also kurz:
        Du lädst die Urlaubsfotos des netten kollegen und er hat sie auf nem Idrive.... statt ein einziges archive zu machen hate der ########
        liebenswerte kollege alle einzeln hochgeladen... die bilder sind über 1 MB -. d,h, kein versenden via mail...
        Ich TAKE nun die Bilder oder Dateien... auf MEIN IDRIVE...geht 2 sekunden... schwub... dann will ich aber ned 100 jahre warten bis ich ein file runtergeladen habe....sondern will alle auf einmal ziehen...die bude verlassen und auf ne Party gehen...
        also mache ich mir ne seite, die mein idrive und die seite mit den files geschickt resfresht... damit hab ich rausgefunden passiert folgendes nicht:

        Normal wenn man 1 file zieht -no problemo
        wenn man ein 2tes starte wird nach ner weile ein
        bösartiges timeout aktiv, das BEIDE files verwirft
        und die session ablaufen lässt.... ärger oh ärger...

        Tja also nach etwa 3 minuten hatte ich eine html seite
        die das unterbindet....
        Nun kommt die sozial Ader hoch... und ich möchte diese
        Feature allen zu verfügung stellen.... ergo brauche
        ich etwas universell einsetzbares...also ein formular,
        wo man die adresse angibt und dann ein script,
        dass eine Seite geniert , welches auf das gewünschte Drive
        führt und dann im header automatisch einen reload einbaut...

        Dummerweise kann das das script NICHT...
        weil es dann immer wieder einen reload macht...und die
        neueingabe einer URL will....

        das kann ich vielleicht umgehen indem ich die eingabe
        speichere in einem kecks, der dann statt der Variablen
        ausgelesen wird... das script schaut also if exist diese kecks
        dann liess diesen kecks aus... else gib mit die eingabe aufforderung...
        So in etwa würde es gehen... denke ich...ich hab allerdings keine AHnung welche Befehle ich da brauche...und auch kein bock mir
        das wissen mühsam zu suchen....

        Ich will es aber noch einfacher... irgendwie wirds schon gehen...
        ich muss nur mal zeit investieren...aber die ist ja bekanntlich SEHR knapp.... MIST mein essen...

        OK ich hoffe jetzt ist klarer was ich meine...
        Ich denke etwas kompliziert...

        greetz

        Sunboy

        1. Moin,

          OK ich hoffe jetzt ist klarer was ich meine...

          nein,

          Ich denke etwas kompliziert...

          und der exzessive Gebrauch von Satzzeichen macht deinen Text unlesbar.

          n.d.p.

        2. Hi,

          Ich kann auch den Kopierschutz von einer Software knacken oder
          andere sachen ohne je in ein C++ Buch geschaut zu haben....

          hm, warum wundert mich das Beispiel irgendwie nicht ...

          Genauso wie beim cheaten.... das spiel ist es nicht...
          aber es geschafft zu haben das game oder programm so zu verändern
          wie man es gerne hätte.... Irgendwie ein geiles gefühl :)))
          Soviel zu meinen abartigen Neigungen *g*

          ;-) Lustigerweise verstehe ich Deine Neigungen sogar. Aber wenn ich
          etwas bis 'zum Anschlag' testen will, dann frage ich niemanden dafür
          um Hilfe.

          Der Refresh auf der auf der Index Seite sorgt dafür, dass die Seite
          immer wieder neu geladen wird und somit das Timeout umgangen wird.
          Welcher Timeout?
          Der des IDrives.... Also kurz:
          Du lädst die Urlaubsfotos des netten kollegen und er hat sie auf nem
          Idrive.... statt ein einziges archive zu machen hate der ########
          liebenswerte kollege alle einzeln hochgeladen...

          Und Du möchtest 'das Problem' nun technisch lösen statt kommunikativ? ;-)

          Nun kommt die sozial Ader hoch... und ich möchte diese
          Feature allen zu verfügung stellen....

          So, wie andere Leute versuchen, den Quelltext von Windows etc. "allen
          zur Verfügung zu stellen"? Ich kann mich des Eindrucks nicht erwehren,
          da einen leicht subversiven Unterton herauszulesen.

          So in etwa würde es gehen... denke ich...ich hab allerdings keine
          AHnung welche Befehle ich da brauche...und auch kein bock mir
          das wissen mühsam zu suchen....

          Tja, *das* ist nun Dein Problem - dabei kann ich Dir nicht helfen.

          OK ich hoffe jetzt ist klarer was ich meine...

          Nicht wirklich, weil mit "IDrives" kein Begriff ist.

          Ich glaube nur verstanden zu haben, daß Du mit einer fremden Seite etwas
          anfangen willst, was der Autor dieser Seite definitiv *nicht* wollte.

          Viele Grüße
                Michael