validation φορμας

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

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

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

validation φορμας

Δημοσίευση από Serghio » 09 Ιαν 2013 18:35

Θα ήθελα να ακούσω τι θα πρέπει να λάβω υπόψη όσον αφορά το validation του πεδίου.
Μέχρι τώρα έχω φροντίσει να αφαρείται το whitespace και να απορρίπτονται τηλέφωνα όπου ο αριθμός των ψηφίων είναι άλλος από 7 ή 10(σταθερό ή κινητό δηλαδή).

Τι άλλο λέτε θα πρέπει να λάβω υπόψη;

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

validation φορμας

Δημοσίευση από burnmind » 09 Ιαν 2013 21:49

Στην Ελλάδα, νομίζω πως όλα τα τηλέφωνα (σταθερά και κινητά) έχουν 10 ψηφία. Θα μπορείς να δεχτείς μόνο τηλέφωνα από Ελλάδα; Άλλες χώρες έχουν περισσότερα/λιγότερα νούμερα. Επίσης, υπάρχει και ο κωδικός της χώρας.

Δε νομίζω πως υπάρχει κάτι standard που μπορείς να κάνεις. Κατά τη γνώμη μου, κινείσαι ανάλογα με το πόσο σημαντικός είναι ο αριθμός τηλεφώνου γι' αυτό που φτιάχνεις, αλλά και ανάλογα με το είδος των χρηστών που απευθύνεσαι.

Ένα παράδειγμα είναι το να έχεις ένα field για κωδικό χώρας (μπορεί να είναι και μία drop-down λίστα), και ένα field για το τηλέφωνο, το οποίο δέχεται μόνο νούμερα (μπορείς να αφαιρείς τους υπόλοιπους χαρακτήρες αυτόματα). Βέβαια, κάποιες χώρες έχουν τηλέφωνα με extensions τα οποία έχω δει να τα βάζουν είτε σε παρενθέσεις ή μετά από παύλα στο τέλος, όπως και άλλες "ιδιοτροπίες" τις οποίες αγνοώ.

Άβαταρ μέλους
nirvana
Δημοσιεύσεις: 241
Εγγραφή: 01 Σεπ 2005 18:28
Τοποθεσία: Αγ. Παρασκευή

validation φορμας

Δημοσίευση από nirvana » 09 Ιαν 2013 23:03

Όπως λέει ο burnmind δεν υπάρχει ένας τρόπος. Πρέπει να έχεις υπόψιν σου τι θα φτιάξεις.

Για παράδειγμα αν την εισαγωγή την κάνουν άνθρωποι μπορεί να είναι καλό να είσαι πολύ αυστηρός και να δίνεις 2 υποχρεωτικά πεδία (1 για την χώρα +χχ και ένα για τον αριθμό)
http://en.wikipedia.org/wiki/List_of_co ... ling_codes, ωστε μετά να είναι εύκολο να κάνεις και ένα ωραίο search.

Αν όμως εισάγεις τα τηλέφωνα από άλλη πηγή (π.χ csv) πρέπει να δεχθείς οτι τα δεδομένα θα είναι λίγο σκατένια και να κάνεις τα στραβά μάτια.

Από την άλλη, αν γίνει για παράδειγμα μαζικό data entry και εσύ έχεις υποχρεωτικό κωδικό χώρας (ο οποίος από το πρωτότυπο τηλέφωνο μπορεί να μην είναι προφανής), μπορεί να έχεις 2 κακά. a) θα αργεί πολύ η διαδικασία και b) μπορεί οι χρήστες να βαρεθούν να ψαχνουν και να καταλήξεις να έχεις 1000αδες τηλέφωνα με κωδικό χώρας το Afghanistan :)

Άβαταρ μέλους
charavge
Δημοσιεύσεις: 378
Εγγραφή: 14 Σεπ 2006 15:47

validation φορμας

Δημοσίευση από charavge » 10 Ιαν 2013 01:28

Εμένα δε μου αρέσει καθόλου μα καθόλου όταν προσπαθούν να με περιορίσουν!

