Mailinglisten-Archive |
Hallo Wolfgang,
Wolfgang Glemnitz schrieb am Donnerstag, 27. Februar 2003 um 15:17:
> Mit register.php kann ich den Nutzer anlegen, ist er
> angelegt klappt auch der Login.
> Ist er nicht angelegt kommt falsches Paßwort:
> die Select-Anweisung ist nicht falsch, demzufolge
> kommt kein Fehler, also geht es nicht zur
> register.php.
> Mit getOne als Ersatz von query habe ich es probiert,
> da kommt aber der Fehler: Call to a member function on
> a non-object in ...
Hört sich so an, als ob dein $db_object keine korrektes Handle
zurückgibt.
Überprüfst du bei deinem DB::connect(...) auf Fehler?
if(isError($db_object)) die($db_object->getMessage());
> [...]
> $check = $db_object->query("SELECT uname, pwd FROM
> authuser.nutzer WHERE (uname =
> '".$_POST['username']."' AND pwd =
> '".$_POST['password']."')");
> if(DB::isError($check)) {
> die('Der Nutzer: '.$_POST['username'].' mit dem
> Paßwort: '.$_POST['password'].' existiert nicht in
> unserer Datenbank '.$db_object.' .<a
href="register.php">> Zur Registrierung');
> }
Stopp!
Siehe andere Mail von mir:
DB::isError liefert keinen Fehler bei einem leeren Ergebnis!
Wenn du überprüfen willst, ob
a) der User existiert
b) Password und User übereinstimmen
dann darfst du beides nicht in einer SQL-Anweisung mit AND
verknüpfen, da du so den Fall a nicht rauskriegst.
(siehe Mail von Tobias)
$sql = "SELECT pwd FROM authuser.nutzer WHERE uname =
'".$_POST['username']."'";
$check = $db_object->query($sql);
if(DB::isError($check)) die ($check->getMessage());
if ($check->numrows()==0) {
... user existiert nicht...
}
$row = $check->fetchRow(DB_FETCHMODE_ASSOC);
if($row['pwd']!=$_POST['password']) {
... Password ist falsch...
}
HTH Frank
--
Website : http://www.raschesweb.de
e-mail : info at raschesweb.de
GPG public-key: http://www.raschesweb.de/rasche.asc
=================================================== ;-)
php::bar PHP Wiki - Listenarchive