Aiuto Username e Password

lunedì 03 settembre 2007 - 21.09

z.cristiano Profilo | Newbie

Salve a tutti!
Ho una difficoltà poco pesante!
Io ho fatto una mascherza d'accesso con due campi txtUsername e txtPassword..
Nel database ho messo due dati (username = 12, password = 12 e username = 44, password = 44)
Dopo aver fatto il codice, durante il debug, funziona e accede solo digitando 12 e 12, mentre l'altro non funziona, perchè? Cosa e dove ho sbagliato?
Ti lascio il codice e magari mi potrete dare un'occhiata?
Grazie

C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Progetto
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnEntra_Click(object sender, EventArgs e)
{
//SqlConnection conn = new SqlConnection("Data Source=localhost;Initial Catalog=cristiano;Integrated Security=True");
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Documents and Settings\Zuddas Design\Documenti\Visual Studio 2005\Projects\Progetto\Progetto\database.mdf;Integrated Security=True;User Instance=True");
SqlCommand cmq = new SqlCommand(@"SELECT * FROM accesso", conn);

conn.Open();

SqlDataReader leggi = cmq.ExecuteReader();

leggi.Read();

DialogResult Conferma1;
if((txtUsername.Text == "") && (txtPassword.Text == ""))
{
Conferma1 = MessageBox.Show("Inserisci la tua user e la password",
"Attenzione!",
MessageBoxButtons.OK,
MessageBoxIcon.Warning,
MessageBoxDefaultButton.Button2);
}
else
{

string username = leggi.GetString(leggi.GetOrdinal("username"));

string password = leggi.GetString(leggi.GetOrdinal("password"));

if((txtUsername.Text == username) && (txtPassword.Text == password))
{
MessageBox.Show("Welcome! You are now logged in " + username + " e " + password + "");
}
else
{

MessageBox.Show("Sorry, you didn't manage to log in.");

}

}

leggi.Close();
conn.Close();

}
}
}

alx_81 Profilo | Guru

>Salve a tutti!
Ciao!

>Ho una difficoltà poco pesante!
>Io ho fatto una mascherza d'accesso con due campi txtUsername
>e txtPassword..
>Nel database ho messo due dati (username = 12, password = 12
>e username = 44, password = 44)
>Dopo aver fatto il codice, durante il debug, funziona e accede
>solo digitando 12 e 12, mentre l'altro non funziona, perchè?
>Cosa e dove ho sbagliato?
Attenzione, quello che hai scritto non ti dà alcuna garanzia di funzionamento nemmeno nel caso in cui (qualche volta) funziona già. Perchè dico qualche volta? Prova ad inserire il record con 05 - 05 e vedrai che nemmeno il 12 effettuerà il login. Questo perchè tu leggi l'intera tabella e controlli solo la prima riga del resultset (il metodo Read, infatti, ti sposta in prima posizione del tuo cursore connesso).
Quindi qualunque sia l'informazione che ti viene passata la riferisci sempre e comunque alla prima riga.
Un metodo più sicuro è scrivere una query che vada a ricercare sul database per username e password (utilizzando il comando parametrizzato o, se puoi, le stored procedure). In questo modo, se ottieni una riga con quei parametri di ricerca (la where, per intenderci) allora la login è valida, viceversa, se il resultset è vuoto, allora l'utente non dispone delle informazioni necessarie per accedere alla tua applicazione.

Dovresi fare una cosa del genere:

- leggo i dati dai txt.
- seleziono le righe sul database dove l'utente e la password sono quelle passate
- se ho una riga, ok, il login è corretto
- se non ho righe il login non è valido

A te l'implementazione

Ciao!


Alx81 =)

http://blogs.dotnethell.it/suxstellino
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5