Avatar billede mikkel251 Seniormester
13. maj 2016 - 10:00 Der er 9 kommentarer

tjek om en bruger findes før han kan oprette sig som bruger

hej eksperter :D
jeg er ved at lave en side hvor en bruger kan oprette sig og jeg vil gerne tjekke om brugernavn og email findes i forevejen, for hvis ja så skal han finde en ny mail eller nyt brugernavn.
men jeg kan ikke helt få det til at virke.

jeg bruger salt og hash i mine kode, det har jeg hørt skulle have noget at sige.
Felter i database virker fint jeg kan sagtens oprette mig også når ejg bruger det samme brugernavn og email som en anden allerrede har og det duer jo ikke.

og hvis i vil være rar ikke at komme med en alt for kryptisk forklaring for jeg er nybegynder i asp.net, så vil jeg være glad.



min kode i codebehind på den side hvor brugeren kan oprette sig.

    protected void btnOpret_Click(object sender, EventArgs e)
    {


        //tjek om email og brugernavn findes       
        DataTable dt_FindesBruger = objBruger.tjekBruger(txtEmail.Text, txtBrugernavn.Text);
        if (dt_FindesBruger.Rows.Count > 0)
        {
            if (!string.IsNullOrEmpty(txtBrugernavn.Text) || !string.IsNullOrEmpty(txtkode.Text))
            {
                //Her skrives kode til kryptering af adgangskode...
                krypteringFac objKryptering = new krypteringFac();
                string salt = objKryptering.GetRandomSalt();
                string HashedPassword = objKryptering.HashKode(txtkode.Text, salt);

                //Gem så brugerne sammen med krypteringen af koden både salt og selve adgangskoden som bliver hashet
                objBruger.OpretBruger(txtBrugernavn.Text, HashedPassword, txtEmail.Text, salt);

                Response.AddHeader("REFRESH", "2;URL=" + Request.RawUrl);
            }
            else
            {
                litBruger.Text = "<h4>indtast brugernavn og adgangskode</h4>";
            }
            litBruger.Text = "<p>Brugernavn er nu oprettet</p>";
        }
        else
        {
            litBruger.Text += "<p>Brugernavn eller adgangskode er allerede i brug, vælg venligst et andet</p>";

        }
    }

Mine metoder jeg bruger.
public DataTable tjekBruger(string Email, string brugernavn)
    {
        cmd = new SqlCommand("SELECT fldBrugernavn, fldEmail FROM tblBruger WHERE fldBrugernavn=@brugernavn OR fldEmail=@email");
        cmd.Parameters.AddWithValue("@email", Email);
        cmd.Parameters.AddWithValue("@brugernavn", brugernavn);
        return DA.GetData(cmd);
    }

og

    public void OpretBruger(string _brugernavn, string _adgangskode, string _email, string _salt)
    {
        cmd = new SqlCommand("INSERT INTO tblBruger(fldBrugernavn, fldAdgangskode, fldEmail, fldSalt) VALUES(@brugernavn, @adgangskode, @Email, @salt)");
        cmd.Parameters.AddWithValue("@brugernavn", _brugernavn);
        cmd.Parameters.AddWithValue("@adgangskode", _adgangskode);
        cmd.Parameters.AddWithValue("@email", _email);
        cmd.Parameters.AddWithValue("@salt", _salt);
        DA.ModifyData(cmd);
    }
Avatar billede Slettet bruger
13. maj 2016 - 11:07 #1
put brugernavnet i en variabel A

select brugernavn from brugere where brugernavn = A

hvis dette er sandt, findes variablen A som brugernavn, ellers gør den ikke

if not true, gå til login
else goto OPRET bruger
Avatar billede sonalias Seniormester
13. maj 2016 - 20:03 #2
Skal det laves korrekt så skal du også have lavet uniqueness constraint på username og e-mail i din DB
Avatar billede mikkel251 Seniormester
16. maj 2016 - 11:05 #3
hvad er uniqueness constraint og jeg vil lige prøve det med at putte brugernavnet i en variabel og se om jeg kan få det til at virke :D
Avatar billede sonalias Seniormester
17. maj 2016 - 08:08 #4
Søg på Google, men det betyder at der kun kan være en række i din database med navnet x
Avatar billede mikkel251 Seniormester
21. maj 2016 - 16:39 #5
jeg fik brygget den her sammen og den ser ud til at virke, tak for hjælpen  til jer alle sammen
Avatar billede mikkel251 Seniormester
21. maj 2016 - 16:39 #6
protected void btnOpret_Click(object sender, EventArgs e)
    {


        //tjek om email og brugernavn findes, hvis det gør så giv brugeren en besked på at prøve en ny email eller et nyt brugernavn. 
        DataTable dr_FindesBruger = objBruger.tjekOmBrugerFindes(txtBrugernavn.Text, txtEmail.Text);
        if (dr_FindesBruger.Rows.Count > 0)
        {
            litBruger.Text += "<p>Brugernavn eller adgangskode er allerede i brug, vælg venligst et andet</p>";
        }
        else
        {
            if (!string.IsNullOrEmpty(txtBrugernavn.Text) && !string.IsNullOrEmpty(txtkode.Text))
            {
                //Her skrives kode til kryptering af adgangskode...
                krypteringFac objKryptering = new krypteringFac();
                string salt = objKryptering.GetRandomSalt();
                string HashedPassword = objKryptering.HashKode(txtkode.Text, salt);

                //Gem så brugerne sammen med krypteringen af koden både salt og selve adgangskoden som bliver hashet
                objBruger.OpretBruger(txtBrugernavn.Text, HashedPassword, txtEmail.Text, salt);

                Response.AddHeader("REFRESH", "2;URL=" + Request.RawUrl);
            }
            else
            {
                litBruger.Text = "<h4>Indtast både brugernavn og adgangskode</h4>";
            }
            litBruger.Text = "<p>Brugernavn er nu oprettet</p>";

        }
    }
Avatar billede mikkel251 Seniormester
21. maj 2016 - 16:40 #7
jeg ved ikke lige hvordan og hvorledes med point men det tænker jeg i ved mere til end mig
Avatar billede sonalias Seniormester
22. maj 2016 - 15:04 #8
Bare giv sidwave, mine kommentarer var bare bonus
Avatar billede mikkel251 Seniormester
22. maj 2016 - 19:04 #9
jeg skulle give dig en kommentar så du kan få point så her er den :D
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