Schrift
[thread]11611[/thread]

URL Weiterleitung bei Kontaktformular mit Perl



<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten
Eastwood
 2008-04-09 15:21
#108136 #108136
User since
2008-04-09
6 Artikel
BenutzerIn
[default_avatar]
Hallo Leute ich hab hier ein Script und möchte nun auf eine URl weiterleiten, wenn der Nutzer auf Senden klickt. Nur leider funktioniert dies bei mir nicht.
Hier mal das Script:

---------------------------------------------------------------------------------
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
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
55
56
57
#!/usr/bin/perl 

print "Content-type: text/html\n\n";
if ($ENV{'REQUEST_METHOD'} eq "GET")
{
$frage=$ENV{'QUERY_STRING'};
}
elsif ($ENV{'REQUEST_METHOD'} eq "POST")
{
read (STDIN,$frage,$ENV{'CONTENT_LENGTH'});
}
@frage=split(/&/,$frage);
foreach $i(0..$#frage)
{
@frage[$i]=~s/\+/ /g;
($key,$value)=split(/=/,$frage[$i],2);
$key=~s/%(..)/pack("c",hex($1))/ge;
$value=~s/%(..)/pack("c",hex($1))/ge;
$key=~s/\n/ /g;
$value=~s/\n/ /g;
$key=~s/\"/ /g;
$value=~s/\"/ /g;
$Frage{$key}=$value;
}


($sec,$min,$hour,$mday,$mon,$year,$wday,$ydat,$isdst)=gmtime();
$jahr=$year;
$monat=$mon+1;
$tag=$mday;
$jahr=$year+1900;
# Definition der Maildatei
$tempfile = 'd:\perl_temp\data\XXX.tmp';
$returnhtml = $query->param('http://www.yahoo.de');

# Oeffnen der Maildatei
open( OUT, ">$tempfile" );

print OUT "From: info\@XXX.de\n";
print OUT "To: info\@XXX.de\n";
print OUT "Subject: .:Anfrage via Kontaktformular:.\n\n";
print OUT "Heute ist der $tag.$monat.$jahr .\n\n";
print OUT "Folgende Daten wurden angegeben.\n";
print OUT "Firma:$Frage{Firma}\n";
print OUT "Name: $Frage{Name}\n";
print OUT "Telnr: $Frage{Tel}\n";
print OUT "Betreff:$Frage{Betreff}\n";
print OUT "Mitteilung:$Frage{Mitteilung}\n";
close (OUT);

# Maildatei $tempfile ins Verzeichnis pickup kopieren
# Sie wird von dort automatisch als Mail versendet.
$maildat='copy d:\perl_temp\data\XXX.tmp c:\inetpub\mailroot\pickup\XXX.tmp';
`$maildat`;

# Maildatei im Verzeichnis d:\perl_temp\data anschliessend loeschen:
unlink( $tempfile );


Wo kann hier der fehler liegen? Ist vielleicht was am Befehl
$returnhtml = $query->param('http://www.yahoo.de/');
falsch?

Gruß und schon mal Danke

Eastwood

----
Modedit Gwendragon:
Bitte das nächste Mal den Code in CODE- oder Perl-Tags setzen. Das ist übersichtlicher, als es so in den Text zu stellen!Hilfe zu Tags
----
renee
 2008-04-09 15:39
#108138 #108138
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Quote
open( OUT, ">$tempfile" );


Hier bitte Fehlerbehandlung machen!

"Funktioniert nicht" ist nicht wirklich aussagekräftig. Bitte Fehlermeldung posten.

Wenn es ein 500er ("Internal Server Error") ist, dann auch mal diesen Wiki:Artikel lesen.
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/
Eastwood
 2008-04-09 15:54
#108141 #108141
User since
2008-04-09
6 Artikel
BenutzerIn
[default_avatar]
@ GwenDragon:
Kannst du mir sagen wie ich use strict; und use warnings; nutzen kann bzw. wo ich diese einsetzten soll. Mit Perl kenn ich mich nicht besonders auch, ich habe dieses Script von meinem Vorgänger übernomen und habe nur diesen Punt mit der URl Weiterleitung eingefügt.

@renee:
Was meinst du mit Fehlerbehandlung machen?
Ein Fehler wird mir nicht angezeigt, lediglich wird mir eine Weiße Seite angezeit nachdem ich das Formular abgeschickt habe.

Gruß Eastwood_911
GwenDragon
 2008-04-09 15:55
#108142 #108142
User since
2005-01-17
14547 Artikel
Admin1
[Homepage]
user image
Ein redirect wird mit
Code: (dl )
print CGI::redirect('http://example.org/);
gemacht.

Ist dies wirklich das Skriopt was im Formular aufgerufen wird?
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

Eastwood
 2008-04-09 15:57
#108143 #108143
User since
2008-04-09
6 Artikel
BenutzerIn
[default_avatar]
Ja, das ist das Script, die Mail kommt auch an, man wird halt nur nicht weitergeleitet
An welche Stelle setzte ich
print CGI::redirect('http://example.org/);
?
GwenDragon
 2008-04-09 15:59
#108144 #108144
User since
2005-01-17
14547 Artikel
Admin1
[Homepage]
user image
Eastwood+2008-04-09 13:54:32--
@ GwenDragon:
Kannst du mir sagen wie ich use strict; und use warnings; nutzen kann bzw. wo ich diese einsetzten soll.

use strict schaltet Perl in den Modus, dass es Fehler anmeckert.
use warnings zeigt dir dann auch andere Probleme an.
ab Zeile 2 muss du es einfügen.

Quote
Was meinst du mit Fehlerbehandlung machen?
Ein Fehler wird mir nicht angezeigt, lediglich wird mir eine Weiße Seite angezeit nachdem ich das Formular abgeschickt habe.

Du musst jede Dateifunktion darauf überprüfen, ob es geklappt hat.

Beispiel:
Code: (dl )
open(DATEI, '<', 'meine.datei') or die ("$! # Oeffnen hat nicht geklappt!");



Wenn du natürlich das von deinem Vorgänger übernommen hast und noch nicht Perl kennst, dann musst du natürlich noch einiges lernen.
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

Eastwood
 2008-04-09 16:06
#108145 #108145
User since
2008-04-09
6 Artikel
BenutzerIn
[default_avatar]
Ich hoffe ja, das bleibt eine einmalige Sache. Wobei es bestimmt richtig gut kommt wenn man sic damit auskennt.

Wo soll ich

print CGI::redirect('http://example.org/);

einfügen ?
renee
 2008-04-09 16:33
#108147 #108147
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Anstatt des
Code: (dl )
$returnhtml = $query->param('http://www.yahoo.de');
(ich nehme mal an, das ist der Punkt, den Du eingefügt hast)...

Und das use CGI; am Anfang nicht vergessen.

Mehr zu use strict gibt es in diesem Wiki:Artikel.
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/
GwenDragon
 2008-04-09 15:28
#108148 #108148
User since
2005-01-17
14547 Artikel
Admin1
[Homepage]
user image
Verwende bitte use strict; und use warnings; dann würdest du schneller erkennen, was nicht geht.
Verwende doch bitte das Modul CGI, um an das Skript übergebene Parameter auszulesen.
Dateien kannst du mit dem Modul File::Copy und dessen Funktion copy() kopieren.
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

Eastwood
 2008-04-09 16:45
#108152 #108152
User since
2008-04-09
6 Artikel
BenutzerIn
[default_avatar]
Also wen ich dich richtig verstanden habe soll ich es so einfügen:

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
55
56
57
58
59
60
#!/usr/bin/perl

use strict;
use CGI;

print "Content-type: text/html\n\n"; 
if ($ENV{'REQUEST_METHOD'} eq "GET")
{
$frage=$ENV{'QUERY_STRING'};
}
elsif ($ENV{'REQUEST_METHOD'} eq "POST")
{
read (STDIN,$frage,$ENV{'CONTENT_LENGTH'});
}
@frage=split(/&/,$frage);
foreach $i(0..$#frage)
{
@frage[$i]=~s/\+/ /g;
($key,$value)=split(/=/,$frage[$i],2);
$key=~s/%(..)/pack("c",hex($1))/ge;
$value=~s/%(..)/pack("c",hex($1))/ge;
$key=~s/\n/ /g;
$value=~s/\n/ /g;
$key=~s/\"/ /g;
$value=~s/\"/ /g;
$Frage{$key}=$value;
}


($sec,$min,$hour,$mday,$mon,$year,$wday,$ydat,$isdst)=gmtime();
$jahr=$year;
$monat=$mon+1;
$tag=$mday;
$jahr=$year+1900;
# Definition der Maildatei
$tempfile = 'd:\perl_temp\data\XXX.tmp';
print CGI::redirect('http://www.yahoo.de/);

# Oeffnen der Maildatei
open( OUT, ">$tempfile" );

print OUT "From: info\@XXX.de\n";
print OUT "To: info\@XXX.de\n";
print OUT "Subject: .:Anfrage via Kontaktformular:.\n\n";
print OUT "Heute ist der $tag.$monat.$jahr .\n\n";
print OUT "Folgende Daten wurden angegeben.\n";
print OUT "Firma:$Frage{Firma}\n";
print OUT "Name: $Frage{Name}\n";
print OUT "Telnr: $Frage{Tel}\n";
print OUT "Betreff:$Frage{Betreff}\n";
print OUT "Mitteilung:$Frage{Mitteilung}\n";
close (OUT);

# Maildatei $tempfile ins Verzeichnis pickup kopieren
# Sie wird von dort automatisch als Mail versendet.
$maildat='copy d:\perl_temp\data\XXX.tmp c:\inetpub\mailroot\pickup\XXX.tmp';
`$maildat`;

# Maildatei im Verzeichnis d:\perl_temp\data anschliessend loeschen:
unlink( $tempfile );



Is das so in ordnung oder hab jetzt scho wieder was falsch gemacht?
<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten



View all threads created 2008-04-09 15:21.