server vs client side validation

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

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

Απάντηση
Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

server vs client side validation

Δημοσίευση από korgr » 03 Δεκ 2012 13:57

Θυμάμαι παλιά (τόσα ήξερα τόσα έκανα) που όλο το validation των φορμών το εξαντλούσα στο επίπεδο του client side (js).
Μετά κατάλαβα πόσο σημαντικό είναι το server side validation (με php στην περίπτωσή μου), και μπήκα στην εποχή του server + client side.

Τελικά σταδιακά εγκατέλειψα το client side validation (εκτός εξειδικευμένων περιπτώσεων) και εφάρμοζα το server side validation διατηρώντας τις τιμές των πεδίων από request σε request.
Φυσικά και τις ajax μεθόδους τις εντάσσω στο server side validation.

Χθες βοηθούσα μια φίλη μου δικηγόρο να κάνει εγγραφή σε κάποια υπηρεσία.
Δεν μπορούσε να βρει διαθέσιμο username οπότε σε κάθε προσπάθεια (υπήρχε μόνο server side validation), έπρεπε να συμπληρώνει ξανά και ξανά το pass & το pass confirm.

Όταν το είδα της λέω βάζε μόνο username και όταν πάρεις ως σφάλμα μόνο το password, τότε την επόμενη φορά που θα ξέρεις πως έχεις βρει διαθέσιμο username βάζεις και τα passwords και καθαρίζεις!
Σίγουρα αν υπήρχε ajax validation στο onblur του πεδίου θα ήταν το βέλτιστο. Παρ' όλα αυτά η απουσία του client side validation αποδείχθηκε με αυτό το τρικ πολύ πιο εργονομική!

Εσείς τι μεθόδους προτιμάτε και γιατί;

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

server vs client side validation

Δημοσίευση από burnmind » 03 Δεκ 2012 16:04

Το server-side validation πρέπει να υπάρχει παντού και πάντα.

Από εκεί και πέρα, το validation μέσω JavaScript είναι βολικό και για τον server (συνήθως γλυτώνεις requests), και για τον χρήστη (δε χρειάζεται να περιμένει για το reload κλπ), αλλά ούτε εγώ το χρησιμοποιώ συνέχεια. Ανάλογα το τι βολεύει για το εκάστοτε project.

Για παράδειγμα, αν το username δεν είναι το email, είναι βολικό για τον χρήστη ένα check καθώς πληκτρολογεί για το αν είναι ελεύθερο ή όχι. Θα του γλύτωνε όλη τη φασαρία στο παράδειγμα που έγραψες, όπως άλλωστε αναφέρεις κι εσύ.

Το ίδιο και για το password (αν πχ πρέπει να είναι συγκεκριμένου μεγέθους και πρέπει να περιέχει συγκεκριμένο είδος χαρακτήρων).

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

server vs client side validation

Δημοσίευση από gvre » 03 Δεκ 2012 18:55

Οπωσδήποτε server side validation. Το client side βοηθάει αρκετά σε θέματα ευχρηστίας. Σε περιπτώσεις όπως αυτές που αναφέρεις είναι must, ειδικά σε εμπορικά sites.

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

server vs client side validation

Δημοσίευση από jpk » 04 Δεκ 2012 21:20

Είναι ενδιαφέρον θέμα korgr αυτό που άνοιξες, καθώς σχετίζεται με πολλά άλλα και η ανταλλαγή απόψεων πάντα καλή είναι. Για εμένα με τίποτα δεν υπάρχει σύγκριση μεταξύ client side validation και server side (άρα δεν θα μπορούσε να υπάρξει και vs) γιατί είναι δύο τελείως διαφορετικά πράγματα.

Το server side validation είναι απόλυτα απαραίτητο για την ακεραιότητα του μοντέλου και ας έχεις να κάνεις μόνο με μια web εφαρμογή που λαμβάνει δεδομένα υποτίθεται από δικό σου UI (κανένας δεν εξασφαλίζει ότι τα δεδομένα δεν στα στέλνει κάποιος με curl ή ακόμα και με ποιο περίτεχνες μεθόδους).

Το client side validation έχει να κάνει με το πώς έχεις οργανώσει το User Interface σου και τι λειτουργικότητες θέλεις να έχει. Δεν είναι απαραίτητο προγραμματιστικά αλλά σίγουρα βοηθά τον χρήστη της εφαρμογής σου.

Τείνω να υποστηρίζω ότι ͘ σχεδόν ότι ελέγχεται server side πρέπει να ελέγχεται πρώτα client side, και περαιτέρω να υπάρχει διαδραστικότητα μεταξύ του UI και των δεδομένων που εισάγει ο χρήστης (ένα απλό τέτοιο παράδειγμα είναι τα textarea που επιτρέπεις συγκεκριμένο αριθμό χαρακτήρων).

Το πράγμα μπερδεύεται λίγο όταν συνδέεις αυτή την διαδραστικότητα του UI με AJAX calls.
burnmind έγραψε:Για παράδειγμα, αν το username δεν είναι το email, είναι βολικό για τον χρήστη ένα check καθώς πληκτρολογεί για το αν είναι ελεύθερο ή όχι.
Και που ξέρεις ότι θα πληκτρολογήσει και δεν θα πατήσει ένα paste? Θα ήταν πολύ απλά αν το onchange λειτουργούσε έτσι όπως υποδηλώνει το όνομα του JS event αλλά δεν λειτουργεί έτσι. Και πέρα από αυτό , ακόμα και αν πληκτρολογεί κάποιος , θα κάνεις AJAX call για κάθε γράμμα που πατάει ή κάθε delete ;

Φυσικά και όχι για αυτό χρειάζεσαι ένα listener που θα ενεργοποιείτε στο focus του πεδίου και θα απενεργοποιείται στο blur. Θα τρέχει κάθε x micro seconds και σίγουρα όταν σταματά να ακούει. Αυτός ο listener αν βρει την τιμή του πεδίου διαφορετική από αυτή που έχει ήδη επαληθεύσει θα κάνει AJAX call για να επαληθεύσει την νέα.

Για να είμαι ειλικρινής η θεωρία διαφέρει από την πράξη. Υπάρχουν περιπτώσεις μετά από αλλεπάλληλα διαφορετικά demands στο admin UI μιας εφαρμογής δεν βάζω client side validation, ας το φάει το server side validation αφού στείλει τα δεδομένα του …

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

server vs client side validation

Δημοσίευση από burnmind » 04 Δεκ 2012 23:00

@jpk: Για την ιστορία, δεν ανέφερα/ανέλυσα κάποια τεχνική υλοποίησης του συγκεκριμένου feature. Το μόνο που έκανα είναι να αναφέρω στα γρήγορα ένα γενικό παράδειγμα για ένα feature που μπορεί να υπάρχει σε ένα υποτιθέμενο UI. :wink:

Από εκεί και πέρα, (βγαίνουμε λίγο off-topic αλλά είναι ενδιαφέρουσα συζήτηση), το αν θα πληκτρολογήσει ή αν θα κάνει paste, το λύνεις με κάτι όπως αυτό (πολύ πρόχειρο παράδειγμα): http://jsfiddle.net/ht3Rm/

Για να γλυτώσεις requests, μπορείς να προσθέσεις ένα μικρό delay στο search (νομίζω έχω δει κάπου και σχετικό jQuery plugin) ώστε να ψάξεις μόλις ο χρήστης σταματήσει να -ή απλά διστάσει καθώς- πληκτρολογεί. Αυτό στο μέτρο του δυνατού πάντα, καθώς είναι πιθανό να σου ξεφύγουν μερικά requests αν ο χρήστης γράφει αργά ή... διστάζει πολύ. Επίσης, αυτονόητο αλλά θα το αναφέρω, δεν αρχίζεις να ψάχνεις παρά μόνο μετά από το minimum αριθμό χαρακτήρων που πρέπει να περιέχει το username. Εννοείται επίσης πως κρατάς κάπου αυτά για τα οποία ήδη έψαξες (όπως ανέφερες κι εσύ).

