phpbar.de logo

Mailinglisten-Archive

Re: AW: database handle
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: AW: database handle



Hallo Mathias,

> > Hier der ,glaub ich relevante, Code:
> > my $dbhandle;
>
> Hier definierst du $dbhandle als lokale Variable,
Oh, das ist was schief gegangen. 
my $dbhandle passiert schon außerhalb der Sub, sollte also global sein.

dann kommt:
sub Admincheck
{
    my $aktiv = shift;
    return unless $aktiv;

    chomp (my $adminlogin = param('admin'));
    chomp (my $adminpasswd = param('master'));

if ($adminlogin ne "" &&  $adminpasswd ne "")
{
# Verbindung zur Datenbank herstellen
    $dbhandler = dblogin($adminlogin, $adminpasswd) or die ;

    print start_form,
          table({-align=>'center'},
		Tr(
		   td({-align=>'center'}, topage("Neuen User anlegen"))
		   )
		),
	  end_form;
}
else
{
    print h2({-align=>'center', -style =>'Color: red'}, "Ihre Eingabe war 
fehlerhaft!<br>"),
          p({-align=>'center', -style =>'Color: red'}, "Überprüfen Sie Login 
und Passwort und versuchen Sie es bitte nocheinmal!");

    FormAdmin;
}
}

Klickt man auf 'Neuen User anlegen' wird eine Fromularseite erstellt, die 
einfach nur das neue Login und zweimal das neue Passwort erfragt. Klickt man 
dann auf 'Eintragen' wird folgende Sub aufgerufen:

sub Adduser
{
    my $aktiv = shift;
    return unless $aktiv;

    chomp (my $newlg = param('newlogin'));
    my $newlogin = ucfirst($newlg);
    chomp (my $newpasswd1 = param('newpasswd1'));
    chomp (my $newpasswd2 = param('newpasswd2'));

     
if ($newpasswd1 ne "" &&  $newpasswd2 ne "" && $newlogin ne "" && $newpasswd1 
eq $newpasswd2)
{
    my $datetime = Zeit;
    my $encrypt = crypt($newpasswd1, substr($newlogin, 0, 3));

    my $sql  = "INSERT INTO zugang SET ";                 

# und genau bis hier hin kommt er, kein Stück weiter
# das Quoting haut nicht hin

         $sql .= "login="    . $dbhandler->quote($newlogin) . ",";
         $sql .= "encrypt="  . $dbhandler->quote($encrypt)  . ",";
         $sql .= "insertat=" . $dbhandler->quote($datetime)     . ";";

$dbhandler->do($sql) or die;

}
else
{
    print h2({-align=>'center', -style =>'Color: red'}, "Ihre Eingabe war 
fehlerhaft!<br>"),
          p({-align=>'center', -style =>'Color: red'}, "Überprüfen Sie Login 
und Passwort und versuchen Sie es bitte nocheinmal!");

    FormNewuser;
}
}

Und warum geht mir der db-handle hier verloren? Ehrlich gesagt, haben mir 
Deine Erklärungen über die Subs da nicht wirklich geholfen. Ich dachte, das 
die globale Variable erhalten bleibt.

Gruss
Marcel

---
*** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql 


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive