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

Problem: Aus @ wird%40.



<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten
Gast Gast
 2008-05-19 11:20
#109896 #109896
Hallo,

ich habe folgendes Problem:
Ein Perlskript verarbeitet die Eingaben aus einem Formularfeld. Bei der Emailaddresse wird aus @ leider %40. Dies hat zur Folge daß an die eingegebene Addresse keine Email versendet wird und das Log die Fehlermeldung can't resolve emailaddress beinhaltet.
Kann jemand sagen woran das liegen könnte?

MfG
renee
 2008-05-19 11:36
#109897 #109897
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Zeig doch mal etwas Code...
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/
moritz
 2008-05-19 11:40
#109898 #109898
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Gast+2008-05-19 09:20:41--
Kann jemand sagen woran das liegen könnte?


Meine Vermutung: Du benutzt nicht CPAN:CGI.pm, sondern einen handgebauten parser für URL- und POST-Parameter, der mit URL-Escapes nicht zurecht kommt.

Abhilfe wäre es, CGI.pm zu benutzen.
Gast Gast
 2008-05-19 11:51
#109899 #109899
Etwas Code? Bitte...

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
#!C:/Program Files/Perl/bin/perl

use Net::SMTP;
use MIME::Lite;

my $Label;
my $TmpAdressTo;
my $TmpEmailAddressTo;

print FILE "\n********************** NEW RECORD ************************\n";

foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);

# Un-Webify plus signs and %-encoding
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;

if ($allow_html != 1) {
$value =~ s/<([^>]|\n)*>//g;
}

$FORM{$name} = $value;
if ($name ne 'Submit')
{
print FILE $name;
print FILE "=";
print FILE $value;
print FILE "\n";
print HTMLFILE "<TR>\n";
print HTMLFILE "<TD>";
print HTMLFILE $name;
print HTMLFILE "</TD>\n";
print HTMLFILE "<TD>";
print HTMLFILE $value;
print HTMLFILE "</TD>\n";
print HTMLFILE "</TR>\n";
}
}

print HTMLFILE "</TABLE>";
print HTMLFILE "</BODY>";
print HTMLFILE "</HTML>";

close (FILE);
close (HTMLFILE);

my $emaillinks;
my $emailrechts;
($emaillinks, $emailrechts) = split(/@/, $email);
$cc_address = $emaillinks."\@".$emailrechts;

Den ganzen Code kann ich leider wegen der 2000er Beschränkung nicht in einem Post unterbringen.
Ich muß noch anmerken daß der Code nicht von mir stammt. Ich pflege lediglich die Angelegenheit.
renee
 2008-05-19 11:58
#109900 #109900
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wie moritz schon sagte, solltest Du CGI.pm verwendan, also anstatt
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
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);

# Un-Webify plus signs and %-encoding
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;

if ($allow_html != 1) {
$value =~ s/<([^>]|\n)*>//g;
}

$FORM{$name} = $value;
if ($name ne 'Submit')
{
print FILE $name;
print FILE "=";
print FILE $value;
print FILE "\n";
print HTMLFILE "<TR>\n";
print HTMLFILE "<TD>";
print HTMLFILE $name;
print HTMLFILE "</TD>\n";
print HTMLFILE "<TD>";
print HTMLFILE $value;
print HTMLFILE "</TD>\n";
print HTMLFILE "</TR>\n";
}
}


lieber das hier schreiben:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use CGI;

my %FORM = CGI::Vars();

if( $allow_html != 1 ){
    for my $key ( keys %FORM ){
        $FORM{$key} =~ s/<([^>]|\n)*>//g;
    }
}

while( my ($key,$value) = each %FORM ){
    next if( $key eq 'Submit' );
    print FILE $key, "=", $value, "\n";
    print HTMLFILE  "<tr>\n<td>$key</td>\n<td>$value</td>\n<tr>\n";
}


Edit: noch das "allow_html" hinzugefügt
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/
Gast Gast
 2008-05-19 12:07
#109901 #109901
Danke renee, ich probiers mal aus und gebe Feedback.
Gast Gast
 2008-05-21 13:43
#110043 #110043
Hallo,

ich habe den Code ausprobiert und muß sagen, daß in dem File kein Text drinsteht.
Was mache ich falsch?

MfG
RalphFFM
 2008-05-21 13:57
#110044 #110044
User since
2006-11-16
258 Artikel
BenutzerIn
[Homepage] [default_avatar]
Vielleicht open vergessen?
renee
 2008-05-21 13:57
#110045 #110045
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Gast+2008-05-21 11:43:56--
ich habe den Code ausprobiert und muß sagen, daß in dem File kein Text drinsteht.
Was mache ich falsch?


Das lässt sich schwer sagen, so ganz ohne den Code zu sehen.

Mein Code funktioniert nämlich soweit:

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
58
rbaecker@www-devel-rbaecker ~ $ cd community/
rbaecker@www-devel-rbaecker ~/community $ ll
total 0
rbaecker@www-devel-rbaecker ~/community $ vi cgi.pl
rbaecker@www-devel-rbaecker ~/community $ cat cgi.pl
#!/usr/bin/perl

use strict;
use warnings;
use CGI;

open FILE, '>', 'test.out' or die $!;
open HTMLFILE, '>', 'test2.out' or die $!;

my %FORM = CGI::Vars();

my $allow_html = 0;

if( $allow_html != 1 ){
for my $key ( keys %FORM ){
$FORM{$key} =~ s/<([^>]|\n)*>//g;
}
}

while( my ($key,$value) = each %FORM ){
next if $key eq 'Submit';
print FILE $key, "=", $value,"\n";
print HTMLFILE "<tr>\n<td>$key</td>\n<td>$value</td>\n</tr>\n";
}

rbaecker@www-devel-rbaecker ~/community $ perl cgi.pl test=1 hallo=2 mein_test=3 perl=community
rbaecker@www-devel-rbaecker ~/community $ ll
total 12
-rw-rw-r-- 1 rbaecker rbaecker 468 2008-05-21 11:55 cgi.pl
-rw-rw-r-- 1 rbaecker rbaecker 158 2008-05-21 11:56 test2.out
-rw-rw-r-- 1 rbaecker rbaecker 42 2008-05-21 11:56 test.out
rbaecker@www-devel-rbaecker ~/community $ cat test.out
perl=community
test=1
mein_test=3
hallo=2
rbaecker@www-devel-rbaecker ~/community $ cat test2.out
<tr>
<td>perl</td>
<td>community</td>
</tr>
<tr>
<td>test</td>
<td>1</td>
</tr>
<tr>
<td>mein_test</td>
<td>3</td>
</tr>
<tr>
<td>hallo</td>
<td>2</td>
</tr>
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/
renee
 2008-05-21 13:59
#110046 #110046
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Und dass das dann mit dem @ richtig klappt, kann ich auch noch zeigen:

Code: (dl )
1
2
3
4
5
6
7
rbaecker@www-devel-rbaecker ~/community $ perl cgi.pl test=test%40example.de
rbaecker@www-devel-rbaecker ~/community $ cat test2.out
<tr>
<td>test</td>
<td>test@example.de</td>
</tr>
rbaecker@www-devel-rbaecker ~/community $
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/
<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten



View all threads created 2008-05-19 11:20.