Σημείωση: Δεν έχει τύχει να υλοποιήσω το συγκεκριμένο feature σε κάποιο project, οπότε όλα τα παραπάνω είναι καθαρά θεωρητικά.

billiaswhs
Δημοσιεύσεις: 346
Εγγραφή: 11 Νοέμ 2004 00:29
Επικοινωνία:

server vs client side validation

Δημοσίευση από billiaswhs » 05 Δεκ 2012 05:27

Γενικά το να κάνεις ajax calls validation και client vaildation είναι
απαραίτητο σε περιπτώσεις όπως είναι οι φόρμες εγγραφής
register forms οι χρήστες όσο περνάει ο καιρός όλο είναι
και πιο ανυπόμονοι, ανεξαρτήτα αν μπορείς ή οχι να γλυτώσεις
τα πολλά ajax calls.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

server vs client side validation

Δημοσίευση από korgr » 05 Δεκ 2012 08:39

Χαίρομαι που ακούγονται πολλές απόψεις.
Πράγματι δεν υπάρχει vs, το έγραψα απλά για να τονίσω το λάθος που έκανα και εγώ στα πρώτα μου βήματα. Δηλαδή πως θα μπορούσε το client side να αντικαταστήσει το server side validation.

Κυρίως όμως άνοιξα το θέμα, γιατί εκτός από την άποψη που καταθέτουν έμπειρα μέλη της κοινότητας, πιθανόν να το διαβάζουν και πιο άπειρα και να τους βοηθούμε να γλυτώσουν κάποια λάθη που κάποιοι κάναμε στο παρελθόν.

Όλοι ως μαθητές ξεκινάμε, και μαθητές παραμένουμε (αεί διδασκόμενοι).
Η διαφορά είναι πως στην αρχή είναι απλή και βασική η ύλη και μετά γίνεται πιο advanced. Αυτή είναι και η γοητεία της πληροφορικής, απολαμβάνεις πάντα το ταξίδι, και ανανεώνεις συνεχώς τους προορισμούς :)

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

server vs client side validation

Δημοσίευση από jpk » 06 Δεκ 2012 15:47

Η αλήθεια είναι ότι και να κάνεις στο UI validation ο χρήστης θα βρει τρόπο να κάνει την βλακεία. Αυτό δεν σημαίνει ότι δεν πρέπει να κάνεις το παν για να βελτιστοποιήσεις την εμπειρία χρήσης της εφαρμογής σου αλλά σίγουρα πρέπει να είσαι προσεκτικός όταν «σκάνε» προβλήματα σε αυτόν τον τομέα και να επιβεβαιώνεις την ακολουθία από την αρχή.

Χρόνια τώρα σκέφτομαι μια ιδέα στο UI validation που θα ήθελα να μοιραστώ μαζί σας . Σίγουρα δεν είναι δικιά μου αλλά καθώς δεν θυμάμαι που την έχω ακούσει δεν μπορώ να σημειώσω παραπομπή. Έχουν βγάλει πολλές ανοησίες σε USB , π.χ. σκουπάκι για το πληκτρολόγιο ή βάση που ζεσταίνει καφέ.

Σκεφτείτε ένα μηχανικό χέρι συνδεδεμένο με USB (κολλημένο να μην μπορεί να το βγάλει ο χρήστης) , όταν κάνει το ίδιο λάθος δεύτερη φορά στο UI να μην βγάζεις μήνυμα απλά να του ρίχνει σφαλιάρα ….

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

server vs client side validation

Δημοσίευση από korgr » 06 Δεκ 2012 15:52

χαχαχα κάπου νομίζω το είδα σε ξυπνητήρι :)

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

server vs client side validation

Δημοσίευση από alou » 06 Δεκ 2012 17:26

Θα χρειαστεί μια παραμετροποίηση μόνο, σε .gr domain το action να είναι μούντζα αντί για σφαλιάρα :D

Πριν φτάσουμε σε αυτό το σημείο όμως, για το client side validation, χρησιμοποιείτε κάποιο library / jquery plugin κλπ? Από όσα έχω κατά καιρούς χρησιμοποιήσει, ποτέ δεν έμεινα απόλυτα ικανοποιημένος.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

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

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