Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[.net]checken voor dubbele username

Pagina: 1
Acties:

  • DNA_Saint
  • Registratie: Maart 2004
  • Laatst online: 29-11 23:05

DNA_Saint

Go Go Gadget Ondertitel!

Topicstarter
Ik ben momenteel bezig met een registratie formulier in asp.net met C#.
Nu wil ik dat wanneer er op de submit knop wordt geklikt, er gechecked wordt of de username al bestaat.
Ik wil dit doen met de Custom validator.

Maar ik weet dus niet waar ik moet beginnen.
Ik moet een SELECT maken en WHERE username = tb_username.text

Maar hoe moet ik dan verder? Kan iemand mij een schopje in de goede richting geven.

Tutorials op internet gaan in samenwerking met de membership provider/

Huub Huub Barbatruc!


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Zo moeilijk is dat toch niet? Vind je resultaten met je select (ik moet zeggen "een resultaat" want in pricipe vind altijd hooguit 1) dan bestaat er al een gebruiker (melding: in gebruik) en vind je niks dan maak je de/het account.

Wat is je vraag concreet? Wat heb je nu al? Heb je (relevante!) code om te posten?
DNA_Saint schreef op woensdag 19 december 2007 @ 23:29:

Ik moet een SELECT maken en WHERE username = tb_username.text
Denk wel even aan Over het gebruik van Parametrized Queries / SQL injection, maar ik neem aan dat je dit als 'pseudo-code' post?

[ Voor 38% gewijzigd door RobIII op 19-12-2007 23:42 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Het is trouwens niet verstandig om bij een registratie aan te geven dat een username in gebruik is. Gebruik altijd algemene beschrijvingen zoals 'gebruiksnaam is niet mogelijk' welke je terug geeft als hij te kort is, te lang of al in gebruik is.

Alleen aangeven dat een username al in gebruik is betekend dat je een hacker waardevolle informatie geeft. Immers een login bestaat uit username + password. Als hij via de registratie kan achterhalen welke accounts bestaan hoeft hij alleen de wachtwoorden nog maar de kraken. En uit ervaring kan ik zeggen dat gebruikers over het algemeen geen echt moeilijke wachtwoorden gebruiken. Sterker nog 70% gebruikt overal hetzelfde wachtwoord. Dus zowel op websites, computers, mailboxen, etc.

Bij registratie is het dus kunst om niet te veel informatie weg te geven. Het feit dat je op het scherm aangeeft dat de gebruikersnaam 'verkeerd' is is voldoende informatie voor de bezoeker. Immers voor hem maakt het niet uit of hij al bestaat of dat de username te lang is. Hij moet hem toch veranderen.

[ Voor 61% gewijzigd door Niemand_Anders op 20-12-2007 08:37 ]

If it isn't broken, fix it until it is..


  • Face_-_LeSS
  • Registratie: September 2004
  • Niet online
Niemand_Anders schreef op donderdag 20 december 2007 @ 08:31:
Bij registratie is het dus kunst om niet te veel informatie weg te geven. Het feit dat je op het scherm aangeeft dat de gebruikersnaam 'verkeerd' is is voldoende informatie voor de bezoeker. Immers voor hem maakt het niet uit of hij al bestaat of dat de username te lang is. Hij moet hem toch veranderen.
Bij gebruikersnamen komt het over het algemeen niet zo nou. Een gebruikersnaam is vaak openbaar of publiekelijk zichtbaar in applicaties. Tevens is het verschil tussen te lang / te kort / ongeldige karakters / in gebruik / enz. wel degelijk van belang denk ik. Duidelijke begrijpbare foutmeldingen draagt bij aan de gebruiksvriendelijkheid van een systeem.
Uiteraard zijn er tal van uitzonderingen dus de opdrachtgever zal zelf moeten bepalen wat hij/zij wil.
DNA_Saint schreef op woensdag 19 december 2007 @ 23:29:
Maar hoe moet ik dan verder? Kan iemand mij een schopje in de goede richting geven.
Zoek eens op google hoe je naar een database kan connecten vanuit een .net applicatie. En hoe je data op kan halen en verwerken.

  • Eriksk
  • Registratie: December 2003
  • Niet online
Laat maar, heb over je laaste regel heengelezen....

Je verteld niet welke versie je gebruikt, maar vanaf versie 2.0 zou je ook de membership provider kunnen gebruiker. Daarnaast bevat de db ook views mbt userr informatie die je eenvoudig kunt gebruiken en sp's (aspnet_Membership_GetUserByName).

Je moet hiervoor wel de membership enzo geïnstalleerd hebben in je db. (ASPNET_regsql)

[ Voor 9% gewijzigd door Eriksk op 20-12-2007 13:19 ]


  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 28-11 10:02

ThunderNet

Flits!

met asp.net ajax:

Clientside:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    function js_CheckAvailability()
    {
        var uid=document.getElementById('tb_reg_Username').value;
        if(uid=="")
        {
            //alert('Please enter user ID!');
            return false;
        }
        dojo.byId('tb_reg_Username_val').style.backgroundImage="url('images/Working.png')";
        Register.CheckAvailability(uid,js_CheckAvailabilityOnComplete);
       return false;
    }

    function js_CheckAvailabilityOnComplete(result)
    {
        var lblMsg=document.getElementById('tb_reg_Username_val');
        if(result)
        {
            lblMsg.style.backgroundImage="url('images/Ok.png')";
            
        }
        else
        {
            lblMsg.style.backgroundImage="url('images/Warn.png')";
        }
    }


Serverside:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
    [WebMethod]
    public bool CheckAvailability(string uid)
    {
        //Kijken of er al een gebruiker bestaat met deze gebruikersnaam
        MembershipUser user = Membership.GetUser(uid);
        if (user == null)
        {
            return true;
        }
        else
        { return false; }
    }


Dit gebruik ik in een webapplicatie. Gebruikt dus het membership systeem :)

[ Voor 17% gewijzigd door ThunderNet op 20-12-2007 13:23 ]

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


  • sirono
  • Registratie: November 2002
  • Laatst online: 07-08 14:24
in de onvalidate methode:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
string connstring = ConfigurationManager.ConnectionStrings["connectionstringnaam"].ConnectionString;
conn = new OdbcConnection(connstring);
        
OdbcCommand odbccom = new OdbcCommand("select * from users where loginname = '" + this.textboxLoginName.Text + "'", conn);
if (odbccom.Connection.State != ConnectionState.Open)
{
     odbccom.Connection.Open();
}

OdbcDataAdapter da = new OdbcDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = new OdbcCommand(command, conn);
da.Fill(ds);
odbccom.Connection.Close();

if(ds.Tables["Table"].Rows.Count > 0)
{
    username bestaat
}
else
{
    username bestaat nog niet
}


uiteraard is dit een voorbeeld.
deze code is vatbaar voor sql injection.
je mag niet de text vauit het textbox direct in je sql string gooien zonder eerst te controleren of er geen sql query in staat zoals drop table ofzo...

  • DNA_Saint
  • Registratie: Maart 2004
  • Laatst online: 29-11 23:05

DNA_Saint

Go Go Gadget Ondertitel!

Topicstarter
dank je.
Zoals ik in TS als zei wil ik geen membership provider gebruiken, puur omdat er te weinig controle hierover is.

Ik gebruik asp 2.0, maar zal ff naar code van sirono kijken :)

Huub Huub Barbatruc!


  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 28-11 10:02

ThunderNet

Flits!

DNA_Saint schreef op donderdag 20 december 2007 @ 15:18:
dank je.
Zoals ik in TS als zei wil ik geen membership provider gebruiken, puur omdat er te weinig controle hierover is.

Ik gebruik asp 2.0, maar zal ff naar code van sirono kijken :)
Je kunt zelf ook een membership provider maken :) en dan heb je controle genoeg... En in dat geval werkt de bovenstaande code nog steeds :)

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?

Pagina: 1