Thread Browser-Magie mit Formular (9 answers)
Opened by Captain Future at 2005-02-08 18:09

coax
 2005-02-09 04:31
#28302 #28302
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
002: # Pfad zu Prel

Was ist Prel ? hihi



Code: (dl )
021: my $os = "UNIX";

Du kannst die Spezialvariable $^O nutzen um herauszufinden
unter welchen Betriebssystem das Skript laeuft.

Code: (dl )
my $osname = $^O;




Code: (dl )
027: my @email_list = ("info\@chedapinta.com", "webmaster\@chedapinta.com");


Wenn du den qw-Operator nutzt kann man verhindern, dass ein
fehlender Backslash zu ungeahnten Fehlern fuehrt.

Code: (dl )
1
2
3
4
my @email_list = qw(
   info@chedapinta.com
   webmaster@chedapinta.com
);





Was machst du hier ?
Code: (dl )
035: $FORM{'recipient'} = my $recipient;



Code: (dl )
1
2
043: $text =~ s/\cM//g;
044: $text =~ s/\n//g;

Ich verstehe zwar nicht warum du alle Zeilenumbrueche entfernst
aber, hier etwas schneller:
Code: (dl )
$text =~ tr/\r\n//d




Code: (dl )
061: (my $sec, my $min, my $hour, my $mday, my $mon, my $year, my $wday, my $yday, my $isdst) = localtime(time);


kurz:
Code: (dl )
my($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);




Code: (dl )
1
2
3
4
5
6
7
067: my $countfile = 'kontaktcount.txt';
068: my $count = `cat $countfile`;
069: chop($count);
070: $count = $count + 1;
071: open (INF, ">$countfile") || die "Kann Countfile nicht öffnen: $!";
072: print INF "$count\n";
073: close (INF);


So viel zu Punkt 2
Code: (dl )
1
2
3
4
5
6
7
8
9
my $countfile = 'kontaktcount.txt';
my $count;
open(COUNT, '<', $countfile) or die $!;
my $count = <COUNT>;
close(COUNT);
chomp($count);
open(COUNT, '>', $countfile) or die $!;
print ++$count;
close(COUNT);

und Punkt 3 (Sperrung der Datei):
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
my $countfile = 'kontaktcount.txt';
my $count;
open(COUNT, '<', $countfile) or die $!;
flock(COUNT, 2) or die $!;
my $count = <COUNT> || 0;
flock(COUNT, 8) or die $!;
close(COUNT);
chomp($count);
open(COUNT, '>', $countfile) or die $!;
flock(COUNT, 2) or die $!;
print ++$count;
flock(COUNT, 8) or die $!;
close(COUNT);

oder aber
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
use Fcntl;

my $countfile = 'kontaktcount.txt';
sysopen(COUNT, $countfile, O_RDWR|O_CREATE) or die $!;
flock(COUNT, 2) or die $!;
my $count = <COUNT> || 0;
chomp($count);
seek(COUNT, 0, 0) or die $!;
truncate(COUNT, 0, 0) or die $!;
print COUNT ++$count;
close(COUNT);


Hier pruefst du nur ob eine Ziffer im Namen enthalten ist.
Code: (dl )
089: &falsch('Fehler 04: Bitte einen gueltigen Namen eingeben !<br>') unless ($name =~ m/\D/);


besser waere natuerlich du schlieszt alle Zeichen bis auf
die die du haben willst aus.
Code: (dl )
&falsch('...') unless $name =~ /^[-A-Za-z\s]+$/; # Bindestrich, Buchstaben, Leerzeichen


Code: (dl )
1
2
3
4
5
6
7
8
9
05: open (MAIL, "|$mailprog -oi -t") || die "Kann Sendmail nicht starten: $!";
106: print MAIL "From: $email\n";
107: print MAIL "To: $email_list[0]\n";
108: print MAIL "Subject: $subject\n\n";
109: print MAIL "===========================================\n";
110: print MAIL "====== KUNDENANFRAGE via WebFormular ======\n";
[...]
127: print MAIL "<<< Dies ist ein Service des Webmasters: Nils Meiser >>>";
128: close (MAIL);

mit einen HERE-Dokument sparst du dir ein paar prints und die explizite
Angabe von Newlines:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
print MAIL <<"EOMAIL";
From: $email
To: $email_list[0]
Subject: $subject

===========================================
====== KUNDENANFRAGE via WebFormular ======
[...]
<<< Dies ist ein Service des Webmasters: Nils Meiser >>>
EOMAIL


Grusz Christian :).
,,Das perlt aber heute wieder...'' -- Dittsche

View full thread Browser-Magie mit Formular