Avatar billede starf Nybegynder
20. februar 2006 - 09:51 Der er 24 kommentarer og
1 løsning

login system, der sender id vidre i ens program

Hey

Jeg har brug for et login system, der sender ens user id vidre i ens program. Det jeg har lavet er jeg har et fanblad, med en login form på. hva jeg gerne vil ha, er hvis ens bruger befinder sig i user db, så skal den logge en ind, og sende ens user id med, så man senere kan kalde det id den bruger har, og brug det f.eks til at hente ting som bruger navn ud med.

sådan her ser min db ud:
--id---user--pass--navn
1---mads--test--mads
2---bent--hansen--bent

osv

hvordan gøres dette?
Avatar billede dr_chaos Nybegynder
20. februar 2006 - 09:56 #1
fra login formen istantierer du en ny form som skal være synlig efter login formen.
noget med

enform ef = new enform();
ef.Show();

for at sende bruger i det med laver du et nyt overload af "enform":

public Form enform(int Brugerid)
{
//her gemmer du så bruger id i en anden variabel.
}

når du istantierer enform bruger du så:


enform ef = new enform(brugeridfradatabase);
ef.Show();
Avatar billede starf Nybegynder
20. februar 2006 - 10:06 #2
jeg har lavet en funktion til at aktivere de forskelige faner med hvis man kan logge ind.. så den del skal jeg ik bruge.. skal bare bruge et kode eksempel på login der virker og sender ens id med!...
Avatar billede dr_chaos Nybegynder
20. februar 2006 - 10:11 #3
du skal bruge en sqlsætning
strSql="SELECT id FROM Tabel WHERE user='"+txtUserNavn.Text+"' AND pass='"+txtpass.Text+"'";
Avatar billede starf Nybegynder
20. februar 2006 - 10:29 #4
public void logintjek()
        {
            //login


            MySqlConnection myConn = new MySqlConnection(getDatabaseDNS());
            myConn.Open(); 
            string strSQL = "SELECT id FROM Tabel WHERE user='" + textBox_login_username.Text + "' AND pass='" + textBox_login_password.Text + "'";     
            MySqlCommand cmd; 
            cmd = new MySqlCommand(strSQL, myConn);
            cmd.ExecuteNonQuery();
            strSQL = "";
            myConn.Close();

        }

hva skal jeg så gøre nu? hvis jeg tila t starte med bare vil ha en msg box der fortælder om login er ok eller ikke ok? samt vise id et sted i min form for den bruger der er logget ind?
Avatar billede dr_chaos Nybegynder
20. februar 2006 - 11:24 #5
prøv med noget i denne stil:
public void logintjek()
        {
            //login


            MySqlConnection myConn = new MySqlConnection(getDatabaseDNS());
            myConn.Open();
            string strSQL = "SELECT id FROM Tabel WHERE user='" + textBox_login_username.Text + "' AND pass='" + textBox_login_password.Text + "'";   
            MySqlCommand cmd;
            cmd = new MySqlCommand(strSQL, myConn);
            SqlDataReader reader = cmd.ExecuteReader();
        reader.Read();
        EnTextBox.Text = reader["id"];

            strSQL = "";
            myConn.Close();

        }

erstat  EnTextBox.Text med en messagebox
Avatar billede starf Nybegynder
20. februar 2006 - 11:42 #6
private void button11_Click(object sender, EventArgs e)
        {
            MySqlConnection myConn = new MySqlConnection(getDatabaseDNS());
            myConn.Open();
            string strSQL = "SELECT id FROM users WHERE user='" + textBox_login_username.Text + "' AND pass='" + textBox_login_password.Text + "'";   
            MySqlCommand cmd;
            cmd = new MySqlCommand(strSQL, myConn);
            SqlDataReader reader = cmd.ExecuteReader();
            reader.Read();
            MessageBox.Show = reader["id"];
            strSQL = "";
            myConn.Close();

        }

giver mig bare:

Error    1    The type or namespace name 'SqlDataReader' could not be found (are you missing a using directive or an assembly reference?)

ved: SqlDataReader reader = cmd.ExecuteReader();

Cannot apply indexing with [] to an expression of type 'SqlDataReader'

MessageBox.Show = reader["id"];
Avatar billede dr_chaos Nybegynder
20. februar 2006 - 12:26 #7
tilføj Using System.Data.SQlClient i toppen af siden
Avatar billede starf Nybegynder
20. februar 2006 - 12:32 #8
så får jeg bare:
Error    1    Cannot implicitly convert type 'MySql.Data.MySqlClient.MySqlDataReader' to 'System.Data.SqlClient.SqlDataReader'
Avatar billede starf Nybegynder
20. februar 2006 - 12:36 #9
ok har fået det til at virke.. en sidte ting.. hvordan får man den til at skrive en msb boks hvis login er forkert istedetfor at programmet bare crasher?
Avatar billede starf Nybegynder
20. februar 2006 - 12:37 #10
samt hvordan kalder jeg det id, fra en anden funktion. f.eks hvis jeg vil ha det id vist som et label et sted?
Avatar billede dr_chaos Nybegynder
20. februar 2006 - 12:45 #11
lav en public static int:
f.eks.
public static int BrugerID;

private void button11_Click(object sender, EventArgs e)
        {
            MySqlConnection myConn = new MySqlConnection(getDatabaseDNS());
            myConn.Open();
            string strSQL = "SELECT id FROM users WHERE user='" + textBox_login_username.Text + "' AND pass='" + textBox_login_password.Text + "'"; 
            MySqlCommand cmd;
            cmd = new MySqlCommand(strSQL, myConn);
            SqlDataReader reader = cmd.ExecuteReader();
            reader.Read();
            BrugerID= (int)reader["id"];
            strSQL = "";
            myConn.Close();

        }
Avatar billede dr_chaos Nybegynder
20. februar 2006 - 12:45 #12
på den måde kan du tilgå det alle steder fra
Avatar billede starf Nybegynder
20. februar 2006 - 12:52 #13
jeg får:

Error    1    The name 'UserID' does not exist in the current context

ved: UserID = (int)reader["id"];

samt kan du give et eksempel på hvordan jeg så i en anden funktion kan kalde userid? kan jeg bare skrive textbox.Text = UserId eller hvad?
Avatar billede dr_chaos Nybegynder
20. februar 2006 - 12:55 #14
har du lavet en public static int ?
Avatar billede starf Nybegynder
20. februar 2006 - 12:58 #15
ah den del havde jeg overset.. Hvis jeg bare smider den ind et sted, så får jeg "Specified cast is not valid." ved UserID = (int)reader["id"];

Samt hvordan får jeg den til at vise en boks eller noget der fortælder om login er ok eller fejl?
Avatar billede dr_chaos Nybegynder
20. februar 2006 - 13:05 #16
int.parse(reader["id"].ToString);


du kan lave en if sætning som tjekker på id
Avatar billede starf Nybegynder
20. februar 2006 - 13:09 #17
hmm får bare: Error    1    'int' does not contain a definition for 'parse'
Avatar billede dr_chaos Nybegynder
20. februar 2006 - 13:28 #18
stort P
Avatar billede dr_chaos Nybegynder
20. februar 2006 - 13:29 #19
hvis du får en fejl meddelelse magen til den så placer markøren i ordet og tryk ctrl+space
Avatar billede starf Nybegynder
20. februar 2006 - 13:50 #20
ah hæhæ :) men nu giver den bare:(

Error    1    The best overloaded method match for 'int.Parse(string)' has some invalid arguments   

og

Error    2    Argument '1': cannot convert from 'method group' to 'string'

ved

UserID = int.Parse(reader["id"].ToString);
Avatar billede starf Nybegynder
20. februar 2006 - 14:16 #21
ok det sku være UserID = int.Parse(reader["id"].ToString());

hvordan skal man så sætte if sætningen så man kan sende en msg box hvis login er ok og forkert? og så programmet ikke crasher hvis login er forkert?
Avatar billede dr_chaos Nybegynder
20. februar 2006 - 17:52 #22
noget i denne stil

if(reader["id"] != null)
{
UserID = int.Parse(reader["id"].ToString);
//lav den kode som viser det som skal være tilgængeligt når man er logget på
UserID = int.Parse(reader["id"].ToString());
}
else
{
MessaageBox.Show = "Du er ikke blevet logget på brugernavn eller password er ikke gyldigt"
}
Avatar billede starf Nybegynder
21. februar 2006 - 09:25 #23
nu har jeg gjort det sådan her:

        private void button11_Click(object sender, EventArgs e)
        {
           
            MySqlConnection myConn = new MySqlConnection(getDatabaseDNS());
            myConn.Open();
            string strSQL = "SELECT id FROM users WHERE user='" + textBox_login_username.Text + "' AND password='" + textBox_login_password.Text + "'";
            MySqlCommand cmd;
            cmd = new MySqlCommand(strSQL, myConn);
            MySqlDataReader reader = cmd.ExecuteReader();
            reader.Read();
            if (reader["id"] != null)
            {
            UserID = int.Parse(reader["id"].ToString());
            strSQL = "";
            myConn.Close();
            //Henter bruger info og udfylder user fan
            getuserinfo();
           
       
            lbl_id.Text = UserID.ToString();
            lbl_userrolelogin.Text = lbl_userrole.Text;
            setusercontrols();
            //MessageBox.Show(UserID.ToString());
            }
              else
            {
                MessageBox.Show("LOGIN WRONG.");
               
            }
           
        }

men der crasher programmet bare når man skriver forkert password eller user og pejer på:  if (reader["id"] != null)
og siger:
Invalid attempt to access a field before calling Read()
Avatar billede dr_chaos Nybegynder
21. februar 2006 - 11:49 #24
prøv med:
  private void button11_Click(object sender, EventArgs e)
        {
         
            MySqlConnection myConn = new MySqlConnection(getDatabaseDNS());
            myConn.Open();
            string strSQL = "SELECT id FROM users WHERE user='" + textBox_login_username.Text + "' AND password='" + textBox_login_password.Text + "'";
            MySqlCommand cmd;
            cmd = new MySqlCommand(strSQL, myConn);
            MySqlDataReader reader = cmd.ExecuteReader();
         
            if (reader.HasRows)
            {
reader.Read();
            UserID = int.Parse(reader["id"].ToString());
            strSQL = "";
            myConn.Close();
            //Henter bruger info og udfylder user fan
            getuserinfo();
         
     
            lbl_id.Text = UserID.ToString();
            lbl_userrolelogin.Text = lbl_userrole.Text;
            setusercontrols();
            //MessageBox.Show(UserID.ToString());
            }
              else
            {
                MessageBox.Show("LOGIN WRONG.");
             
            }
         
        }
Avatar billede starf Nybegynder
30. marts 2006 - 10:19 #25
lala
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester