Thread Fehlerhafte Eingabe erzeugt 500 Error anstatt Scriptfehlermeldung (38 answers)
Opened by Auctioneer at 2012-12-01 02:58

FIFO
 2012-12-01 11:02
#163811 #163811
User since
2005-06-01
469 Artikel
BenutzerIn

user image
Hi,

es ist schwierig, Deinen Code zu lesen. Das liegt 1. an fehlender Strukturierung/Einrückung und 2. an ungünstig verwendeten Konstruktionen (insbesondere mit unless).
Man kann auch nicht erkennen, womit denn $config{'header'} gefüllt wird. Die Fehlermeldung legt ja nahe, dass irgendwie HTML body content darin landet.

Du verwendest foreach falsch: Wenn Du foreach(%hash) { ... } schreibst, macht Perl aus dem Hash eine flache Liste (key1, value1, key2, ...) und iteriert über diese Liste. Wenn Du über die Hash-Keys iterieren willst: foreach(keys %hash) { ... }.

Funktionen besser ohne & aufrufen, es sei denn, Du weißt genau, was Du willst.

Viele Konstruktionen sind unübersichtlich oder irreführend.
Quote
local %form = &get_form_data unless %form;


Quote
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
sub verify_login {
if ($loginalias ne '') {
my($password, $undef) = &read_reg_file($loginalias);
&oops('You must enter a valid username and password') unless ($loginpassword ne '');
# ...
return 1;
}else{
&login_form;

return '';
}
}


unless $foo ne 'bar'?? Lesbarer so (globales $loginalias ist auch Käse, besser als Argument mitgeben):
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
sub verify_login {
    my $loginalias = shift;
    if ($loginalias eq '') {
        login_form;
        return '';
    }
    my($password, $undef) = read_reg_file($loginalias);
    oops('You must enter a valid username and password') if $loginpassword eq '';
    # ...
    return 1;
}


Wenn Du Code postest - insbesondere wenn es Deinem kommerziellen Interesse dient - solltest Du ihn so präsentieren, dass er angenehm zu lesen ist, sonst macht das Helfen keine Freude.

Editiert von FIFO: eq korrigiert
Last edited: 2012-12-01 11:14:39 +0100 (CET)
Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"

View full thread Fehlerhafte Eingabe erzeugt 500 Error anstatt Scriptfehlermeldung