Η φόρμα επικοινωνίας είναι μία φόρμα που θα χρησιμοποιήσεις εσύ ο high-tech, αλλά και κάποιος που μόλις καταφέρνει να πατήσει το μπλε κουμπάκι που γράφει Internet και να γράψει 2-3 πραγματάκια (πίστεψέ με δεν καταλαβαίνει πολλά από αυτά που βλέπει μπροστά του).

Ο σκοπός της φόρμας επικοινωνίας είναι για να μπορέσει ένας χρήστης να αποκτήσει πρόσβαση σε μια πληροφορία. Είτε είναι για ένα προϊόν, είτε για μια υπηρεσία, είτε για οποιοδήποτε άλλο λόγο. Σωστά;

Για παράδειγμα, άμα ζητήσεις το τηλέφωνο στη φόρμα, κάποιος μπορεί να σου γράψει μόνο το νούμερο χωρίς τον κωδικό της πόλης. Χάλασε ο κόσμος; Έτσι έμαθε και το θεωρεί σωστό. Μάλλον, είναι σωστό! Σε άλλες πόλεις έχουν 7ψήφια νούμερα, σε άλλες 5ψήφια κ.ο.κ. Αν αρχίζεις και βάζεις περιορισμούς, κάνεις τη ζωή του δύσκολη. Μπορεί εκείνη τη στιγμή να μην καταλάβει το "λάθος" του.
Δεν είναι ΑΦΜ να απαιτεί απόλυτα 9 ψηφία και να είναι απόλυτα αριθμητικό.

Τι γίνεται αν δε γράψω τον κωδικό πόλεως, ή αν δεν έχω τηλέφωνο και βάλω '-', ή αν το αφήσω κενό; Μου απαγορεύεις να επικοινωνήσω με αυτό το άτομο και να φτάσω στην πληροφορία που θέλω. Ή για να φτάσω στην πληροφορία θα με αναγκάσεις να πω ψέματα και να πληκτρολογήσω π.χ. 1234567890... Με οδηγείς στο λάθος!

Όταν αρχίζεις και βάζεις περιορισμούς, δημιουργείς εμπόδια.

Για ποιο λόγο γίνεται ένας έλεγχος σε μια φόρμα;
Εγώ νομίζω για 2 λόγους:
1) λόγους ασφαλείας και να αποφύγεις το SPAM,
2) λόγους σωστής συμπλήρωσης (υποβοήθηση).

Προτείνω να ελέγξεις το e-mail αν είναι σωστά γραμμένο (αν και πάλι μπορεί να βάλει asdfghj@dfgh.as και να περάσει...), να ελέγξεις αν είναι συμπληρωμένο το κείμενο (γιατί αλλιώς ποιος ο λόγος να σου στείλει μέσω της φόρμας ένα κενό μήνυμα;), έστω αν έχεις απαίτηση κάποιο στοιχείο επικοινωνίας να συμπληρώσει τουλάχιστον ένα από τα δύο πεδία (e-mail ή τηλέφωνο).

Γνώμη μου, απέφυγε τις υπερβολές. Είναι αιτία τέτοια πράγματα και δε χρησιμοποιώ online υπηρεσίες. Μπορώ να σου πω με σιγουριά ότι δεν έχω αγοράσει προϊόντα/υπηρεσίες γιατί με εκνεύρισε κάτι που μπορούσα να το κάνω τρομερά απλά και μου το έκαναν τρομερά σύνθετο. Προτίμησα να παραγγείλω από αλλού ή αν δεν είχα εναλλακτική να σηκώσω το τηλέφωνο και να κάνω την παραγγελία.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

validation φορμας

Δημοσίευση από Apostolis_38 » 10 Ιαν 2013 10:37

Το τηλέφωνο είναι πολλές φορές σημαντικό πεδίο γιατί έτσι μπορείς άμεσα να ελέγξεις αν αυτός που καταχώρησε τα στοιχεία είναι αυτός που λέει.
Και μπορεί στα γραπτά ή στα προφορικά να χρησιμοποιείς παύλες παπάκια και τιγράκια αλλά στο καντράν πατάς μόνο νούμερο και τίποτε άλλλο. Και ούτε παραλείπεις κωδικούς πόλεων και συνοικιών γιατί αλλιώς δε θα μιλήσεις ποτέ.

Τσέκαρε οτι δεν έχει βάλει κάποιος χαρακτήρες (is_numeric), κόψε κενά (trim) και βάλε ένα υπόμνημα δίπλα οτι εγώ το τηλέφωνο το θέλω σε αυτή τη μορφή.
Για να φτάσει κάποιος στο σημείο να βάλει το πραγματικό του τηλέφωνο σημαίνει οτι δεν θα κωλώσει στο να το καταχωρήσει σωστά. Δηλαδή θα έβαζε δραχμές σε πεδίο που απαιτούνται δολάρια για να αγοράσει κάτι;

Κράτα μια συγκεκριμένη μορφοποίηση για να μην χάσεις αργότερα την μπάλα.
Βάλε υποχρεωτικό τον κωδικό χώρας (τον οποίο μπορείς να τον παρέχεις εσύ από λίστα) και άσε κυμαινόμενο μόνο το μήκος του αριθμού, ο οποίος και πάλι πρέπει να έχει ελάχιστο και μέγιστο αριθμό ψηφίων. Σε όλο τον κόσμο δεν υπάρχει ούτε 3ψήφιο ούτε 20αψήφιο τηλέφωνο.

Λίγη προσοχή σε τι τύπου πεδίο θα καταχωρείς το τηλέφωνο.
Μην βάζει ο άλλος 00302108975641 κι εσύ καταχωρείς 152.

Άβαταρ μέλους
charavge
Δημοσιεύσεις: 378
Εγγραφή: 14 Σεπ 2006 15:47

validation φορμας

Δημοσίευση από charavge » 10 Ιαν 2013 12:21

Apostolis_38 έγραψε:Το τηλέφωνο είναι πολλές φορές σημαντικό πεδίο γιατί έτσι μπορείς άμεσα να ελέγξεις αν αυτός που καταχώρησε τα στοιχεία είναι αυτός που λέει.
Και μπορεί στα γραπτά ή στα προφορικά να χρησιμοποιείς παύλες παπάκια και τιγράκια αλλά στο καντράν πατάς μόνο νούμερο και τίποτε άλλλο. Και ούτε παραλείπεις κωδικούς πόλεων και συνοικιών γιατί αλλιώς δε θα μιλήσεις ποτέ.
Έχεις απόλυτο δίκιο και με βρίσκεις σύμφωνο!
Αναφέρομαι σε μία γενική περίπτωση. Δε γνωρίζω τον τύπο των υπηρεσιών που θα αναφέρεται η συγκεκριμένη σελίδα. Θα μπορούσε να αφορά π.χ. καθαρά τοπικές υπηρεσίες. Απλώς, θα μπορούσε να προαπαιτεί τη συμπλήρωση τουλάχιστον ενός από των δύο (e-mail - τηλέφωνο). Είναι άλλος που δε θέλει να δίνει το προσωπικό του τηλέφωνο. Εγώ προσωπικά τουλάχιστον δε θα το έκανα, παρά μόνο σε ειδικές περιπτώσεις. Έτσι, προτιμώ να δίνω το e-mail μου.
Τώρα, για να με ενδιαφέρει να πάρω μία πληροφορία, αναγκαστικά πρέπει να δώσω ένα έγκυρο στοιχείο επικοινωνίας. Αν επιλέξω να είναι το τηλέφωνο, όπως σωστά σκέφτηκες, δε θα γράψω κάτι άκυρο!

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

Φίλε Serghio, αυτό που πρέπει να κάνεις, είναι να σκέφτεσαι όλα τα σενάρια:
"Αν ο χρήστης συμπληρώσει το πεδίο έτσι τι θα γίνει; Πώς μπορώ να το αποτρέψω;"
"Αν ο χρήστης συμπληρώσει το πεδίο αλλιώς τι θα γίνει;"

