Avatar billede starf Nybegynder
17. februar 2006 - 10:22 Der er 51 kommentarer og
1 løsning

login form, der sender user id og andet date med.

Hej

jeg vil gerne lave en login funktion til mit c# program. Jeg har derfor lavet en tabel med user og password, samt en user rolle og et user id.

Jeg har der ud over lavet en login form, som er det første man ser når man starter programmet. jeg vil så gerne ha så man logger ind, og hvis man angiver det rigtige user og password, logger den en ind, og sender user id og user rolle med, hvordan gøres dette?

går ud fra user id og rolle skal sendes med som en string, af en form. men hvordan gøres dette?
Avatar billede innercitydk Nybegynder
17. februar 2006 - 10:48 #1
I constructoren til den form du vil åbne laver du input parametrene id og rolle. I form klassen laver du så et par globale variabler der holder på de input der er med i constructoren.

F.eks:

I loginformen:

//Hvis brugeren er logget korrekt på skal den nye form kaldes og vises

Enandenform f=new Enandenform(id, rolle);
f.Show();


I Enandenform:

class Enandenform::System.Windows.Forms.Form
{
private string id;
privat string rolle;

osv...

I constructoren skriver du så noget lignende:

public Enandenform(string id, string rolle)
{
this.id=id;
this.rolle=rolle;

InitializeComponent();
}


Herefter vil id og rolle være tilgængelige fra den form der åbnes.

Vh Nicki
Avatar billede starf Nybegynder
17. februar 2006 - 11:03 #2
ok tak tror jeg fatter det.

hvordan laver man så man kan logge ind? altså får den til at tjekke om 2 bokse passer det der er i dbén?
Avatar billede innercitydk Nybegynder
17. februar 2006 - 11:05 #3
Lige en tilføjelse:

Desuden kan du nok ikke lukke loginformen uden at programmet exiter, da den jo er din startform. ved succesfuld login kan du derfor bare skrive this.Hide(); i loginformen. Når du så exiter programmet fra en anden form skal du have fat i en instans af den loginform du bruger. Dette kan du opnå ved at implementere et singleton pattern. Et singleton pattern virker på den måde at der kun oprettes en instans af formen. Når du vil lukke programmet fra en anden form skal du jo tilgå den aktuelle loginform, og ikke en ny instans af den. Det virker ved at man laver constructoren privat istedet for public. Indsæt følgende kode i loginformen:

public class Loginform : System.Windows.Forms.Form
{
//
// Singleton Pattern så loginformen kan styre til gangen til selve programmet.   
//
private static Loginform instance;
       
protected Loginform()
{
    InitializeComponent();
}
       
public static Loginform getInstance()
{
    if(instance==null)
        instance=new Loginform();
    return instance;
}


Når du så vil lukke programmet gøres det på følgende måde fra den form der ønsker at lukke programmet:

i InitializeComponent() metoden indsætter du følgende event handler:

this.Closing += new System.ComponentModel.CancelEventHandler(this.Enandenform_Closing);

Indsæt følgende kode et sted i Enandenform klassen:

private void Enandenform_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    Loginform log=Loginform.getInstance();
    log.Close();
}



Har du prøvet at læse fra en database før?
Avatar billede starf Nybegynder
17. februar 2006 - 11:14 #4
så er de tmåske lige før man skal lave login delen i den samme form som programmet, så undgår men de tsidste der.

Ja mit program læser og skriver til en db (mysql) fint nok så den del kan jeg godt finde ud af :)
Avatar billede innercitydk Nybegynder
17. februar 2006 - 11:22 #5
Hvis du f.eks bruger en access database kan det se ud på følgende måde (skal tilpasses til din aktuelle kode):

//
// Metode der henter en medarbejders password
//
public string TjekBruger()
{
string Sql="SELECT password FROM brugere WHERE id='"+textBox1.Text+"'";
string myConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;"+@"Data Source=database.mdb";
OleDbConnection myConnection;
OleDbCommand myAdapter;
OleDbDataReader myReader;
string resultat="";
myConnection = new OleDbConnection(myConnectionString);
myConnection.Open();
myAdapter = new OleDbCommand( Sql, myConnection );
myReader = myAdapter.ExecuteReader();
while(myReader.Read())
{
    resultat=myReader[0].ToString();
}
myReader.Close();
myConnection.Close();
return resultat;
}


Kaldet til metoden kan se således ud (kaldes når der klikkes på login knappen):

string resultat=TjekBruger();
if(resultat==textBox2.Text)
{
Enandenform f=new Enandenform(id, rolle);
f.Show();
this.hide
}

Vh
Avatar billede innercitydk Nybegynder
17. februar 2006 - 11:25 #6
Det er en god ide at lave loginformen for sig selv, og bruge en singleton som beskrevet. Prøv at implementere det i din kode. Du lærer meget ved det. Det kan også bruges i andre klasser som der kun skal arbejdes med en instans af. F.eks hvis du laver en cache som et array der holder på værdier eller objekter. Hvis andre klasser eller forme skulle bruge denne cache skulle de lave en instans af klassen hver gang samt fylde cachen. Med et singleton pattern er det altid den samme instans af klassen der returneres, derfor skal cache arrayet også kun fyldes en gang.

Vh
Avatar billede innercitydk Nybegynder
17. februar 2006 - 11:25 #7
det sparer en hulens masse resurser :)
Avatar billede starf Nybegynder
17. februar 2006 - 11:32 #8
Ok tak :) så laver jeg bare en login form. har dog lige ekstra spørgsmål så som jeg håber du ik har noget imod at svare på hvis du kan.

kan man disable og aktivere tabpages? kan nemelig ik rigtig få den til det.

angående din kode, er det bare mig eller tjekker den ik kun bruger? hvor sammenligner den om indholdet i user og password passer med user og password i dbén?

prøver lige at se om jeg kan få det singleton til at virke, lydder nemelig smart!
Avatar billede innercitydk Nybegynder
17. februar 2006 - 11:36 #9
Den henter password ud fra databasen ved hjælp af den text der står i textbox1 (brugernavn). Den sammenligner så det returnerede fra databasen med textbox2 (password) hvis de matcher åbnes den nye form ellers skal du lave en label hvor der står det ikke matcher. ret enkelt men effektivt. Jeg tjekker lige om på det med tabpages jeg har et program jeg lavede for nyligt med tabs

Vh
Avatar billede innercitydk Nybegynder
17. februar 2006 - 11:55 #10
Indsæt følgende kode i den form der bruger tab pages:

private void HideTabPage(TabPage tp)
{
    if (tabControl1.TabPages.Contains(tp))
        tabControl1.TabPages.Remove(tp);
}

private void ShowTabPage(TabPage tp)
{
    ShowTabPage(tp, tabControl1.TabPages.Count);
}


Du kalder metoderne på følgende måde:

HideTabPage(tabPage2);
ShowTabPage(tabPage2);


Jeg har testet det, og det virker ;)

Vh Nicki
Avatar billede starf Nybegynder
17. februar 2006 - 11:59 #11
Hmm jeg får bare:
Error    1    No overload for method 'ShowTabPage' takes '2' arguments
ved:
ShowTabPage(tp, tabControl1.TabPages.Count);

gemmer og viser den her ikke bare alle "tabpages"? mente nemelg om det var muligt f.eks at hide tabpage2 og tabpage3 mens tabpage1 og tabpage4 sku ku ses. (håber det gav mere mening)
Avatar billede clausc Nybegynder
17. februar 2006 - 11:59 #12
Du bør ikke gemme passwords i klartekst i databasen. Overvej at lade din login form sende en hash af password som sammenlignes med databasens gemte hashværdi.
Avatar billede innercitydk Nybegynder
17. februar 2006 - 12:08 #13
Ups jeg glemte lige en metode.. Man skal selv implementere den funktionalitet. Det er ikke noget man kan standard. det virker som du beskriver. Den gemmer den tabpage du sender med som parameter når du kalder metoden, og tilsvarende for at vise den igen. Koden skulle have været:

private void HideTabPage(TabPage tp)
{
    if (tabControl1.TabPages.Contains(tp))
        tabControl1.TabPages.Remove(tp);
}


private void ShowTabPage(TabPage tp)
{
    ShowTabPage(tp, tabControl1.TabPages.Count);
}


private void ShowTabPage(TabPage tp , int index)
{
    if (tabControl1.TabPages.Contains(tp)) return;
    InsertTabPage(tp, index);
}

Vh
Avatar billede innercitydk Nybegynder
17. februar 2006 - 12:09 #14
Enig med clausc, men hvis det er et stykke software der kun skal bruges på en enkelt pc er det overkill :)
Avatar billede starf Nybegynder
17. februar 2006 - 12:12 #15
begynder at føle mig lidt dum men nu får jeg :

