Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Έλεγχος αν το όνομα χρήστη υπάρχει.

Îåêßíçóå áðü ôï ìÝëïò epp1123. Τελευταία δημοσίευση από το μέλος George J. Capnias στις 25-06-2008, 20:51. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  25-06-2008, 14:28 43062

    Έλεγχος αν το όνομα χρήστη υπάρχει.

    Καταρχάς καλησπέρα. Εύχομαι εκεί που είστε να μην κάνει τόση ζέστη, γιατί εδώ Κρήτη ταλαιπωρούμαστε. Λοιπόν η ερώτηση έχεις ως εξής:

    Έχω μία βάση δεδομένων που βάζω μέσα τους χρήστες. έχω και μία φόρμα για εγγραφή, όχι δεν χρησιμοποιώ το Create User Wizard, ούτε membership ούτε τίποτα (το γιατί είναι πικρή ιστορία). Θέλω να ελέγχω αν το όνομα χρήστη υπάρχει, και θέλω να το ελέγχω όταν ο χρήστης "αφήνει" το UserNameTextBox και πάει να συμπληρώσει την υπόλοιπη φόρμα. Η ερώτηση έχει να κάνει με το ποιος είναι ο καλύτερος τρόπος να το κάνω, και κυρίως λόγω ασφάλειας.

    Η σκέψη ήταν να χρησιμοποιήσω ένα SQLDataSource για να φέρνω τα usernames, αλλά δεν ξέρω πως να τα μαζέψω όλα μαζί για να τα ελέγξω.
    Μία άλλη άλλη λύση ήταν με Script Manager και με Update Panel, αλλά ότι παραδείγματα βρήκα ήταν με το Membership, καιδεν βοήθησε και πολύ.

    Αυτό που θέλω δεν είναι κώδικας, απλά μία ιδέα - σκέψη που θα βοηθούσε
  •  25-06-2008, 16:18 43065 σε απάντηση της 43062

    Απ: Έλεγχος αν το όνομα χρήστη υπάρχει.

    Έγραψα τον παρακάτω κώδικα, και τρέχει, αλλά δεν ξέρω αν είναι ο κατάλληλος από πλευρά ασφάλειας:


    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
    27
    28
    29
    Protected Sub UserNameTextBox_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim GetUserNameDS As New SqlDataSource
    Dim args As New System.Web.UI.DataSourceSelectArguments
    Dim TempTextBox As New TextBox
    Dim TempLabel As New Label
    Dim TempTextParameter As New Parameter


    TempTextBox = FormView1.FindControl("UserNameTextBox")
    TempLabel = FormView1.FindControl("CheckUserNameAvailabilityLabel")

    TempTextParameter.Name = "Text"
    TempTextParameter.DefaultValue = TempTextBox.Text

    GetUserNameDS.ConnectionString = "Data Source=CW-02;Initial Catalog=CarAndBikes;Integrated Security=True"
    GetUserNameDS.SelectCommandType = SqlDataSourceCommandType.Text
    GetUserNameDS.SelectParameters.Add(TempTextParameter)
    GetUserNameDS.SelectCommand = "SELECT [Salers_UserName] FROM [Salers] WHERE EXISTS(SELECT [Salers_UserName] WHERE [Salers_UserName]=@Text)"

    If GetUserNameDS.Select(args).GetEnumerator.MoveNext.ToString = True Then
    TempLabel.ControlStyle.ForeColor = Drawing.Color.Red
    TempLabel.Text = "Το Όνομα Χρήστη χρησιμοποιείται. Παρακαλώ εισάγετε άλλο"

    Else
    TempLabel.ControlStyle.ForeColor = Drawing.Color.Green
    TempLabel.Text = "Το Όνομα Χρήστη είναι διαθέσιμο."
    End If

    End Sub


  •  25-06-2008, 20:51 43076 σε απάντηση της 43065

    Απ: Έλεγχος αν το όνομα χρήστη υπάρχει.

    Δεν θα πρότεινα να γράψεις αυτό το κομμάτι του κώδικα επάνω σε αυτό το event - κάθε φορά που ο χρήστης γράφει ένα γράμμα στο textbox, εσύ θα εκτελείς και ένα query στην βάση σου! Είναι πλεονασμός και κατάχρηση των resources του server σου.

    Θα ήταν προτιμότερο, να χρησιμοποιήσεις ένα custom validator control και να εκτελείς τον κώδικα στον server. Παράλληλα στο commandbutton που κάνει το submit τα δεδομένα, θα εκτελείς τον κώδικα της αποθήκευσης στην βάση εφόσον ισχύει το page.IsValid.

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems