2016-02-26 1 views
1

Je suis très nouveau sur ASP.net et j'ai suivi quelques didacticiels vidéo pour créer une page de connexion. J'ai réussi à créer ma page d'inscription bien qui entre les détails dans ma table dans la base de données bien mais je ne peux pas obtenir ma page de connexion au travail = /. Je suis là depuis quelques heures et je ne suis pas sûr si l'un d'entre vous peut aider, mais ça vaut le coup. L'IDE que j'utilise est Visual Studio (dernière version).Syntaxe incorrecte ASP.NET

Je reçois l'erreur suivante (en cliquant sur l'image donnera une vue plus rapprochée, mais vous savez probablement déjà que): enter image description here

les changements d'erreur en fonction de qui j'essaie de se connecter par exemple ci-dessus erreur a été retournée lors de la tentative de connexion en tant que john, l'erreur ci-dessous a été retournée en essayant de se connecter en tant qu'administrateur.

enter image description here

ci-dessous est mon code utilisé derrière le bouton de connexion:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Configuration; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

} 

protected void Button2_Click(object sender, EventArgs e) 
{ 
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString); 
    conn.Open(); 
    string checkuser = "select count(*) from [Table] where [Login]'" + Loginbox.Text + "'"; 
    SqlCommand com = new SqlCommand(checkuser, conn); 
    int temp = Convert.ToInt32(com.ExecuteScalar().ToString()); 
    conn.Close(); 
    if (temp == 1) 
    { 
     conn.Open(); 
     string CheckPasswordQuery = "select Password from [Table] where [Login]='" + Loginbox.Text + "'"; 
     SqlCommand Passcom = new SqlCommand(CheckPasswordQuery, conn); 
     string password = Passcom.ExecuteScalar().ToString().Replace(" ",""); 

     if (password == Passwordbox.Text) 
     { 
      Session["New"] = Passwordbox.Text; 
      Response.Write("Password is correct"); 


     } 
     else 
     { 
      Response.Write("Wrong password"); 

     } 
    } 
    else { 

     Response.Write("User name does not exist"); 


    } 
    } 


} 

ci-dessous est la forme de pages vues, qui fonctionne parfaitement bien, l'erreur est renvoyée lorsque le bouton de connexion est pressé.

enter image description here

ci-dessous est la définition de la table:

enter image description here

Et ci-dessous sont les données contenues dans le tableau:

enter image description here

Merci à tous pour votre temps et j'apprécie toute contribution que vous avez à aider s olve ceci.

+2

obligatoire [Injection SQL ] (https://www.owasp.org/index.php/SQL_Injection) avertissement. Utilisez des requêtes paramétrées (et vous pouvez également voir votre erreur). –

+1

Juste peut confirmer ce que les autres disent, c'est l'une des façons les plus sûres de valider un login ;-) Jetez un oeil ici https://www.youtube.com/watch?v=8ZtInClXe1Q –

+0

Oh ouais je l'ai compris c'est terriblement précaire , Je suis désolé c'est ma première page J'essaie juste d'apprendre les bases, ça ne sera pas vraiment utilisé pour quoi que ce soit que tu promets. Si c'était vous les gars pourriez vous amuser à l'exploiter. – ceefax12

Répondre

4

Vous avez une syntaxe invalide dans votre requête. S'il vous plaît noter que bien que de nombreux tutoriels peuvent vous montrer à interroger comme ça, c'est très peu sûr. Vous devriez utiliser des paramètres. Cependant, à cause de cette réponse, vous avez oublié le signe égal:

string checkuser = "select count(*) from [Table] where [Login] = '" + Loginbox.Text + "'"; 
+1

Veuillez montrer comment utiliser le paramétrage de sql, car d'autres pourraient en faire usage et utiliser ce type d'injection. – abc123

+0

Une autre réponse montre déjà cela maintenant, et c'est un pari plus sûr. – Nikki9696

+0

Omg comment pourrais-je avoir manqué que :(Heures que j'ai regardé cela, donc désolé à ce sujet mais merci beaucoup.et oui j'ai compris que ce serait terriblement incertain j'ai beaucoup à apprendre, c'est ma première page de connexion donc je ne sais pas vraiment ce que je fais, c'est juste en expérimentant que je vous promets qu'il ne sera pas hébergé correctement. – ceefax12

3

Votre syntaxe est incorrecte, mais il est en fait plus en sécurité si vous paramétrez pour éviter l'injection sql

string checkuser = "select count(*) from [Table] where [Login] = @user"; 
SqlCommand com = new SqlCommand(checkuser, conn); 
com.Parameters.Add("@user", Loginbox.Text); 
... 
+0

Merci :), une fois que j'aurai fini, j'essaierai de l'implémenter de cette façon, j'essaye juste d'obtenir une page de travail pour le moment :) Je sais que c'est assez mal assuré mais je ne l'utiliserai pas pour n'importe quoi Ne vous inquiétez pas, c'est juste pour expérimenter. – ceefax12