Thread Optimieren
(21 answers)
Opened by kabel at 2003-08-20 12:05
[quote=stb2050,22.08.2003, 12:57]Wenn hier ein Benutzer einen "$user" angibt, von dem es in der Tabelle hpm_user keine Zeile gibt, also der nicht existiert, dann bekomme ich folgende Fehlermeldung:[/quote]
Schreibe mal das Script folgendermaszen um: Am anfang vom Script eine Datenbankverbindung erstellen: Code (perl): (dl
)
1 2 3 4 5 6 use DBI; my $dbh = DBI->connect($dsn); # hier eintragen, was du fuer connect-parameter hast unless ($dbh) { # fehlerabfrage print "Fehler: konnte nicht zur Datenbank verbinden: $DBI::err_str\n"; exit 0; } und dein Codebeispiel ersetzt du durch folgendes: 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 # was passiert, wenn $user folgendermaszen aussieht: # a' OR id > 1 OR username = 'b # dann koennte der benutzer an mehr daten kommen als er eigentlich # sehen darf. deshalb: $user = $dbh->quote($user); my $anfrage = qq~SELECT passwort, userid FROM htm_user WHERE username = $user~; my $sth = &FireSql($dbh, $anfrage); if (my $ergebnis = $sth->fetchrow_hashref()) { ($pass2, $userid} = @{ $ergebnis }{'password', 'userid'}; } else { # fehlermeldung } $sth->finish(); # aufraeumen # ------------------------------------------ sub FireSql { my ($dbh, $statement) = @_; my $sth = $dbh->prepare($statement); unless ($sth) { print "Fehler im prepare: '$statement': ", $dbh->err_str, "\n"; exit 0; } unless ($sth->execute()) { print "Fehler im prepare: '$statement': ", $dbh->err_str, "\n"; exit 0; } return ($sth); } # FireSql Habe den Code nicht getestet, also ist wahrscheinlich ein Vertipper drinnen...\n\n <!--EDIT|Strat|1061551687--> perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/ |