Was mache ich falsch? Ich versuche zu bestätigen, dass ein Benutzer nicht existiert. Ich kann nicht herausfinden, wie man @ email1 oder @ 0 sendet. Ich habe es auf verschiedene Arten versucht. Ich kann es zur Arbeit bekommen, wenn ich die WHERE CLAUSE fest codiere. Zum Beispiel ist eine E-Mail, die ich kenne, [email protected] Dies funktioniert: "var userCheck = "SELECT * FROM USR WHERE EMAIL = '[email protected]'".Count()
Razor und JS Problem: Überprüfen, ob der Benutzer existiert
Dies tun nicht Arbeit: Ich habe versucht var userCheck = "SELECT * FROM USR WHERE EMAIL = " +email1.Count();
und "var userCheck = "SELECT * FROM USR WHERE EMAIL = @0".Count()
Muss ich email1
als Parameter zu übergeben ???
ASP.NET- Razor:
@{
Page.Title = "Register";
var minPass = 2;
var maxPass = 100;
var email1 = "";
var pass1 = "";
var db = Database.Open("Resume");
var userCheck = "SELECT * FROM USR WHERE EMAIL = " +email1;
var userInsert = "INSERT INTO USR (EMAIL, PSWD) VALUES (@0, @1)";
if(IsPost) {
email1 = Request.Form["email1"];
pass1 = Request.Form["pass1"];
db.Execute(userInsert, email1, pass1);
Response.Redirect("~/Default");
}
}
Javascript:
var error = "";
var email1 = document.getElementById('em100').value;
var email2 = document.getElementById('em101').value;
var pass1 = document.getElementById('pw100').value;
var pass2 = document.getElementById('pw101').value;
if (@userCheck > 0) error += "</br>Email already exists."; // ?????????????????
if (!document.getElementById('em100').checkValidity()) error += "</br>Emails are not valid.";
if (email1 !== email2) error += "</br>Emails do not match.";
if (pass1 !== pass2) error += "</br>Passwords do not match.";
if (pass1.length < minPass || pass1.length > maxPass) error += "</br>Password must be minPass - maxPass characters.";
'email1' ist eine leere Zeichenfolge enthalten, wenn Sie Ihre Abfrage aufzubauen. Sollte dir ziemlich offensichtlich sein. Wie auch immer, bilden Sie keine Anfragen, indem Sie Strings miteinander verketten. Das ist ein Rezept für einen SQL-Injection-Angriff. Sie sollten stattdessen parametrisierte Abfragen verwenden. – mason