Αυτό νομίζω θα σε οδηγήσει τελικά στο να επιλέξεις τι θα κάνεις.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

validation φορμας

Δημοσίευση από Apostolis_38 » 10 Ιαν 2013 12:43

charavge έγραψε:Εγώ αυτό που τονίζω είναι να κάνουμε τη ζωή του χρήστη εύκολη.
Αυτό, συν το να κάνουμε και τη δική μας ζωή εύκολη είναι, κατά τη γνώμη μου, το ζουμί.
Το τι εφαρμογή θα στήσουμε πρέπει να έχει γνώμονα αυτά τα δύο.
Ούτε "ο πελάτης έχει πάντα δίκιο", ούτε "να κόψει το λαιμό του να κάνει οτι λέω".

Άβαταρ μέλους
charavge
Δημοσιεύσεις: 378
Εγγραφή: 14 Σεπ 2006 15:47

validation φορμας

Δημοσίευση από charavge » 10 Ιαν 2013 13:51

Πρόσεξε, γιατί πέφτεις στην παγίδα που πέφτουν οι περισσότεροι.
Οποιαδήποτε εφαρμογή στήνουμε, οφείλουμε να τηρήσουμε κάποιους κανόνες. Σίγουρα συμφωνούμε ότι δεν είναι σωστό ο χρήστης "να κόψει το λαιμό του να κάνει ό,τι λέω εγώ".

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

Στις περισσότερες περιπτώσεις το κοινό μας είναι ευρύ. Για αυτό έχουν θεσπιστεί κανόνες χρηστικότητας οι οποίοι μας βοηθούν να κατανοήσουμε αυτό το ευρύ κοινό. Όπως γράφει και ο giannis17 στην υπογραφή του: "There is only one problem with common sense; it’s not very common."
Αυτό σημαίνει ότι αυτό που για εσένα είναι δεδομένο, δε μπορείς να περιμένεις να είναι και για τον άλλο. Πρέπει να σκεφτείς ότι πιθανόν ο χρήστης σου να μην έχει ξαναδεί ποτέ στη ζωή του μία φόρμα επικοινωνίας. Προσοχή! Δε λέω να απευθύνεται σε όλο τον κόσμο, γιατί απλά δε γίνεται (μην παρεξηγηθώ).

Πολλές φορές μπαίνουμε στη διαδικασία να εντυπωσιάσουμε, να χρησιμοποιήσουμε νέες τεχνολογίες, να προσθέσουμε εφέ, ή να καθορίσουμε εμείς τι είναι "σωστό", χάνοντας έτσι την ουσία που είναι να φτιάξω κάτι λειτουργικό για το χρήστη που απευθύνομαι. Δυστυχώς ισχύει "ο χρήστης έχει πάντα δίκιο". Για αυτό πρέπει να σκεφτείς όλα τα πιθανά σενάρια, ώστε να μειώσεις τον κίνδυνο αποτυχίας του προϊόντος σου. Αλλιώς το προϊόν σου δεν εξυπηρετεί τις ανάγκες του κοινού σου με αποτέλεσμα να αποτύχει, αλλά αντίθετα ικανοποιεί την ψευδαίσθησή σου ότι αυτό που έκανες είναι "ουάου".
Είναι, ξαναλέω, ο λόγος που εγώ προσωπικά δεν έχω κάνει αγορές υπηρεσιών ή προϊόντων.

Σκέψου δικές σου περιπτώσεις (όχι απαραίτητα ιστοσελίδας) που δε σε έχει ικανοποιήσει ο τρόπος λειτουργίας ενός προϊόντος ή υπηρεσίας και δεν το αγόρασες.

Υ.Γ. Η δική μας ζωή είναι από τη φύση της δύσκολη :wink:

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

validation φορμας

Δημοσίευση από Serghio » 11 Ιαν 2013 09:43

Apostolis_38 έγραψε:Το τηλέφωνο είναι πολλές φορές σημαντικό πεδίο γιατί έτσι μπορείς άμεσα να ελέγξεις αν αυτός που καταχώρησε τα στοιχεία είναι αυτός που λέει.
Πως μπορεί να γίνει αυτό δηλαδή; Κανένα παράδειγμα;
Apostolis_38 έγραψε: Τσέκαρε οτι δεν έχει βάλει κάποιος χαρακτήρες (is_numeric),...
Από ότι παρατήρησα το numeric, ακόμα και το e(exponential δηλαδή) το θεωρεί ψηφίο.
Μηπώς δεν είναι η καλύτερη λύση να χρησιμοποιήσω το is-numeric αλλά κάποιο regular expression.
Bέβαια τώρα θα μου πεις ποιες είναι οι πιθανότητες να εισάγει ο αλλος e.
Apostolis_38 έγραψε: Κράτα μια συγκεκριμένη μορφοποίηση για να μην χάσεις αργότερα την μπάλα.
Moρφοποιήση, όπως;
Apostolis_38 έγραψε:Λίγη προσοχή σε τι τύπου πεδίο θα καταχωρείς το τηλέφωνο.
Μην βάζει ο άλλος 00302108975641 κι εσύ καταχωρείς 152.
Aυτό δεν το κατάλαβα.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

validation φορμας

Δημοσίευση από Apostolis_38 » 11 Ιαν 2013 09:58

- ένα τηλεφώνημα υπόθεση είναι.

- μάλλον κάτι λάθος κάνεις. Εμένα μου δουλεύει μια χαρά το is_numeric. Για την ακρίβεια το

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

if(!is_numeric(μεταβλητή))
.
Φαντάζομαι όμως οτι και με ένα σωστό regural expression θα κάνεις δουλειά.

- όποια νομίζεις εσύ. Το θέμα είναι να μην έχεις άλλο τηλέφωνο σαν 5987456, άλλο σαν 00302105987456, άλλο σαν 210-5987456 κ.λ.π.
Οταν αυξηθούν οι εγγραφές θα χάσεις τη μπάλα.

- αν το πεδίο είναι κάποιου αριθμητικού τύπου και ο αριθμός των ψηφίων πλησιάζει το μέγιστο επιτρεπόμενο όριο ψηφίων υπάρχει η περίπτωση να σου αλλοιώσει το νούμερο που καταχωρήθηκε. Εγώ προσωπικά χρησιμοποιώ varchar για τηλέφωνο και fax.

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

validation φορμας

Δημοσίευση από Serghio » 11 Ιαν 2013 11:37

Apostolis_38 έγραψε: - όποια νομίζεις εσύ. Το θέμα είναι να μην έχεις άλλο τηλέφωνο σαν 5987456, άλλο σαν 00302105987456, άλλο σαν 210-5987456 κ.λ.π.
Οταν αυξηθούν οι εγγραφές θα χάσεις τη μπάλα.
Aυτά με προβληματίζουν-τις πάυλες τις αφαιρώ με regular expression-δεν υπάρχει πρόβλημα μα αυτές.
Τα άλλα όμως.
Ας πουμε ότι έχουμε τα εξής νούμερα:
00 210 57 54 879
210 57 54 879

Τι να κάνω σε ένα σενάριο σαν το παραπάνω ώστε να μην γίνει μπάχαλο η βάση;
Θα μπορούσε να πει κάποοιος ότι αφαιρώ τα μηδενικά μπροστά-αν όμως χρειάζονται για κάποιο λόγο;

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

validation φορμας

Δημοσίευση από Apostolis_38 » 11 Ιαν 2013 12:00

Η is_numeric πιάνει τα ενδιάμεσα κενά γιατί και αυτά είναι στην ουσία χαρακτήρες.
Το ίδιο και τις παύλες.
Φαντάζομαι οτι και με ένα σωστό regular expression μπορεί να γίνει κάτι τέτοιο.

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

Απάντηση

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

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

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