Schrift
[thread]20[/thread]

Link nach Formulareingabe (Seite 2)



<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten
SirLant
 2003-08-25 23:22
#1431 #1431
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Ja kommt dann eben auf den Zweck an, mit ner entsprechend angehängten ID ,sieht er die Seite auch immer wieder.
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Drain
 2003-08-26 11:36
#1432 #1432
User since
2003-08-21
26 Artikel
BenutzerIn
[default_avatar]
[quote=pq,25.08.2003, 16:51]
Code (perl): (dl )
1
2
use CGI qw(redirect);
print redirect("http://example.org/seite.html");
[/quote]
Das klappt irgendwie noch nicht so ganz. Ich benutze
Code (perl): (dl )
1
2
use CGI qw(redirect);
print redirect("http://www.perl-community.de");

aber wenn Perl diese Befehlszeilen abarbeitet, erscheint in der Statuszeile des Browsers "Verbindung mit Site localhost herstellen" und nach einiger Zeit dann das Timeout.
Ne Idee, woran das liegen könnte?
pq
 2003-08-26 15:52
#1433 #1433
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Drain,26.08.2003, 09:36]Das klappt irgendwie noch nicht so ganz. Ich benutze
Code (perl): (dl )
1
2
use CGI qw(redirect);
print redirect("http://www.perl-community.de");

aber wenn Perl diese Befehlszeilen abarbeitet, erscheint in der Statuszeile des Browsers "Verbindung mit Site localhost herstellen" und nach einiger Zeit dann das Timeout.
Ne Idee, woran das liegen könnte?[/quote]
nö, das klappt bei mir prima (opera, mozilla, lynx, w3m)

es muss also an deinem browser liegen, was anderes
kann ich mir nicht vorstellen. ich kann mir aber
auch nicht vorstellen, welcher browser einen Location-header
nicht verstehen sollte, denn so kaputt kann IE auch nicht sein.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
snadra
 2003-08-26 15:55
#1434 #1434
User since
2003-08-11
265 Artikel
BenutzerIn
[Homepage] [default_avatar]
Nö, bei mir hat das bisher auch immer bestens geklappt, was für einen Browser hast Du denn, irgendwelche merkwürdigen Einstellungen?
Ein Timeout kommt aber eigentlich nur zustande wenn die Zielseite nicht erreichbar ist...
http://hamburg.pm.org
jeden 2. mittwoch im monat
--
#!/usr/bin/perl -w
$l=join('',map chr,(116,110,105,114,112))if$^T;
!!$$?@_=qw(Jhfg Aabgure Prey Hnpxre):$l=1;
for(@_){eval reverse($l)."'"._(_(_($_))).' \''}
sub _{$_=~y+a-z+n-za-m+and pop}
Drain
 2003-08-26 17:54
#1435 #1435
User since
2003-08-21
26 Artikel
BenutzerIn
[default_avatar]
[quote=snadra,26.08.2003, 13:55]Nö, bei mir hat das bisher auch immer bestens geklappt, was für einen Browser hast Du denn, irgendwelche merkwürdigen Einstellungen?
Ein Timeout kommt aber eigentlich nur zustande wenn die Zielseite nicht erreichbar ist...[/quote]
Benutze den IE5. Besondere Einstellungen liegen meines Wissens nach nicht vor.
Hier nochmal das Skript:
Code (perl): (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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/perl -w

# Formular.pl sends a formated email with formular input (independend of number of fields)
# 25.08.03 (spr)

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

# Input and formate
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/</</g;
  $Wert =~ s/>/>/g;
  $Formular{$Name} = $Wert;
 }

# Output

# HTML-output
my $test = 0;
if( $test != 0) {
        # for testing
        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>Resultate von <i>Formular.pl</i></h1>\n";
        print "<b>Übertragene Daten:</b><br>";
        while (($Name, $Wert) = each(%Formular)) {
                print "Das Formularfeld $Name besitzt den Wert $Wert.<br>\n";
        }
        print "</body></html>\n";
}
else {
        use CGI qw(redirect);
        print redirect("http://www.perl-community.de");
#       print "Content-type: text/html\n\n";
#       print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
#       print "<html><head><title>$Formular{Formular}</title></head>\n";
#       print "<body><h1>Danke für Ihre Anfrage</h1>\n";
#       print
#       print "</body></html>\n";
}


# Automatic Email sending
my $Sendmail_Prog = 'sendmail.exe';
open (MAIL, "|$Sendmail_Prog -t") || die "Mailprogramm konnte nicht gestartet werden\n";
...usw...


Der Tip mit
Quote
print "Content-type: text/html\n\n";
open HTML,'<html.html';
print <HTML>;
close HTML;

funktioniert bei mir leider auch nicht. Es erscheint nur eine leere Seite mit
[html]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=windows-1252" http-equiv=Content-Type></HEAD>
<BODY></BODY></HTML>
[/html] als Inhalt.
renee
 2003-08-26 18:24
#1436 #1436
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Kannst Du einiges kürzer schreiben:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#! /usr/bin/perl -w

use strict;
use diagnostics;
use warnings;

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

my $cgi = CGI->new();
my %params = $cgi->Vars(); #damit hast Du schon mal das parsen der Eingaben gespart...

my $test = 0; # ??? ich versteh nicht so ganz was das soll, übernehme es aber von dir...
if($test != 0){ # kann bei deinem Skript allerdings nie passieren
  print $cgi->header(-type => 'text/html', -status => '200 OK');
  print "Ausgabe....";
}
else{
  print $cgi->redirect(-url => "http://www.perl-community.de");
}

my $sendmail = '/usr/bin/sendmail';
#...usw. ...


Edit: alles in Code-Tags gepackt...\n\n

<!--EDIT|renee|1061908014-->
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/
Strat
 2003-08-26 18:32
#1437 #1437
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
1. Kennst Du das Modul CPAN:CGI?

Ersetze besser diesen Code
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
# Input and formate
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(&ũ))/eg;
 $Wert =~ s/</</g;
 $Wert =~ s/>/>/g;
 $Formular{$Name} = $Wert;
}

durch den folgenden:
Code (perl): (dl )
1
2
3
use CGI;
my $cgi = CGI->new();
my %Formular = $cgi->Vars();

Dann hast du schon mal viel schwierigen Code, der zudem noch fehleranfaellig ist, vermieden.

2.
Code (perl): (dl )
1
2
3
open HTML,'<html.html';
print <HTML>;
close HTML;

Kann da irgenwie das Oeffnen der Datei html.html fehlschlagen?
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
my $file = "html.html";
unless (open (HTML, $file)) {
  print "Fehler: konnte die Datei '$file' nicht oeffnen: $!
";
}
else {
  print <HTML>;
  close HTML;
}
\n\n

<!--EDIT|Strat|1061908460-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
renee
 2003-08-26 18:35
#1438 #1438
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@strat: wo liest du was von Datei öffnen??
Soweit ich das jetzt verstanden habe, war das nur ein Vorschlag von Ishka, der ja aber durch das Verwenden von "redirect" wegfällt...
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/
Drain
 2003-08-26 18:57
#1439 #1439
User since
2003-08-21
26 Artikel
BenutzerIn
[default_avatar]
[quote=Strat,26.08.2003, 16:32]1. Kennst Du das Modul CPAN:CGI?
...
durch den folgenden:
Code (perl): (dl )
1
2
3
use CGI;
my $cgi = CGI->new();
my %Formular = $cgi->Vars();

Dann hast du schon mal viel schwierigen Code, der zudem noch fehleranfaellig ist, vermieden.

2.
Code (perl): (dl )
1
2
3
open HTML,'<html.html';
print <HTML>;
close HTML;

Kann da irgenwie das Oeffnen der Datei html.html fehlschlagen?
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
my $file = "html.html";
unless (open (HTML, $file)) {
  print "Fehler: konnte die Datei '$file' nicht oeffnen: $!
";
}
else {
  print <HTML>;
  close HTML;
}
[/quote]
Bin gerade dabei mich in Perl einzuarbeiten. Das mit dem CGI-Modul hab ich prinzipiell schon verstanden, aber zum selbst ausprobieren fehlen mir noch etwas die Grundkenntnisse.

Ich habe es trotzdem mal ausprobiert:
Code (perl): (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
29
#!/usr/bin/perl -w

# Formular.pl sends a formated email with formular input (independend of number of fields)
# 25.08.03 (spr)

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

# Input and format
use CGI;
my $cgi = CGI->new();
my %Formular = $cgi->Vars();

# Output

# HTML-output
my $test = 1;
if( $test != 0) {
        # for testing
        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>Resultate von <i>Formular.pl</i></h1>\n";
        print "<b>Übertragene Daten:</b><br>";
        while (($Name, $Wert) = each(%Formular)) {
                print "Das Formularfeld $Name besitzt den Wert $Wert.<br>\n";
        }
        print "</body></html>\n";
}

Das Ergebnis ist folgendes:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
Software error:
Global symbol "$Name" requires explicit package name at c:\inetpub\scripts\formular.pl line 25.
Global symbol "$Wert" requires explicit package name at c:\inetpub\scripts\formular.pl line 25.
Global symbol "$Name" requires explicit package name at c:\inetpub\scripts\formular.pl line 26.
Global symbol "$Wert" requires explicit package name at c:\inetpub\scripts\formular.pl line 26.
Global symbol "$Name" requires explicit package name at c:\inetpub\scripts\formular.pl line 93.
Global symbol "$Wert" requires explicit package name at c:\inetpub\scripts\formular.pl line 93.
Global symbol "$Wert" requires explicit package name at c:\inetpub\scripts\formular.pl line 94.
Global symbol "$Name" requires explicit package name at c:\inetpub\scripts\formular.pl line 94.
Execution of c:\inetpub\scripts\formular.pl aborted due to compilation errors.

For help, please send mail to this site's webmaster, giving this error message and the time and date of the error.


Zu Punkt 2)
War ein Vorschlag von Ishka zum Laden einer Folgeseite (nach Formularabsenden). Leider klappt das momentan weder so, noch mit redirect.

@renee
Quote
my $test = 0; #  ich versteh nicht so ganz was das soll, übernehme es aber von dir...
if($test != 0){ # kann bei deinem Skript allerdings nie passieren

Ist nur für mich zum Testen gedacht, damit ich mal schnell zwischen den beiden Varianten switchen kann.
Drain
 2003-08-26 19:02
#1440 #1440
User since
2003-08-21
26 Artikel
BenutzerIn
[default_avatar]
OK OK, muß vorher
my ($Feld, $Name, $Wert);
setzte, dann klappts. War mal wieder zu schnell mit dem posten.:blush:
<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten



View all threads created 2003-08-25 18:33.