Klaus: Gesammelte Danten immer wieder weiterleiten...

Hey,

stelle mir gerade eine komische Frage, Formulardaten die dann an ein CGI weitergegeben werden, werden ja dann dort ausgelesen.
Aber was passiert, wenn mann gleich nochmal ein cgi hinterher schickt... also das nochmal die daten auslesen soll ?

Geht das überhaupt? Ich denke nicht oder?
Oder gibts eine Methode, die daten von cgi an weitere cgi zu senden?
Ich sage mal... wie im HTML-Doc. mit der Methode POST usw.

Was meint Ihr dazu?

Klaus P.

  1. Hi Klaus,

    kannst Du Dein Problem bitte in verständlicher Form beschreiben?

    Aber was passiert, wenn mann gleich nochmal ein cgi hinterher schickt...

    Wer ist "man", und was meinst Du mit "schicken"?

    also das nochmal die daten auslesen soll?

    Welche Daten? (In welchem Gedächtnis befinden sich diese?)

    Geht das überhaupt? Ich denke nicht oder?

    Das kommt darauf an, was Du eigentlich tun willst.

    Oder gibts eine Methode, die daten von cgi an weitere cgi zu senden?

    Ein CGI-Skript kann sehr wohl mit anderen Programmen kommunizieren - über verschiedene Methoden.
    Eine dieser Methoden ist HTTP.

    Ich sage mal... wie im HTML-Doc. mit der Methode POST usw.

    Ein CGI-Skript kann durchaus dasselbe tun, was ein Browser auch kann - beides sind Programme.

    Viele Grüße
          Michael

    --
    T'Pol: I apologize if I acted inappropriately.
    V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
    1. Hi Michael,

      bin heute das erste mal hier... Entschuldigung... meine doch so kurze Beschreibung :-)
      Habe heute nun viel gelesen und ich habe fast die gleichen Probleme wie mach andere hier... Forallem mit Formulardaten.

      Ich hoffe es stört nicht, wenn ich dadurch fast einen "neuen" Thead aufbringe... Sorry... möchte nur Antwort geben:

      Habe wie andere folgendes vor:
      Ein Formular habe ich erstellt, daß seine Daten über ein CGI... dann per Email versendet. Nach dem versenden, soll dann eine Bestätigungsseite erscheinen, wo diverse Daten, was vorher im Formular schon eingegeben wurde wieder ausgegeben werden...
      Aber da ist das Problem, geht das überhaupt? Ich meine es wurde doch schon ausgelesen und und zweites mal geht doch nicht oder?

      Dann kommt noch das Problem, ich erstelle wie auch andere meine Pages mit Frontpage (War im Officepacke dabei :) und sowas wie Dreamweaver ist halt doch teuer).
      Ich stelle mir auch die Frage, wir kann ich nun diese Formulardaten in meiner mit Frontpage erstellten seite wieder ausgeben... alle Versuche scheiterten bisher... daher habe ich es auch schon lange aufgegeben... Bis heute... als ich hier das gelesen habe...

      Da ich auch gelesen habe, daß bei wiederholten Thead´s heftige Sprüche kommen... Sorry, wer das nicht versteht... ich gebe Michael nur mein Problem da... und eine Lösung zu diesen Probleme konnte ich bisher nicht finden.

      Michael, vielen dank schon mal...

      Klaus

      1. Hi Klaus,

        Ein Formular habe ich erstellt, daß seine Daten über ein CGI... dann per Email versendet. Nach dem versenden, soll dann eine Bestätigungsseite erscheinen, wo diverse Daten, was vorher im Formular schon eingegeben wurde wieder ausgegeben werden...
        Aber da ist das Problem, geht das überhaupt? Ich meine es wurde doch schon ausgelesen und und zweites mal geht doch nicht oder?

        Dein CGI-Skript, welches die Mail versendet, muß an den Webserver (und damit an den Browser) ein Antwortpaket (sinnvollerweise ein HTML-Dokument) senden. Diese Bestätigungsseite kannst Du natürlich dynamisch erzeugen (statt auf eine statische Seite weiterzuleiten); Du kannst also ein Formular generieren, welches bereits die entsprechenden Werte in den jeweiligen Eingabefeldern enthält (value=). Praktisch jede (serverseitig arbeitende) Suchmaschine funktioniert so - auch die Suchmaschine des Self-Archivs.

        Dann kommt noch das Problem, ich erstelle wie auch andere meine Pages mit Frontpage (War im Officepacke dabei :) und sowas wie Dreamweaver ist halt doch teuer).

        Das ist ein Problem, in der Tat. ;-)

        Ich stelle mir auch die Frage, wir kann ich nun diese Formulardaten in meiner mit Frontpage erstellten seite wieder ausgeben...

        Gar nicht. Das Formular _muß_ serverseitig generiert werden - es muß bereits mit den Feldinhalten versehen an den Browser gesendet werden, also mit dynamischen Inhalten.

        Du kannst das Frontpage-Erzeugnis als Kopiervorlage verwenden (obwohl ich selbst davon abraten würde).
        Du kannst das Dokument sogar durch Dein CGI-Skript einlesen, parsen und dynamisch modifizieren lassen; das ist etwas aufwändiger, aber Du könntest dann das Formular mit Frontpage ändern, ohne Dein CGI-Skript anpassen zu müssen - und Du könntest damit die Pflege des Formulars einem Nicht-Programmierer übertragen. Große Teile der Software des Self-Portals funktionieren so ähnlich (das Forum ebenso wie die Suchmaschine).

        Viele Grüße
              Michael

        --
        T'Pol: I apologize if I acted inappropriately.
        V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
        1. Dein CGI-Skript, welches die Mail versendet, muß an den Webserver (und damit an den Browser) ein Antwortpaket (sinnvollerweise ein HTML-Dokument) senden. Diese Bestätigungsseite kannst Du natürlich dynamisch erzeugen (statt auf eine statische Seite weiterzuleiten); Du kannst also ein Formular generieren, welches bereits die entsprechenden Werte in den jeweiligen Eingabefeldern enthält (value=). Praktisch jede (serverseitig arbeitende) Suchmaschine funktioniert so - auch die Suchmaschine des Self-Archivs.

          Aha, diesen Abschnitt habe ich nun 3 mal gelesen und er leuchtet mir nicht ein :(! Wenn ich eine Webseite so z.B. in cgi schreibe, fehlen mir sämtliche anordnungen, wie Bilder, verschiedene schriften usw...
          Dieses alles von Hand zu schreiben ist ja hiehmlich heftig und ob das dann auch noch alles so funktioniert...

          Gar nicht. Das Formular _muß_ serverseitig generiert werden - es muß bereits mit den Feldinhalten versehen an den Browser gesendet werden, also mit dynamischen Inhalten.

          Kann ich nicht die mit FP erstellte Webseite nehmen umbenennen und als cgi deklatieren und dann hier noch modifikationen vornehmen? Habe das mal in einem Buch von Amazon gelesen, daß dies gehen soll... Allerdings muß ich zugeben, daß Buch habe ich auch wieder zurück gegeben :)

          Du kannst das Frontpage-Erzeugnis als Kopiervorlage verwenden

          Kopievorlage... wie meinst du das?

          Du kannst das Dokument sogar durch Dein CGI-Skript einlesen, parsen und dynamisch modifizieren lassen; das ist etwas aufwändiger, aber Du könntest dann das Formular mit Frontpage ändern, ohne Dein CGI-Skript anpassen zu müssen - und Du könntest damit die Pflege des Formulars einem Nicht-Programmierer übertragen. Große Teile der Software des Self-Portals funktionieren so ähnlich (das Forum ebenso wie die Suchmaschine).

          Kannst du mir das irgendwie näher erklären, das habe ich noch nie gemacht und weis auch ehrlich gesagt gar nicht, wie und wo ich da anfangen sollte...

          Finde das echt super... möchte mich auf jeden Fall schon mal bednken... ein bisschen einsicht habe ich nun doch... ganz wenig ;-)

          Gruß
          Klaus

          1. Hi Klaus,

            Dein CGI-Skript, welches die Mail versendet, muß an den Webserver (und damit an den Browser) ein Antwortpaket (sinnvollerweise ein HTML-Dokument) senden. Diese Bestätigungsseite kannst Du natürlich dynamisch erzeugen (statt auf eine statische Seite weiterzuleiten); Du kannst also ein Formular generieren, welches bereits die entsprechenden Werte in den jeweiligen Eingabefeldern enthält (value=). Praktisch jede (serverseitig arbeitende) Suchmaschine funktioniert so - auch die Suchmaschine des Self-Archivs.
            Aha, diesen Abschnitt habe ich nun 3 mal gelesen und er leuchtet mir nicht ein :(! Wenn ich eine Webseite so z.B. in cgi schreibe, fehlen mir sämtliche anordnungen, wie Bilder, verschiedene schriften usw...

            Beim Browser kommt HTML-Code an. Wer den wann erzeugt hat, ist dem Browser egal. Auch in einem via CGI generierten HTML-Dokument kannst Du <img>-Tags etc. verwenden ... und "Schriften" existieren nicht im HTML-Umfeld (stark vereinfacht ausgedrückt, ich weiß), nur Referenzen auf Namen von (clientseitig installierten) Schriften.

            Gar nicht. Das Formular _muß_ serverseitig generiert werden - es muß bereits mit den Feldinhalten versehen an den Browser gesendet werden, also mit dynamischen Inhalten.
            Kann ich nicht die mit FP erstellte Webseite nehmen umbenennen und als cgi deklatieren

            Eine Webseite ist kein Programm. "deklarieren" alleine reicht nicht.

            Du kannst das Frontpage-Erzeugnis als Kopiervorlage verwenden
            Kopievorlage... wie meinst du das?

            Du hast dort ja schon den HTML-Code stehen, den Du an den Browser senden willst. Nun - genau das kann Dein CGI-Skript per "print"-Anweisungen auch tun. Du kannst also Frontpage als "Malprogramm" verwenden und das erzeugte HTML in ein Programm umwandeln (in PHP oder Perl wäre das relativ einfach). Wobei allerdings Frontpage nicht dafür berühmt ist, besonders verständlichen oder optimierten HTML-Code zu generieren ... :-\

            Du kannst das Dokument sogar durch Dein CGI-Skript einlesen, parsen und dynamisch modifizieren lassen; das ist etwas aufwändiger, aber Du könntest dann das Formular mit Frontpage ändern, ohne Dein CGI-Skript anpassen zu müssen - und Du könntest damit die Pflege des Formulars einem Nicht-Programmierer übertragen. Große Teile der Software des Self-Portals funktionieren so ähnlich (das Forum ebenso wie die Suchmaschine).
            Kannst du mir das irgendwie näher erklären, das habe ich noch nie gemacht und weis auch ehrlich gesagt gar nicht, wie und wo ich da anfangen sollte...

            Welche Grundlagen hast Du denn? Programmieren können mußt Du schon ... ansonsten: Datei öffnen, Inhalt zeilenweise einlesen, jede Zeile prüfen, ob bestimmte Zeichenketten darin enthalten sind, bestimmte Zeichenketten durch Deine Formularwerte ersetzen, Ergebnis ausgeben. Reicht das als Programmskelett?

            Viele Grüße
                  Michael

            --
            T'Pol: I apologize if I acted inappropriately.
            V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
            1. Hallo Michael

              Du hast dort ja schon den HTML-Code stehen, den Du an den Browser senden willst. Nun - genau das kann Dein CGI-Skript per "print"-Anweisungen auch tun. Du kannst also Frontpage als "Malprogramm" verwenden und das erzeugte HTML in ein Programm umwandeln (in PHP oder Perl wäre das relativ einfach). Wobei allerdings Frontpage nicht dafür berühmt ist, besonders verständlichen oder optimierten HTML-Code zu generieren ... :-\

              Deute ich das richtig, wenn ich theoretisch vor jede zeit (bei dem Code von FP) das print davor setze, wirft mit dieses cgi dann die gleiche seite aus wie wenn es direkt von FP auf .html gesetzt wäre?
              Dann würden sich meine Probleme ja fast von alleine aufheben, da die "Auswertung oder Auslesung" vorne ran stellen könnte und dann praktisch den Code dazu geben könnte, odeR?
              Hab ich das Richtig verstanden?

              Welche Grundlagen hast Du denn? ?

              Nunja... Anfänger und hab mich ein bisschen vorangearbeitet, aber es muß noch viel gelernt werden :-)

              Habe jetzt mal unten ein Beispiel dazugetan... :)

              Danke und viele Grüße
              Klaus

              Beispiel:

              #!cgi c:\apache\perl\bin\perl.exe -w
              <html>

              <head>
              <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
              <meta http-equiv="Content-Language" content="de">
              <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
              <meta name="ProgId" content="FrontPage.Editor.Document">
              <title>Regestrierungsbestätigung</title>
              <meta name="Microsoft Border" content="tl, default">
              </head>

              <body><!--msnavigation--><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td>

              PRINT <p style="word-spacing: 0; line-height: 100%; margin: 0">.<font size="6"><b><span style="position: absolute; left: 20; top: 24"><font color="#000080"><img border="0" src="../Bildanimationen/jupu-logo1.gif" width="185" height="105"></font></span></b></font>
              PRINT <p style="word-spacing: 0; line-height: 100%; margin: 0"><span style="position: absolute; left: 343; top: 24"><img border="0" src="../Bildanimationen/jungpumpen.gif" width="200" height="60"></span><span style="position: absolute; left: 549; top: 29"><img border="0" src="../Bildanimationen/pumpe_2_ani.gif" width="90" height="57"></span><span style="position: absolute; left: 645; top: 30"><img border="0" src="../Bildanimationen/pumpe_3_ani.gif" width="90" height="57"></span><span style="position: absolute; left: 741; top: 30"><img border="0" src="../Bildanimationen/pumpe_1_ani.gif" width="90" height="57"></span></p>
              PRINT <p style="word-spacing: 0; line-height: 100%; margin: 0"> </p>
              .....
              </td></tr><!--msnavigation--></table><!--msnavigation--><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td valign="top" width="1%">

              PRINT <p style="word-spacing: 0; line-height: 100%; margin: 0"> </p>
                      PRINT <p style="word-spacing: 0; line-height: 100%; margin: 0"> </p>
                      PRINT <p style="word-spacing: 0; line-height: 100%; margin: 0"><font color="#000080" size="4" face="Verdana">Kategorien...  
                      PRINT </font></p>
                      PRINT <p style="word-spacing: 0; line-height: 100%; margin-left: 0; margin-right: 0; margin-top: 1; margin-bottom: 0"> </p>
                      PRINT <p style="word-spacing: 0; line-height: 100%; margin-left: 0; margin-right: 0; margin-top: 1; margin-bottom: 0"><font face="Verdana" size="4"><applet code="fphover.class" codebase="../" width="120" height="16"><param name="effect" value="glow"><param name="hoversound" valuetype="ref" value="../Bildanimationen/start.wav">
                      PRINT   <param name="font" value="Helvetica">
                      PRINT   <param name="fontstyle" value="regular">
                      PRINT   <param name="fontsize" value="12">
                        <param name="text" value="Home">
                        <param name="url" valuetype="ref" value="/index.htm">
                        <param name="textcolor" value="#000080">
                        <param name="hovercolor" value="#BDD3FF">
                        <param name="color" value="#F0F0F0"></applet></font></p>
                      .......

              PRINT <p style="word-spacing: 0; line-height: 100%; margin-top: 1; margin-bottom: 0"> </p>

              PRINT <param name="font" value="Helvetica">
                PRINT <param name="fontstyle" value="regular">
                PRINT <param name="fontsize" value="12">
                        PRINT <param name="url" valuetype="ref" value="http://www.jung-pumpen.de/German/ger_frameset.html">
                        PRINT <param name="text" value="direkt">
                        PRINT <param name="textcolor" value="#000080">
                        PRINT <param name="hovercolor" value="#BDD3FF">
                        PRINT <param name="color" value="#F0F0F0"></applet></font></p>

              PRINT <p style="word-spacing: 0; line-height: 100%; margin-top: 1; margin-bottom: 0"> </p>

              </td><td valign="top" width="24"></td><!--msnavigation--><td valign="top">

              <p> </p>
              <%
              read(STDIN, my $Daten, $ENV{'CONTENT_LENGTH'});
              my @Formularfelder = split(/&/, $Daten);
              my ($Feld, $Name, $Wert);
              my %Formular;
              foreach $Feld (@Formularfelder) {
                (my $Name, my $Wert) = split(/=/, $Feld);
                $Wert =~ tr/+/ /;
                $Wert =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
                $Wert =~ s/</&lt;/g;
                $Wert =~ s/>/&gt;/g;
                $Formular{$Name} = $Wert;
              %>
              PRINT <p style="background-color: #BDD3FF"><font face="Verdana" size="5" color="#000080">Regestrierungsbestätigung</font></p>
              PRINT <p>Ihre Registrierung haben wir erhalten. Sie bekommen in den nächsten Tagen Ihre Zugangsdaten per Email zugesandt.</p>
              PRINT <blockquote>
              PRINT   <blockquote>
              PRINT     <blockquote>
              PRINT       <p>Mit freundlichen Grüßen</p>
              PRINT       <p><em>JUPU</em></p>
              PRINT       <p> </p>
              PRINT       <p> </p>
              PRINT     </blockquote>
              PRINT   </blockquote>
              PRINT </blockquote>
              <hr>
              PRINT <p><font face="Arial" size="1">Copyright © 2003 Michael Sirl. Alle Rechte vorbehalten.<br>
              PRINT Stand: <!--webbot bot="TimeStamp" S-Type="EDITED" S-Format="%d. %B %Y" startspan -->03. Januar 2003<!--webbot bot="TimeStamp" endspan i-checksum="33315" -->
               <br>
              </font></p>

              <!--msnavigation--></td></tr><!--msnavigation--></table></body>

              </html>

              1. <%
                read(STDIN, my $Daten, $ENV{'CONTENT_LENGTH'});

                ...

                %>

                <!-- UAH! ASP! Jetzt nimmst Du Dir ein dickes Buch über ASP und vesuchst mal folgendes: //-->

                <form>
                <input type="text" name="test" value="<% echo $Formular{'Name'} %>">
                </form>

                <!-- Mein Beispiel wird nicht funktionieren, weil ich kein ASP kann. Aber Du kannst es ja lernen //-->

                http://www.google.de/search?q=ASP+lernen

                fastix

              2. Hi Klaus,

                Deute ich das richtig, wenn ich theoretisch vor jede zeit (bei dem Code von FP) das print davor setze, wirft mit dieses cgi dann die gleiche seite aus wie wenn es direkt von FP auf .html gesetzt wäre?
                Hab ich das Richtig verstanden?

                semantisch, ja. Syntaktisch, nein. "print" ist case-sensitiv, und wie man eine Zeichenkette begrenzt, wirst Du in der Perl-Dokumentation auch nachlesen müssen.

                Wenn Du eine Lösung in Perl suchst, wäre eher der Abschnitt "here document" das, was Du suchst.

                In PHP könntest Du Dein HTML-Dokument nehmen und PHP-Anweisungen hinein streuen - das ist Deinem gewünschten Lösungsweg wahrscheinlich etwas ähnlicher.

                read(STDIN, my $Daten, $ENV{'CONTENT_LENGTH'});
                my @Formularfelder = split(/&/, $Daten);
                my ($Feld, $Name, $Wert);
                my %Formular;
                foreach $Feld (@Formularfelder) {
                  (my $Name, my $Wert) = split(/=/, $Feld);
                  $Wert =~ tr/+/ /;
                  $Wert =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
                  $Wert =~ s/</&lt;/g;
                  $Wert =~ s/>/&gt;/g;
                  $Formular{$Name} = $Wert;
                %>

                weg damit, und statt dessen: "use CGI;" plus entsprechende Parameter-Wertzuweisungen.

                PRINT <blockquote>
                PRINT   <blockquote>
                PRINT     <blockquote>
                PRINT       <p>Mit freundlichen Grüßen</p>
                PRINT       <p><em>JUPU</em></p>
                PRINT       <p> </p>
                PRINT       <p> </p>
                PRINT     </blockquote>
                PRINT   </blockquote>
                PRINT </blockquote>

                Au weia. Das ist es, was Frontpage so unbeliebt macht. CSS ist Dein Freund ...

                Viele Grüße
                      Michael

                --
                T'Pol: I apologize if I acted inappropriately.
                V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
  2. Aber was passiert, wenn mann gleich nochmal ein cgi hinterher schickt... also das nochmal die daten auslesen soll ?

    Hi!

    Also ein Script "hinterherschicken" geht nicht.

    Aus PHP heraus kannst Du z.B. mit readfile("http://...?daten=inhalt") ein zweites Script aufrufen, aber das ist eher ein verschachteln und nur in seltenen Ausnahmefällen als sinnvoll anzusehen.

    1. Aus PHP heraus kannst Du z.B. mit readfile("http://...?daten=inhalt") ein zweites Script aufrufen, aber das ist eher ein verschachteln und nur in seltenen Ausnahmefällen als sinnvoll anzusehen.

      Hallo Fastix!

      Interessant, hast du ein Beispiel was in PHP geschrieben wurde. Ich habe bisther fast nur CGI und kein PHP gemacht. Vielleich würde mir das helfen und ich könnte es umbauen und somit auch ein bisschen mehr verstehen...

      Danke für deine Antwort.

      Klaus

      1. #php- Script Nr.1:
        <html>
        <body>
        <hr>
        <?
        readfile("http://host/php2.php?daten=Hallo%20Welt!");
        ?>
        <hr>
        </body>
        </html>

        #php- Script Nr.2:
        <?
        echo "<h1>$daten</h1>";
        ?>

        zu bewundern unter

        http://www.fastix.de/php1.php
        http://www.fastix.de/php2.php

        #geht nicht, wenn PHP auf Windows- Kiste läuft (Meiner Erfahrung nach...)

        1. #geht nicht, wenn PHP auf Windows- Kiste läuft (Meiner Erfahrung nach...)

          Doch, geht :)

          http://fastix.dyndns.org/tests/php1.php

          fastix

      2. Hi Klaus,

        Ich habe bisther fast nur CGI und kein PHP gemacht.

        CGI ist keine Programmiersprache ... meinst Du vielleicht Perl? Da gibt es das als Modul ...

        Viele Grüße
              Michael

        --
        T'Pol: I apologize if I acted inappropriately.
        V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.