2016-08-02 32 views
1

Versuchen, empfangene Daten aus dem Formular mit einem in der db. Also, wenn ich Formularvariablen und die Tabelle Dump kann ich sehen, gibt es ein Spiel, aber Coldfusion gibt mir diese ...Coldfusion SQL-Abfrage, um Benutzer zu überprüfen

Spalte ‚Kirill‘ ist entweder nicht in einer Tabelle in der FROM-Liste oder erscheint in einem Join Spezifikation und ist außerhalb der Bereich der Join-Spezifikation oder erscheint in einer HAVING-Klausel und ist nicht in der GROUP BY-Liste. Wenn dies eine Anweisung CREATE oder ALTER TABLE ist, dann ist 'Kirill' keine Spalte in der Zieltabelle.

Die Abfrage:

SELECT FIRST_NAME, PASSWORD 
from APP.USERS_TASK 
where FIRST_NAME = "#form.username#" 
    and PASSWORD = "#form.password#" 

Auch das Gleiche funktioniert mit id ganz gut, die über URL weitergegeben. Mit der anderen Tabelle aber.

+2

Vielleicht brauchen Sie einfache Anführungszeichen anstelle von Anführungszeichen, z. '... FIRST_NAME = '# form.username #' ...? (SQL-Injektion möglich?) – jarlh

+2

Nichts mit der Frage zu tun, aber [Passwörter sollten gehashed] (http://stackoverflow.com/questions/1054022/best-way-to-store-password-in-database/1054033# 1054033). – Leigh

+0

Es ist eigentlich illegal, Passwörter im Klartext zu speichern, je nachdem, was Sie tun. Leigh hat Recht. – TRose

Antwort

6

SQL erfordert Zeichenfolgen in einfachen Anführungszeichen, nicht doppelt.

SELECT FIRST_NAME, PASSWORD 
FROM APP.USERS_TASK 
WHERE FIRST_NAME = '#form.username#' 
AND PASSWORD = '#form.password#' 

Aber wirklich, sollten Sie cfqueryparam werden mit Ihrem Benutzereingaben zu sanieren und SQL-Injection zu verhindern. Dies würde auch die Dateneingabe und die erforderlichen Kostenvoranschläge für Sie übernehmen.

SELECT FIRST_NAME, PASSWORD 
FROM APP.USERS_TASK 
WHERE FIRST_NAME = <cfqueryparam value="#form.username#" cfsqltype="cf_sql_varchar"> 
AND PASSWORD = <cfqueryparam value="#form.password#" cfsqltype="cf_sql_varchar"> 
+0

Oh, wusste nicht, Zitate sind wichtig. Wenn Sie cfparam verwenden, müssen Sie Typinformationen angeben? –

+2

Das Attribut "cfsqltype" ist nicht erforderlich, wird jedoch empfohlen, da es Ihre Datenbank schützt und sicherstellt, dass Werte für Sie in Zeichenfolgen oder Zahlen konvertiert werden. –

+0

Es ist auch ideal für die Konvertierung von Daten/Zeiten wie nötig. Das ist immer ein Schmerz, um richtig zu werden. –