ελεγχοντας αν υπάρχει υφιστάμενο e-mail στην βάση

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Serghio
Δημοσιεύσεις: 452
Εγγραφή: 08 Φεβ 2011 19:20
Τοποθεσία: Περιστέρι

ελεγχοντας αν υπάρχει υφιστάμενο e-mail στην βάση

Δημοσίευση από Serghio » 14 Ιούλ 2015 11:19

Προσπαθω να φτιάξω κωδικα ώστε να ελέγχεται αν το email που πάει να καταχωρήσει ο χρήστης υπάρχει ήδη στην βάση....η λογική ειναι η εξής:

Με κάθε keystroke γινονται ajaxrequest σε ένα PHP script που εκτελεί αυτον τον έλεγχο...

Μήπως όμως αυτό είναι inefficient καθώς συνεπάγεται πολλά ajax requests και αρα overhead;

Τι εναλλακτικό έχεται να προτείνετε;

Μετα ειναι και το άλλο...μηπως με το να ενημερώνω τον χρήστη οτι υπάρχει ήδη τέτοιο mail στην βάση παραβιάζω την ιδιωτικότητα του άλλου χρήστη;

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

ελεγχοντας αν υπάρχει υφιστάμενο e-mail στην βάση

Δημοσίευση από Khronos » 14 Ιούλ 2015 15:41

Μπορείς να βάλεις ένα κουμπί "check" δίπλα στο email. Όταν τελειώσει ο χρήστης το πατάει και κάνεις ενα ajax request.

Όσον αφορά την ιδιωτικότητα δεν νομίζω οτι υπάρχει τέτοιο θέμα.

Serghio
Δημοσιεύσεις: 452
Εγγραφή: 08 Φεβ 2011 19:20
Τοποθεσία: Περιστέρι

ελεγχοντας αν υπάρχει υφιστάμενο e-mail στην βάση

Δημοσίευση από Serghio » 14 Ιούλ 2015 16:41

γνωρίζεις κανένα γνωστό site που να υλοποιεί αυτό που περιγράφεις;

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

ελεγχοντας αν υπάρχει υφιστάμενο e-mail στην βάση

Δημοσίευση από burnmind » 14 Ιούλ 2015 21:29

Δε χρειάζεται να κάνεις έλεγχο κάθε φορά που ο χρήστης πληκτρολογεί έναν χαρακτήρα. Μπορείς πχ να το κάνεις μία φορά μόλις κάνει unfocus (blur) από το input element, να βάλεις περιορισμούς (π.χ. να είναι valid το email), ή να "περιμένεις" να σταματήσει να γράφει.

Το παρακάτω είναι ένα απλό παράδειγμα που εκτελεί μία checkEmail function μόνο όταν το email είναι valid (δε ξέρω τι browser support έχει αυτό που έγραψα) και αφότου ο χρήστης σταματήσει να πληκτρολογεί για 1 δευτερόλεπτο:

Κώδικας: Επιλογή όλων

$( document ).ready(function() {
    var timeout = null;
    
    $('#email').on('keyup', function() {
        clearTimeout(timeout);
        
        if ($(this).is(':valid')) {
            timeout = setTimeout(checkEmail, 1000);
        }
    });
});

function checkEmail() {
    console.log('checked email');
}
JSFiddle

Serghio
Δημοσιεύσεις: 452
Εγγραφή: 08 Φεβ 2011 19:20
Τοποθεσία: Περιστέρι

ελεγχοντας αν υπάρχει υφιστάμενο e-mail στην βάση

Δημοσίευση από Serghio » 15 Ιούλ 2015 11:12

εκανα κάτι άλλο τελικά...ο έλεγχος θα γινεται όταν ο χρήστης κάνει κλικ στο submit button...τι λέτε...νομίζω ότι είναι ΟΚ.

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

ελεγχοντας αν υπάρχει υφιστάμενο e-mail στην βάση

Δημοσίευση από burnmind » 15 Ιούλ 2015 12:48

Αυτό θα κάνεις ούτως ή άλλως (server-side) αφότου γίνει submit η φόρμα, ακόμα και αν επιλέξεις κάποιον τρόπο ώστε να γίνεται έλεγχος και πιο πριν για ευκολία του χρήστη.

Serghio
Δημοσιεύσεις: 452
Εγγραφή: 08 Φεβ 2011 19:20
Τοποθεσία: Περιστέρι

