Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]404[/thread]

Programmierung eines vernetzten Eingabeformulars

Leser: 1


<< >> 5 Einträge, 1 Seite
Gast Gast
 2005-01-11 15:53
#4061 #4061
Hi @all,

Ich hoffe ich bin mit meiner Anfrage in diesem Bereich richtig gelandet....

Ich plane auf unserem Apache Server im LAN ein Eingabeformular
zur Verfügung zu stellen. Verschiedene Benutzer sollen in der Lage sein über ihren Browser auf den Server zu connecten und dort ein Eingabeformular aufzurufen. Die gemachten Eintragungen/Einstellungen sollen dann auf dem Server gespeichert und entsprechend verarbeitet werden. Soweit so gut.

Ich habe in letzter Zeit sehr viel mit PERL gearbeitet, habe aber keine Ahnung was Netz/Web-Programmierung mit PERL/CGI angeht.

- Meine Frage ist nun wie oben beschriebenes Projekt am besten zu realisieren ist (Welche Programmiersprache etc.)?

- Ist es möglich ein einziges PERL Skript zu schreiben, welches die genannten Funktionen zur Verfügung stellt und welches über LAN auf Client-Browsern aufgerufen werden kann? Oder muss ich zunächst eine html Seite bauen, in der dann PERL aufgerufen wird?

- Benötige ich CGI für mein Vorhaben und wenn "ja" welche Rolle spielt es dann?

Ihr seht Fragen über Fragen :-) Ich hoffe ihr könnt mich da auf den richtigen Weg bringen und mir sagen >welche< Werkzeuge ich >wofür< brauche.

Vielen Dank im voraus!

greetz,
Bionicman
Taulmarill
 2005-01-11 16:12
#4062 #4062
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
Quote
- Meine Frage ist nun wie oben beschriebenes Projekt am besten zu realisieren ist (Welche Programmiersprache etc.)?

als programmiersprache kannst du Perl benutzen. informiere dich über Perl CGI.

Quote
- Ist es möglich ein einziges PERL Skript zu schreiben, welches die genannten Funktionen zur Verfügung stellt und welches über LAN auf Client-Browsern aufgerufen werden kann? Oder muss ich zunächst eine html Seite bauen, in der dann PERL aufgerufen wird?

die von dir gewünschten funktionen können mit einem einzigen Perl script umgesetzt werden. eine aufteilung auf mehrere script kann je nach umfang aber sinnvoll sein.

Quote
- Benötige ich CGI für mein Vorhaben und wenn "ja" welche Rolle spielt es dann?

entweder CGI oder mod_perl. ich würde dir aber du CGI raten, wenn du noch unerfahren bist.

nach deinen fragestellungen vermute ich, dass du nicht so recht weisst, was CGI eigendlich ist. daher versuche ich mal das kurz richtig zu stellen.
CGI ist keine programmiersprache, sondern nur die anbindung eines programmes an den webserver (z.B. apache). CGI beschreib, sehr simpel ausgedrückt, dass die ausgabe des Perl programmes vom apache an den user weitergereicht wird.

du solltest dich am besten mal mit der apachekonfiguration vertraut machen (oder den admin deines vertrauens fragen) und dir ein wenig CGI anschauen (mit CGI ist oft Perl gemeint).

evtl. hilft dir schon http://de.selfhtml.org/cgiperl/index.htm weiter.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Bionicman
 2005-01-13 01:51
#4063 #4063
User since
2005-01-13
2 Artikel
BenutzerIn
[default_avatar]
Okay, danke für die Tipps!

Habe ein Code-Beispiel aus dem angegebenen Tutorial auf einem Apache Server ausprobiert.
Das hier ist meine html-Seite:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Kommentarseite</title>
</head>
<body bgcolor="#E0E0E0">
<h1>Ihr Kommentar</h1>
<form action="/cgi-bin/comments.pl" method="post">
<p>Name:<br><input size="40" maxlength="40" name="AnwenderName"></p>
<p>Text:<br><textarea rows="5" cols="50" name="Kommentartext"></textarea></p>
<p><input type="submit" value="Absenden"></p>
</form>
</body>
</html>

Und das hier mein CGI/PERL Skript:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);
read(STDIN, my $Daten, $ENV{'CONTENT_LENGTH'});

open(PRINTIT,">/usr/local/daten.txt");
print PRINTIT "foo";
close(PRINTIT);

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 "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
print "<html><head><title>CGI-Feedback</title></head>\n";
print "<body><h1>CGI-Feedback vom Programm <i>comments.pl</i></h1>\n";
print "<p><b>Name:</b> $Formular{AnwenderName}</p>\n";
print "<p><b>Kommentartext:</b> $Formular{Kommentartext}</p>\n";
print "</


Mein Problem ist nur, dass ich keine Datei erstellt bekommen, in die ich die über das Formular eingegebenen Daten ablegen kann.
Die Zeilen:

open(PRINTIT,">/usr/local/daten.txt");
print PRINTIT "foo";
close(PRINTIT);

sollten im Perl-Skript meines Erachtens ausreichen um eine Datei zu erstellen?! Oder gibt's da evtl. Probleme mit Schreibrechten (der angegebene Ordner hat sämtliche Schreibrechte/Ausführbarkeiten?
Bionicman
 2005-01-13 03:15
#4064 #4064
User since
2005-01-13
2 Artikel
BenutzerIn
[default_avatar]
Hi,

hat jetzt doch geklappt. Der Fehler lag offenbar darin, dass ich die Datei in dem falschen Ordner erstellen wollte.

Mit den folgenden Zeilen konnte ich dann die gewünschte Datei erstellen. Darin lassen sich dann x-beliebige Daten hinterlegen (z.B. aus dem Formular). Wichtig ist offenbar auch das der /cgi-bin Ordner entsprechende Schreibrechte hat (chmod 755).

open(OUTPUTFILE,">/usr/lib/cgi-bin/test.txt") || die("FEHLER: Datei kann nicht geschrieben werden...");
print OUTPUTFILE "Zeile 1\n";
print OUTPUTFILE "Zeile 2\nZeile 3";
close(OUTPUTFILE);

greetz,
Bionicman
renee
 2005-01-13 08:29
#4065 #4065
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Herzlich Willkommen bei Perl-Community.de

Ich würde Dir raten, das Modul CGI zu benutzen und statt -w das use warnings zu benutzen.:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/perl

use warnings;
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);

open(PRINTIT,">/usr/local/daten.txt");
print PRINTIT "foo";
close(PRINTIT);

my $cgi = CGI->new();
my %Formular = $cgi->Vars();

print $cgi->header(-type => 'text/html');
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
print "<html><head><title>CGI-Feedback</title></head>\n";
print "<body><h1>CGI-Feedback vom Programm <i>comments.pl</i></h1>\n";
print "<p><b>Name:</b> $Formular{AnwenderName}</p>\n";
[...]


P.S.:Bitte beim nächsten Mal [code]-Tags verwenden...\n\n

<!--EDIT|renee|1105597836-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 5 Einträge, 1 Seite



View all threads created 2005-01-11 15:53.