Error    1    The name 'InsertTabPage' does not exist in the current context
ved:
InsertTabPage(tp, index);

hvordan ændre jeg så de tabpages den skal skjule ved at trykke på knappen? f.eks hvis jeg vil ha den skal skjule tabpage2 og 3 ?

ideen er nemelig at lave det så den skjuler og viser diverse tabpages alt efter hva rolle en user har nemelig.
Avatar billede starf Nybegynder
17. februar 2006 - 12:13 #16
det er noget wannabe be ordre system jeg forsøger at lave. men hvis forbindelse til mysql serveren køre via ssl er det vel lige meget?
Avatar billede clausc Nybegynder
17. februar 2006 - 12:15 #17
Nej da. Hvorfor skal du og alle andre med adgang til databasen kunne se mit password?
Avatar billede starf Nybegynder
17. februar 2006 - 12:16 #18
clausc> ja ok det havde jeg sku ik lige tænkt på......
Avatar billede innercitydk Nybegynder
17. februar 2006 - 12:21 #19
Kalder du HideTabPage metoden fra den form der har tabpages? Det burde nu virke. HEr er et scenarie:

I constructoren til den form der åbnes bliver id og rolle initieret. Med en simpel if, eller switch kan du styre tab pages. Åbn design visning af formen og dobbelklik i det blå område øverst. Herefter laves der en metode i koden der fyres af når formen loader. Her kan du så tilgå id og rolle for at bestemme hvilke tabpages der skal være aktive. I følgende kode går vi ud fra at formen hedder TabForm:

private void TabForm_Load(object sender, System.EventArgs e)
{
if(this.rolle==etellerandet)
{
HideTabPage(tabPage3);
HideTabPage(tabPage4);
}
else if(this.rolle==nogetandet)
{
HideTabPage(tabPage2);
HideTabPage(tabPage3);
HideTabPage(tabPage4);
}

... osv.
Avatar billede innercitydk Nybegynder
17. februar 2006 - 12:24 #20
Hvis det er enkelt bruger app med password på databasen er der da ikke andre der kan se dit password. Det er jo ikke tale om en netværks app så vidt jeg har forstået det. Man må da gå ud fra at det kun er admin der har adgang til den db
Avatar billede clausc Nybegynder
17. februar 2006 - 12:29 #21
Hvorfor skal en admin kunne se mit password?

Min pointe er, at det er en uskik at gemme ting som passwords i klartekst. Det er måske overkill i denne konkrete situation; men hvorfor dog lave dårlig kode til at starte med?
Avatar billede starf Nybegynder
17. februar 2006 - 12:31 #22
det er kun admin, så har ik tænkt mig at bruge tid på lave det med koden. i det mindste betyder det at det er muliget at genfinde folks forsvundende passwords :)

angåden tabpages, jeg har bare smidt

private void HideTabPage(TabPage tp)
{
    if (tabControl1.TabPages.Contains(tp))
        tabControl1.TabPages.Remove(tp);
}


private void ShowTabPage(TabPage tp)
{
    ShowTabPage(tp, tabControl1.TabPages.Count);
}


private void ShowTabPage(TabPage tp , int index)
{
    if (tabControl1.TabPages.Contains(tp)) return;
    InsertTabPage(tp, index);
}

ind i den form der har min tabpages, og lavet en knap der har:

HideTabPage(tabPage2);

jeg har self tjekket navne og sådan.
Avatar billede innercitydk Nybegynder
17. februar 2006 - 12:32 #23
Enig claus. Men hvad med den situation hvor du glemmer dit password? Jeg skal sige at jeg ikke har meget forstand på hash coding. Vi er ikke kommet så langt i undervisningen endnu :) (3.sem datamatiker) hehe
Kender du nogen tutorials på området?

Vh Nicki
Avatar billede innercitydk Nybegynder
17. februar 2006 - 12:36 #24
Så giver det ikke rigtig mening at det ikke virker hehe.. Jeg kopierede metoderne ind i formen og kaldte dem på samme måde som du har gjort. Skriver den samme fejl som du skrev tidligere?
Avatar billede starf Nybegynder
17. februar 2006 - 12:37 #25
Error    1    The name 'InsertTabPage' does not exist in the current context

ved kode : InsertTabPage(tp, index);

fra:

private void ShowTabPage(TabPage tp , int index)
{
    if (tabControl1.TabPages.Contains(tp)) return;
    InsertTabPage(tp, index);
}

den kalder vel noget der hedder InsertTabPage ?? som jeg åbenbart mangler, er det en funktion du selv har lavet?
Avatar billede starf Nybegynder
17. februar 2006 - 12:38 #26
clausc> har du så ret i. men nu er jeg ik lige frem speciel god til at kode.. simple ting tager lang tid osv.. men har du nogle tuts til det eller sådan?
Avatar billede innercitydk Nybegynder
17. februar 2006 - 12:40 #27
arh oha hvor er jeg dum.. jeg kan sq da også bare poste hele koden.. oha.. sry indsæt det her så virker det:

private void InsertTabPage(TabPage tabpage, int index)
{
    if (index < 0 || index > tabControl1.TabCount)
        throw new ArgumentException("Index out of Range.");
    tabControl1.TabPages.Add(tabpage);
    if (index < tabControl1.TabCount - 1)
        do
        {
            SwapTabPages(tabpage, (tabControl1.TabPages[tabControl1.TabPages.IndexOf(tabpage) - 1]));
        }
        while (tabControl1.TabPages.IndexOf(tabpage) != index);
    tabControl1.SelectedTab = tabpage;
}
Avatar billede clausc Nybegynder
17. februar 2006 - 12:42 #28
Sites hvor man kan få tilsendt et glemt password, har passwords liggende enten i klartekst eller noget der rent sikkerhedsmæssigt er det samme; dvs ikke noget jeg vil udlevere noget som helst sensitivt til.

Sites der IKKE kan oplyse om glemte passwords, tyder så på bedre data-sikkerhed. Og hverken admins eller hackers har andre muligheder end brute-force eller at oprette et nyt password (typisk med et hemmeligt spørgsmål/svar som man har angivet ved oprettelsen).

Kender ikke lige nogle tutorials.

PS: giv alle points til innercitydk; jeg har bare blandet mig :)
Avatar billede innercitydk Nybegynder
17. februar 2006 - 12:44 #29
Det er da helt ok. Jeg blev da lidt klogere :)
Avatar billede starf Nybegynder
17. februar 2006 - 12:45 #30
innercitydk> Hmm ok det hjælp. nu er det bare denne her der brokker sig:

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

ved:

SwapTabPages(tabpage, (tabControl1.TabPages[tabControl1.TabPages.IndexOf(tabpage) - 1]));

har du endnu en funktion for swaptabpages ?

clausc> ok tak, var nuy meget rart lige at få udvidet sin viden på det felt.. tak
Avatar billede starf Nybegynder
17. februar 2006 - 12:50 #32
tak clausc! bestemt brugbart... tror jeg vil prøve at se om jeg kan få det til at virke, når det andet her virker som det skal...
Avatar billede innercitydk Nybegynder
17. februar 2006 - 12:52 #33
Hvorfor er der ikke en smily for rød i hovedet herinde hehe :)

private void SwapTabPages(TabPage tp1, TabPage tp2)
        {
            if (tabControl1.TabPages.Contains(tp1) == false || tabControl1.TabPages.Contains(tp2) == false)
                throw new ArgumentException("TabPages must be in the TabControls TabPageCollection.");

int Index1 = tabControl1.TabPages.IndexOf(tp1);
int Index2 = tabControl1.TabPages.IndexOf(tp2);
tabControl1.TabPages[Index1] = tp2;
tabControl1.TabPages[Index2] = tp1;

        }
Avatar billede innercitydk Nybegynder
17. februar 2006 - 12:56 #34
For god ordens skyld er hele koden således (for fremtidige læsere af tråden):

private void HideTabPage(TabPage tp)
{
    if (tabControl1.TabPages.Contains(tp))
        tabControl1.TabPages.Remove(tp);
}

private void ShowTabPage(TabPage tp)
{
    ShowTabPage(tp, tabControl1.TabPages.Count);
}

private void ShowTabPage(TabPage tp , int index)
{
    if (tabControl1.TabPages.Contains(tp)) return;
    InsertTabPage(tp, index);
}

private void InsertTabPage(TabPage tabpage, int index)
{
    if (index < 0 || index > tabControl1.TabCount)
        throw new ArgumentException("Index out of Range.");
    tabControl1.TabPages.Add(tabpage);
    if (index < tabControl1.TabCount - 1)
        do
        {
            SwapTabPages(tabpage, (tabControl1.TabPages[tabControl1.TabPages.IndexOf(tabpage) - 1]));
        }
        while (tabControl1.TabPages.IndexOf(tabpage) != index);
    tabControl1.SelectedTab = tabpage;
}