ελεγχοντας αν υπάρχει υφιστάμενο e-mail στην βάση

Δημοσίευση από Serghio » 15 Ιούλ 2015 20:59

burnmind έγραψε:Αυτό θα κάνεις ούτως ή άλλως (server-side) αφότου γίνει submit η φόρμα, ακόμα και αν επιλέξεις κάποιον τρόπο ώστε να γίνεται έλεγχος και πιο πριν για ευκολία του χρήστη.
Aυτο δεν το κατάλαβα....ο έλεγχος δεν μπορεί εκ των πραγματων να γινει client-side γιατί για να ελεχθεί αν το e-mail ήδη υπάρχει στην βάση πρέπει να γινει συνδεση με τον server.

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

ελεγχοντας αν υπάρχει υφιστάμενο e-mail στην βάση

Δημοσίευση από burnmind » 15 Ιούλ 2015 21:37

Πες ότι επέλεγες μία λύση όπως αυτές που προτείναμε με τον Khronos. Τέτοιες λύσεις, συνήθως (αν όχι πάντα) υλοποιούνται απλά για να γίνουν τα πράγματα πιο εύκολα/γρήγορα για τους χρήστες.

Στην περίπτωσή σου, μπορεί να επικοινωνείς με τον server εκείνη τη στιγμή για να το check-άρεις, αλλά έπειτα (όταν δηλαδή γίνει το submit) δε ξέρεις αν αυτό που σου απάντησε έχει αλλάξει, αν το έχει πειράξει ο χρήστης, κλπ.

Οπότε, θεώρησέ το client-side validation (=αναξιόπιστο) και κάνε πάντα το σωστό και απαραίτητο server-side validation αφότου γίνει το submit.

Με τον τρόπο που απάντησες ("εκανα κάτι άλλο τελικά...ο έλεγχος θα γινεται όταν (...)") μου έδωσες να καταλάβω πως θα έκανες είτε το ένα ή το άλλο, γι' αυτό και η παραπάνω εξήγηση.

Serghio
Δημοσιεύσεις: 452
Εγγραφή: 08 Φεβ 2011 19:20
Τοποθεσία: Περιστέρι

ελεγχοντας αν υπάρχει υφιστάμενο e-mail στην βάση

Δημοσίευση από Serghio » 16 Ιούλ 2015 09:26

burnmind έγραψε: Στην περίπτωσή σου, μπορεί να επικοινωνείς με τον server εκείνη τη στιγμή για να το check-άρεις, αλλά έπειτα (όταν δηλαδή γίνει το submit) δε ξέρεις αν αυτό που σου απάντησε έχει αλλάξει, αν το έχει πειράξει ο χρήστης, κλπ.
Κάτι παρεξήγησες...είπα οτι ο έλεγχος θα γινεται με το submit...οπότε αποκελείεται να το έχει αλλάξει ο χρήστης...
burnmind έγραψε: Οπότε, θεώρησέ το client-side validation (=αναξιόπιστο) και κάνε πάντα το σωστό και απαραίτητο server-side validation αφότου γίνει το submit.
Καταρχην δεν είπα να μην κάνω server-side validation...εννοείται πως θα κάνω.

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

ελεγχοντας αν υπάρχει υφιστάμενο e-mail στην βάση

Δημοσίευση από burnmind » 16 Ιούλ 2015 12:16

Εξήγησα ήδη για ποιο λόγο έγραψα τα παραπάνω στην τελευταία πρόταση του τελευταίου μηνύματός μου. Επίσης, ολόκληρο το παράδειγμα που αναφέρω βασίζεται στην περίπτωση που "επιλέξεις" (όχι εσύ συγκεκριμένα, θεωρητικό παράδειγμα είναι) να υλοποιήσεις μία από τις λύσεις που προτείναμε με τον Khronos (βλέπε πρώτη πρόταση του μηνύματος).

Όπως και να 'χει, το server-side validation δεν είναι για όλους αυτονόητο. Αντιθέτως, είναι ένα concept που πάρα πολλοί που ανακαλύπτουν το client-side validation αγνοούν, οπότε καλό είναι να υπάρχει η εξήγηση ώστε να διαβαστεί στο μέλλον από κάποιον που θέλει να δημιουργήσει κάτι παρεμφερές και καταλήξει να διαβάζει αυτό το thread. :)

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες