Daten an ein Formular übergeben II

Von: , Frage gestellt am Fr, 4. Aug 2000

Hallo
Ich hatte vor kurzem schon danach gefragt, wie man mit einem Link Daten an ein Formular übergeben kann.
So nun hab ich mir mal ein Script erstellt, das beim aufruf ein Formular ausgibt.
Dieses Script hab ich zusätzlich als txt file zur ansicht hochgeladen http://www.spidernetz.de/probe.txt
Die paar Programmzeilen hat mir ein Bekannter geschickt,,,

Nun wenn ich das Script normal aufrufe, wird das Formular erstellt.
Rufe ich das Script aber so auf
test.cgi?name=test
dann bekomme ich 500 Internal Server Error
Mein bekannter sagte mir, das wenn ich ?name=test an die URL anhänge, wird test im Formularfeld name eingetragen. Aber es geht nicht
Und mein Bekannter ist leider jetzt für eine Woche nicht erreichbar....

Vielleicht könnte mir hier mal jemand sagen wo der Fehler liegt
Wie gesagt, das Script läuft auf
http://www.gifdown.de/test.cgi
Und den text des Scriptes könnt Ihr Euch auf
http://www.spidernetz.de/probe.txt ansehen

3 Antworten zu dieser Frage

  1. Antwort von nach 11 Stunden hilfreich
    Re: Daten an ein Formular übergeben II

    hi, Nun wenn ich das Script normal aufrufe, wird das Formular
    erstellt.
    aha. Rufe ich das Script aber so auf
    test.cgi?name=test dann bekomme ich 500 Internal Server Error
    die rechte fuer das script und das verzeichnis in dem es liegt sind korrekt? Mein bekannter sagte mir, das wenn ich ?name=test an die URL
    anhänge, wird test im Formularfeld name eingetragen. Aber es
    geht nicht
    nee, du gibst auch keinen value-wert im feld name an... aber im feld mail machst du das ja. sehen wir es mal als beispiel an.
    wo bekommst du deine variable $mail her? sollte das ein defaultwert sein?
    also, mit php heisst die variable tatsaechlich so (naja, in deinem fall aber '$email' :-)
    das ganze ist aber ein perlscript. da heisst die variable $Getstring{'email'}
    trag die mal als defaultwert ein. ob das ganze jetzt fuer den 500 verantwortlich ist, kann ich jetzt nicht sagen, koennte aber sein.


    probier es mal aus.
    ich rate dir auch, bei der url-variablen-sequenz ganz oben im script mal ein paar leerzeichen und zeilenumbrueche einzusetzen. is dann einfacher zu lesen :-)

    gruss, stefan

    • Antwort von nach 11 Stunden hilfreich
      nochwas

      in dem form-tag solltest du als action 'test.cgi' angeben.
      ich werde ausserdem das gefuehl nicht los, dass die sequenz oben fehler enthaelt. probier mal diese variante.

      <PRE>
      read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
      @pairs = split(/&/, $buffer);
      foreach $pair (@pairs) {
      ($name, $value) = split(/=/, $pair);
      $value =~ tr/+/ /;
      $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
      $input{$name} = $value;
      }
      <PRE>


      deine eingabevariablen heissen jetzt $input{$value}

      gruss

  2. Antwort von nach 13 Stunden hilfreich
    Re: Schlechtes Skript!

    Hi,

    wenn sich heute noch solche Skripte sehe, grausts mir immer.
    Dieses hantieren mit $env öffnet Sicherheitslücken so groß wie ein Scheunentor, zumindest wenns nicht richtig gemacht wird.

    Um die vom Browser kommenden Daten zu verarbeiten, gibts ein Perl-Modul welches diese Lücke schließt und eine sehr bequeme Verarbeitung zuläßt.

    Im folgenden ein angepasster Code (getestet und funktioniert):


    #!/usr/bin/perl
    use CGI;
    my $q=new CGI;
    print $q->header;
    print <<KOPF; #das ist ein Block
    <html>
    <head><title> Test</title></head>
    <body bgcolor=white text=black link=blue vlink=blue>
    <center>
    <form action="test" method="post">"
    <table border=0 cellpadding=4>
    <tr>
    <td align=right>
    Homepage URL:
    </td><td>
    <input type="text" name="pageurl" size=40>
    </td>
    </tr><tr>
    <td align=right>
    Homepage Name:
    </td><td>
    <input type="text" name="pagename" size=40>
    </td>
    </tr><tr>
    <td align=right>
    Dein Name:
    </td><td>
    <input type="text" name="name" size=40>
    </td>
    </tr><tr>
    <td align=right>
    Deine E-Mail:
    </td><td>
    KOPF
    #Hier wird die Adresse eingefügt
    print '      <input type="text" name="email" value="'.$q->param("email").'" size=40>'."\n";
    print <<SCHWANZ;
    </td>
    </tr><tr>
    <td align=right>
    Wähle ein Passwort:
    </td><td>
    <input type="password" name="pass1" size=40>
    </td>
    </tr><tr>
    <td align=right>
    Wiederhohle das Passwort:
    </td><td>
    <input type="password" name="pass2" size=40>
    </td>
    </tr>\<tr>
    <td colspan=2 align=center>
    <input type="submit" value="Submit">
    <input type="reset" value="Reset">
    </td>
    </tr>
    </table>
    </center></font></body></html>
    SCHWANZ
    


    Die wichtigen Elemente hier sind:

    use CGI;
    bindet das Cgi-Modul ein.
    my $q=new CGI;
    erstell eine Instanz des Cgi-Moduls in $q.
    print $q->param("email")
    liest den Wert mit dem Schlüssel "email"

    Falls du noch Fragen hast, dann mail mir ruhig. (aber bitte nicht über die w-w-w - Weiterleitung)

    grüsse, holli

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!