private void SwapTabPages(TabPage tp1, TabPage tp2)
        {
            if (tabControl1.TabPages.Contains(tp1) == false || tabControl1.TabPages.Contains(tp2) == false)
                throw new ArgumentException("TabPages must be in the TabControls TabPageCollection.");

int Index1 = tabControl1.TabPages.IndexOf(tp1);
int Index2 = tabControl1.TabPages.IndexOf(tp2);
tabControl1.TabPages[Index1] = tp2;
tabControl1.TabPages[Index2] = tp1;

}
Avatar billede starf Nybegynder
17. februar 2006 - 12:59 #35
hhæhæhæh begynde jo at tro det var mig der var dum :P

Så virker det sku.. tak :)

så skal jeg lige ha login delen til at virke.. den skal laves lidt om, og tilpasses mysql..

og har slet ik fået prøvet det første endnu.. puha en stor omgang :)
Avatar billede innercitydk Nybegynder
17. februar 2006 - 13:10 #36
hehe ja du har noget at gå i gang med
Avatar billede starf Nybegynder
17. februar 2006 - 13:16 #37
resultat;
hvor opretter du det? for i min kode brokker den sig over resultat ikke er der:

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

        public string TjekBruger()
        {

            //login
            MySqlConnection myConn = new MySqlConnection(getDatabaseDNS());
            myConn.Open();
            MySqlCommand myAdapter;
            MySqlDataReader myReader;
       
         
            string strSQL = "SELECT password FROM users WHERE id='" + textBox_login_username.Text + "'";
            MySqlCommand cmd;
           

            cmd = new MySqlCommand(strSQL, myConn);
            cmd.ExecuteNonQuery();
            myReader = myAdapter.ExecuteReader();
            while (myReader.Read())
            {
                resultat = myReader[0].ToString();
            }

            strSQL = "";
            myConn.Close();
            Clear();
            return resultat;
        }
Avatar billede innercitydk Nybegynder
17. februar 2006 - 13:20 #38
den var global i min klasse :)

bare initier den når koden afvikles. skriv string resultat=""; lige før //login
Avatar billede starf Nybegynder
17. februar 2006 - 13:26 #39
Hmm jeg får sku stadig samme problem:

        public string TjekBruger()
        {
            resultat = "";
            //login
            MySqlConnection myConn = new MySqlConnection(getDatabaseDNS());
            myConn.Open();
            MySqlCommand myAdapter;
            MySqlDataReader myReader;
       
         
            string strSQL = "SELECT password FROM users WHERE id='" + textBox_login_username.Text + "'";
            MySqlCommand cmd;
           

            cmd = new MySqlCommand(strSQL, myConn);
            cmd.ExecuteNonQuery();
            myReader = myAdapter.ExecuteReader();
            while (myReader.Read())
            {
                resultat = myReader[0].ToString();
            }

            strSQL = "";
            myConn.Close();
            Clear();
            return resultat;
        }

Error    1    The name 'resultat' does not exist in the current context
Avatar billede innercitydk Nybegynder
17. februar 2006 - 13:26 #40
du har glemt at skrive string.. du har bare resultat="";
Avatar billede starf Nybegynder
17. februar 2006 - 13:30 #41
lol ja ok det hjalp ... DOH!

nu får jeg dog bare:

Error    1    Use of unassigned local variable 'myAdapter'
fra:
myReader = myAdapter.ExecuteReader();

selv omd en er angivet her: MySqlCommand myAdapter;
Avatar billede innercitydk Nybegynder
17. februar 2006 - 13:34 #42
ja ok det giver ik rigtig noget mening :)
Avatar billede starf Nybegynder
17. februar 2006 - 13:39 #43
tror jeg fik det til at virke! hvis jeg nu lige skal se om login delen virker, hvordan skal jeg så køre denne her del?:

            string resultat=TjekBruger();
            if (resultat == textBox_login_password.Text)
            {
                Enandenform f=new Enandenform(id, rolle);
                f.Show();
                this.hide;
            }

id og rolle skal bare sendes til deres egen form?
Avatar billede starf Nybegynder
17. februar 2006 - 13:55 #44
Ok jeg har fået login til at virke ;) skal bare lige regne ud hvordan jeg får vist id og rolle på formen efter hvem der er logget ind, hvordan vil du gøre det hvis login var på samme form, som regen af programmet?
Avatar billede starf Nybegynder
17. februar 2006 - 13:59 #45
Hmm talte for hurtigt! har gjort det sådan her:

bruger tjek del:

        public string TjekBruger()
        {
            string resultat = "";
            //login
            MySqlConnection myConn = new MySqlConnection(getDatabaseDNS());
            myConn.Open();
          // MySqlCommand myAdapter;
            MySqlDataReader myReader;
       
         
            string strSQL = "SELECT password FROM users WHERE user='" + textBox_login_username.Text + "'";
            MySqlCommand cmd;
           

            cmd = new MySqlCommand(strSQL, myConn);
            cmd.ExecuteNonQuery();
            myReader = cmd.ExecuteReader();
            while (myReader.Read())
            {
                resultat = myReader[0].ToString();
            }

            strSQL = "";
            myConn.Close();
            Clear();
            return resultat;
        }


Login knap:

{
            string resultat=TjekBruger();
            if (resultat == textBox_login_password.Text)
            {

                MessageBox.Show(" login ok");

            }
            else
            {
                MessageBox.Show("login forkert..");
            }

        }

problemet er:

hvis user og password er det samme siger den login er ok... måske har jeg misforstået den måde du ville ha login delen til at virke på?
Avatar billede starf Nybegynder
17. februar 2006 - 14:01 #46
hvis user og pass er tomt, siger den login er ok
hvis user er udfyldt og pass ikke er, siger den login er ok....
Avatar billede innercitydk Nybegynder
17. februar 2006 - 14:06 #47
Først og fremmest skal du lige ændre sql i tjekbruger til:

string strSQL = "SELECT password FROM users WHERE user='" + textBox_login_username.Text + "'";

vi skal have hentet rolle og id i databasen..

Lav en metode mere i loginform klassen:

public string[] HentIdRolle()
        {
            string [] resultat = new string [2];
            //login
            MySqlConnection myConn = new MySqlConnection(getDatabaseDNS());
            myConn.Open();
            MySqlCommand myAdapter;
            MySqlDataReader myReader;
       
            string strSQL = "SELECT id,rolle FROM users WHERE user='" + textBox_login_username.Text + "'";
            MySqlCommand cmd;
           
            cmd = new MySqlCommand(strSQL, myConn);
            cmd.ExecuteNonQuery();
            myReader = myAdapter.ExecuteReader();
            while (myReader.Read())
            {
                resultat[0] = myReader[0].ToString();
                resultat[1] = myReader[1].ToString();
            }

            strSQL = "";
            myConn.Close();
            Clear();
            return resultat;
        }

Lav metoden du postede før om til:


string resultat =TjekBruger();
if (resultat == textBox_login_password.Text)
{
      string [] resultat2=HentIdRolle();
      Enandenform f=new Enandenform(resultat2[0], resultat2[1]);
      f.Show();
      this.hide;
}
Avatar billede innercitydk Nybegynder
17. februar 2006 - 14:09 #48
der skal laves tjek på om de er tomme når der trykkes på knappen og gives en fejl hvis de er tomme

f.eks:

if((textBox_login_username.Text =="")|(textBox_login_password.Text ==""))
                label3.Text="Fejl i navn eller password";
else
{
string resultat =TjekBruger();
if (resultat == textBox_login_password.Text)
{
      string [] resultat2=HentIdRolle();
      Enandenform f=new Enandenform(resultat2[0], resultat2[1]);
      f.Show();
      this.hide;
}
}
Avatar billede starf Nybegynder
17. februar 2006 - 14:13 #49
string resultat = TjekBruger();
            if (resultat == textBox_login_password.Text)
            {
                string[] resultat2 = HentIdRolle();
                Form1 f = new Form1(resultat2[0], resultat2[1]);
                f.Show();
                this.hide;
            }

den der del skal vel ik være sådan hvis login delen er en del af programmet? (og ikke er i sin egen form)
Avatar billede innercitydk Nybegynder
17. februar 2006 - 14:21 #50
nej så skal den være:

string resultat = TjekBruger();
            if (resultat == textBox_login_password.Text)
            {
                string[] resultat2 = HentIdRolle();
                this.id=resultat2[0];
                this.rolle=resultat2[1];
            }
Avatar billede starf Nybegynder
17. februar 2006 - 14:23 #51
ok tak for hjælpen... :)
Avatar billede Syska Mester
18. februar 2006 - 20:25 #52
Brug parameters, så man ikke kan lave sql injection
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