Schrift
[thread]11153[/thread]

mit html auf cgi-Skript zugreifen; Wie?



<< |< 1 2 >| >> 17 Einträge, 2 Seiten
Duff
 2008-01-17 16:42
#104845 #104845
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Hallo,

ich möchte gerne wissen, wie ich ein html und perl/cgi verknüpfen muss.
Ich habe mir auf einem linux-system apache installiert und den Dienst gestartet.

Im Verzeichnis /var/www habe ich folgende Datei erstellt:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
debian:/var/www# cat begruessung.html
<html>
<head>
  <title>Wie heist du denn?</title>
</head>
 <body>
  <form action="hello.pl" method=get>
   <input type=text name="vorname" size=30>
   <input type=submit value="Ich haben fertig!">
  </form>
 </body>
</html>


Das Skript hello.pl sieht so aus:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
debian:/var/www# cat hello.pl
#!/usr/bin/perl -w
use strict;
my $qrystrg = $ENV{'QUERY_STRING'};
($varname, $varwert) = split(/=/, $qrystrg);

print "Content-type: text/html\n\n";
print "
<html>
 <head>
  <title>Hallo $varwert</title>
 </head>
 <body>
  <h1>Hallo $varwert</h1>
 </body>
</html>";#!/usr/bin/perl -w


Nur funktioniert die Ausführung noch nicht. Was muss ich ändern?
Habe das Skript auch schon mal nach /usr/lib/cgi-bin kopiert. Hat aber auch nichts gebracht.

Danke.
D'OH
Daniel
Linuxer
 2008-01-17 16:53
#104847 #104847
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Hi,

im html sollte es wahrscheinlich eher

Code: (dl )
1
2
<form action="/cgi-bin/script.pl" method="get"> 
</form>


heissen.

EDIT:
Ein Blick ins apache error_log ist auch immer angebracht; sollte unter /var/log/ zu finden sein.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
styx-cc
 2008-01-17 16:58
#104848 #104848
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Code: (dl )
1
2
3
4
5
6
#!/usr/bin/perl -w
use strict;
use CGI qw(param);
my $fname = param('vorname');
print "Content-type: text/html\n\n";
print "$fname\n";


Das Script packst du in das Unterverzeichnis "cgi-bin", welches im Hauptverzeichnis deiner Html-Dateien angelegt werden muss. Verpasse dem Script die Rechte 755.
Wenn du den Server schon Konfiguriert hast sollte es jetzt klappen, andernfalls musst du mal googlen, wie man Apache mit Perl, PHP etc. zusammen laufen laesst.
Pörl.
peter2k
 2008-01-17 17:00
#104849 #104849
User since
2006-09-16
4 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
($varname, $varwert) = split(/=/, $qrystrg);


Da du use strict benutzt sollte $varname und $varwert so aussehen

Code: (dl )
my ($varname, $varwert) = split(/=/, $qrystrg);
styx-cc
 2008-01-17 17:00
#104850 #104850
User since
2006-05-20
533 Artikel
BenutzerIn

user image
peter2k+2008-01-17 16:00:02--
Code: (dl )
($varname, $varwert) = split(/=/, $qrystrg);


Da du use strict benutzt sollte $varname und $varwert so aussehen

Code: (dl )
my ($varname, $varwert) = split(/=/, $qrystrg);

Man sollte immer das Modul CGI verwenden.
Pörl.
Duff
 2008-01-17 17:03
#104852 #104852
User since
2006-10-06
283 Artikel
BenutzerIn

user image
So, habe nun alles wie folgt abgeändert:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
debian:/var/www# cat begruessung.html
<html>
<head>
<title>Wie heist du denn?</title>
</head>
<body>
<form action="cgi-bin/hello.pl" method="post">
<input type=text name="vorname" size=30>
<input type=submit value="Ich haben fertig!">
</form>
</body>
</html>
debian:/var/www# cat /usr/lib/cgi-bin/hello.pl
#!/usr/bin/perl -w
#use strict;
my $qrystrg = $ENV{'QUERY_STRING'};
($varname, $varwert) = split(/=/, $qrystrg);

print "Content-type: text/html\n\n";
print "
<html>
<head>
<title>Hallo $varwert</title>
</head>
<body>
<h1>Hallo $varwert</h1>
</body>
</html>";#!/usr/bin/perl -w


Nun wird zwar die Seite mit "Hallo" angezeigt, allerdings wird der Wert nicht mit übertragen.
Wieso???
D'OH
Daniel
renee
 2008-01-17 17:08
#104853 #104853
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Weil Du das Formular mit "POST" verschickst, $ENV{QUERY_STRING} aber nur bei "GET" gesetzt wird. Deswegen auf styx_cc hören und das CGI-Modul verwenden...
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/
Duff
 2008-01-17 17:11
#104854 #104854
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Aha. D.h. ich müsste mir das Modul aus dem Internet herunter laden und installieren.

Die richtige Benutzung des Moduls kann ich dann aus den manpages nehmen?
D'OH
Daniel
GwenDragon
 2008-01-17 17:12
#104855 #104855
User since
2005-01-17
14789 Artikel
Admin1
[Homepage]
user image
Geht es dir jetzt nur dasrum wie du ein Perl-CGI in HTML einbaust?

Das begruessung.html lässt sich aber aufrufen, oder?

Das Perl-Skript sollte die Dateirechte O755 (rwxr-xr-x) haben und es sollte im selben Verzeichnis wie die begruessung.html liegen, es sei denn dein Apache-Server verwendet ein separates Verzeichnis für CGI.

Ansonsten ist es schwierig zu beurteilen woran es liegt, ohne deine Apache-Konfiguration zu kennen
styx-cc
 2008-01-17 17:12
#104856 #104856
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Duff+2008-01-17 16:11:43--
Aha. D.h. ich müsste mir das Modul aus dem Internet herunter laden und installieren.

Die richtige Benutzung des Moduls kann ich dann aus den manpages nehmen?

Ne, das muesste n Coremodul (also mitgeliefert) sein
Pörl.
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2008-01-17 16:42.