2017-08-11 10 views
-2

コードは機能していますが、COUNT(*)は常に-1を返します。ユーザーがHTML/JS/ASPコードに存在するかどうかを確認しようとしています。私は値を正しく変換しているとは思わないが、私は確信していない。私は、に焦点を当てていたコードは次のとおりです。HTML/JS/ASP:ユーザーが存在するかどうかを確認する - SELECT COUNT(*)

@{ 
var userCheck = "SELECT COUNT(*) FROM USR WHERE EMAIL = @email1"; 
var rowCount = db.Execute(userCheck); 
int temp = Convert.ToInt32(rowCount.ToString()); 
} 

私のJavascriptのコードは次のとおりです。var error = "";error += @temp;。私はなぜそれが常に否定的なものを返すのか理解していない。手伝ってください!ここで:-)

@ { }

@{ 
    Page.Title = "Register"; 
    var minPass = 2; 
    var maxPass = 100; 
    var email1 = ""; 
    var pass1 = ""; 
    var db = Database.Open("Resume"); 
    var userCheck = "SELECT COUNT(*) FROM USR WHERE EMAIL = @email1"; 
    var userInsert = "INSERT INTO USR (EMAIL, PSWD) VALUES (@0, @1)"; 
    var rowCount = db.Execute(userCheck); 
    int temp = Convert.ToInt32(rowCount.ToString()); 


    if(IsPost) { 
     email1 = Request.Form["email1"]; 
     pass1 = Request.Form["pass1"]; 
     db.Execute(userInsert, email1, pass1); 
     Response.Redirect("~/Default"); 
    } 
} 
+0

に必ず私は私が私の完全なコードに – Khalil

+0

@パラメータを渡していないと思います。 –

+2

何JavaScriptが問題ではありませんを更新してみましょうあなたはDapperのかado.netを使用していて、email1 – Amy

答えて

0

私はそのような愚かな質問をしたことをお詫びしたい - 私のアプローチは完全に間違っていた。時間を費やした後、私は解決策を策定しました:Websecurity。

以下は自分のための解決策です。 WebSecurity.InitializeDatabaseConnection("ResumeLink", "UserProfile", "UserId", "Email", true);

@{ 
    var username = ""; 
    var password = ""; 
    var confirmPassword = ""; 
    var regMsg = ""; 
    var minPass = 2; 
    var maxPass = 5; 


    if (!IsPost) { 
    if (WebSecurity.IsAuthenticated) { 
     regMsg = String.Format("You are already logged in. (User name: {0})", WebSecurity.CurrentUserName); 
     } 
    } 

    if (IsPost){ 
    WebSecurity.Logout();  
    username = Request["username"]; 
    password = Request["password"]; 
    confirmPassword = Request["confirmPassword"]; 

    try { 
     var mail = new System.Net.Mail.MailAddress(username); 
    } catch { 
     regMsg += "Invalid email format."; 
    } 

    //Validation.Add("username", Validator.Regex(@"^[A-Za-z0-9._%+-][email protected]@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$", regMsg += "Invalid email format.")); 
    if (password != confirmPassword) {regMsg += "</br>Passwords don't match.";} 
    if (WebSecurity.UserExists(username)) {regMsg += String.Format("</br>User '{0}' already exists.", username);} 
    if (password.Length < minPass || password.Length > maxPass) {regMsg += "</br>Password doesn't meet length requirement.";} 
    if (regMsg == "") { 
     WebSecurity.CreateUserAndAccount(username,password,null,false); 
     regMsg = String.Format("{0} created.", username); 
     Response.Write("Registration Successful!"); 
     Response.Redirect("~/Default.cshtml"); 
     } 
    } 
} 

<style>header {visibility: hidden;}</style> 
<body> 
    <div> 
     <h1>Register</h1> 
     <form method="post"> 
      <p> 
       @if(regMsg != ""){ 
        <span class="errorMessage">@Html.Raw(regMsg)</span> 
       } 
      </p> 

      <p> 
       <label for="username">Email Address:</label><br/> 
       <input type="text" name="username" id="username" value='@Request["username"]' /> 
      </p> 
      <p> 
       <label for="password">Password @[email protected] Characters:</label><br/> 
       <input type="password" name="password" id="password" value="" /> 
      </p> 
      <p> 
       <label for="confirmPassword">Confirm Password:</label><br/> 
       <input type="password" name="confirmPassword" id="confirmPassword" value="" /> 
      </p> 
      <p> 
       <input type="submit" value="Submit" /> 
       <input type="button" value="Cancel" onclick="javascript:location.href='Default.cshtml'" /> 
      </p> 
      <p> 
      </p> 
     </form> 
    </div> 
</body> 
0

のための私の完全なコードは、私がコメントするのに十分高い評判を持っていますが、どのような他の人が言ったことは正しいことではないんです。最初のクエリをパラメータ化する必要があります。これを行うには、SqlCommand AddWithParameterメソッドを確認してください。

また、あなたのコードに別の問題がありました。特定の電子メールを持つデータベース内のユーザーの量を含む整数を格納するrowCount変数がありますが、別のユーザーをデータベースに挿入する前にそれを使用してロジックを実行する必要があります。

関連する問題