Re: Login-Daten eines Scriptes vergleichen
Hallo Marian, Marian Seitner [EMAIL PROTECTED] schrieb im Newsbeitrag news:[EMAIL PROTECTED] Das Prinzip hab ich kapiert, aber wie komm ich an die besagte 0 oder 1 ran? Ich habs jetzt geschafft mit $return = mysql_fetch_row($res); an den Wert ranzukommen, er liegt dann in $return[0]. Das ganze mach ich ohne Schleife, da ja rein theoretisch nur einen Datensatz zurückgeliefert werden kann. Ist es auch möglich, das Ergebnis mit mysql_fetch_array() abzufragen? Greets Marian vom Prinzip schon, dann mit SELECT COUNT(*) AS Anzahl FROM... $data = mysql_fetch_array($result)) { $anzahl=$data[Anzahl]; doch wozu? Meines Wissens nach müsste der Index schneller sein und Du benötigst doch eh nur die Auskunft, ob ein Datensatz gefunden wurde oder nicht. Wenn Du die Tatsache mit einkalkulierst, eventuell doppelte Usereinträge vorzufinden, dann solltest Du Deine Tabelle(n) noch einmal überarbeiten. Theoretisch macht es aber nur Sinn, Userdaten so zu speichern, dass Duplikate ausscheiden. Gruß Rene
Re: Login-Daten eines Scriptes vergleichen
vom Prinzip schon, dann mit SELECT COUNT(*) AS Anzahl FROM... $data = mysql_fetch_array($result)) { $anzahl=$data[Anzahl]; ... doch wozu? Meines Wissens nach müsste der Index schneller sein und Du benötigst doch eh nur die Auskunft, ob ein Datensatz gefunden wurde oder nicht. Wenn Du die Tatsache mit einkalkulierst, eventuell doppelte Usereinträge vorzufinden, dann solltest Du Deine Tabelle(n) noch einmal überarbeiten. Theoretisch macht es aber nur Sinn, Userdaten so zu speichern, dass Duplikate ausscheiden. Hi Rene! Hast schon recht, doppelte User hab ich keine, mir gings lediglich um die Syntax, ich bin noch Neuling in Sachen MySQL. Ist es möglich, daß wenn ein Datensatz gefunden wurde ich auch die ID dieses Satzes bekomme? Nachdem ich nämlich weiß, ob der User der ist der er vorgibt zu sein, frage ich die Tabelle noch einmal ab um an die Rechte des Users heranzukommen, die ebenfalls in der selben Tabelle abgespeichert sind. Hiermit prüfe ich, ob die Daten korrekt sind $query = SELECT count(*) FROM $dbt WHERE name='$name' AND pass='$pass'; $res = mysql_query($query, $db); $ret = mysql_fetch_row($res); Ergebnis ist dann in $ret[0]. Dann mach ich die gleiche Abfrage nochmal, nur diesmal mit allen Angaben $query = SELECT * FROM $dbt WHERE name='$name' AND pass='$pass'; $res = mysql_query($query, $db); $ret = mysql_fetch_array($res); Wie gesagt, ich würde gerne wissen ob die ID des Datensatzes schon bei der ersten Abfrage zurückgeliefert werden kann. Dann würde eine weitere Suche in der kompletten Table entfallen. Oder kann man die zweite Abfrage evtl. einfacher gestalten? Gruß Marian
Re: Login-Daten eines Scriptes vergleichen
In der Auswertung prüfst Du dann if(!$result) -hier hast Du also keinen Datensatz gefunden - entsprechende Fehlermeldung an den Benutzer ausgeben oder eine entsprechende Routine aufrufen. andernfalls hast Du den Benutzer gefunden, jetzt kannst Du (wenn Deine Berechtigungsspalte 'rechte' heißt) dann mit $query = SELECT id, rechte FROM $dbt WHERE name='$name' AND pass='$pass'; $res = mysql_query($query, $db); $ret = mysql_fetch_row($res); $userid = $ret[0]; $recht = $ret[1]; Hmm... irgendwas hab ich wohl falsch gemacht! Hier mein Code: snip $query = SELECT allow_gb,allow_news,allow_files FROM $dbt WHERE name='$name' AND pass='$pass'; $res = mysql_query($query, $db); $ret = mysql_fetch_array($res); if (!$res) { session_register(user); $user = array(auth = true, name = $name, allow_gb = $ret[allow_gb], allow_news = $ret[allow_news], allow_files = $ret[allow_files]); header(Location: http://.getenv(SERVER_NAME)./site/scripts/login/admin.php); exit; } else { $err=Sie haben entweder einen ungültigen User-Name verwendet oder das Passwort ist falsch; session_destroy(); } /snip Wie du siehst hab ich die Rechte jeweils in einem Feld stehen, allow_xxx, und frage auch nur noch diese drei Felder ab. Mit (!$res) will ich, wie von dir beschrieben, überprüfen ob der User existiert. Dummerweise wird immer die Fehlermeldung ausgegeben($err), egal ob die Daten korrekt oder inkorrekt sind. Was mach ich falsch? Den von Dir beschriebenen Ansatz könnte man auch wählen, sollte man aber nicht, da Du ja alle Infos schon mit EINER Abfrage bekommen kannst. Es funktioniert immerhin... ;-)) Gruß und Vielen Dank, hast mir schon sehr sehr viel weitergeholfen! Marian
Re: Login-Daten eines Scriptes vergleichen
Hallo, Marian Seitner [EMAIL PROTECTED] schrieb im Newsbeitrag news:[EMAIL PROTECTED] vom Prinzip schon, dann mit SELECT COUNT(*) AS Anzahl FROM... $data = mysql_fetch_array($result)) { $anzahl=$data[Anzahl]; ... doch wozu? Meines Wissens nach müsste der Index schneller sein und Du benötigst doch eh nur die Auskunft, ob ein Datensatz gefunden wurde oder nicht. Wenn Du die Tatsache mit einkalkulierst, eventuell doppelte Usereinträge vorzufinden, dann solltest Du Deine Tabelle(n) noch einmal überarbeiten. Theoretisch macht es aber nur Sinn, Userdaten so zu speichern, dass Duplikate ausscheiden. Hi Rene! Hast schon recht, doppelte User hab ich keine, mir gings lediglich um die Syntax, ich bin noch Neuling in Sachen MySQL. Ist es möglich, daß wenn ein Datensatz gefunden wurde ich auch die ID dieses Satzes bekomme? Nachdem ich nämlich weiß, ob der User der ist der er vorgibt zu sein, frage ich die Tabelle noch einmal ab um an die Rechte des Users heranzukommen, die ebenfalls in der selben Tabelle abgespeichert sind. Hiermit prüfe ich, ob die Daten korrekt sind $query = SELECT count(*) FROM $dbt WHERE name='$name' AND pass='$pass'; $res = mysql_query($query, $db); $ret = mysql_fetch_row($res); Ergebnis ist dann in $ret[0]. Dann mach ich die gleiche Abfrage nochmal, nur diesmal mit allen Angaben $query = SELECT * FROM $dbt WHERE name='$name' AND pass='$pass'; $res = mysql_query($query, $db); $ret = mysql_fetch_array($res); Wie gesagt, ich würde gerne wissen ob die ID des Datensatzes schon bei der ersten Abfrage zurückgeliefert werden kann. Dann würde eine weitere Suche in der kompletten Table entfallen. Oder kann man die zweite Abfrage evtl. einfacher gestalten? Gruß Marian Dann ist die bisherige Vorgehensweise wieder nicht mehr empfehlenswert. Du musst Dir immer eines von vornherein klar machen: Welche Infos möchte ich von der DB haben - hier jetzt also: a) ist der User vorhanden b) stimmen die von ihm gemachten Angaben c) welche Rechte sind dem User zugewiesen. Unter diesen Voraussetzungen mit COUNT zu arbeiten ist einfach gesagt Unsinn. Du brauchst im Prinzip die Berechtigung des Users, also fragst Du diese gleich ab. In der Auswertung prüfst Du dann if(!$result) -hier hast Du also keinen Datensatz gefunden - entsprechende Fehlermeldung an den Benutzer ausgeben oder eine entsprechende Routine aufrufen. andernfalls hast Du den Benutzer gefunden, jetzt kannst Du (wenn Deine Berechtigungsspalte 'rechte' heißt) dann mit $query = SELECT id, rechte FROM $dbt WHERE name='$name' AND pass='$pass'; $res = mysql_query($query, $db); $ret = mysql_fetch_row($res); $userid = $ret[0]; $recht = $ret[1]; die Berechtigung und ID auslesen und entsprechend weiterverarbeiten. Den von Dir beschriebenen Ansatz könnte man auch wählen, sollte man aber nicht, da Du ja alle Infos schon mit EINER Abfrage bekommen kannst. Gruß Rene