Τι συμβαίνει όταν κάποιος στέλνει μια φόρμα

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

Πρόχειρο

Τι γίνεται σε εκείνο το ένα δευτερόλεπτο αφού κάποιος πατήσει αποστολή στη φόρμα σου; Οι περισσότεροι δεν το σκέφτονται ποτέ. Η αποστολή φόρμας είναι αόρατη για τους επισκέπτες σου, αλλά είναι τα πάντα για τα συστήματά σου. Τη στιγμή που κάποιος πατά αποστολή, ξεκινά μια αλυσίδα γεγονότων που οι περισσότεροι δεν βλέπουν ποτέ. Τα δεδομένα σου ελέγχονται, κωδικοποιούνται, ταξιδεύουν, παραλαμβάνονται, επεξεργάζονται και αποθηκεύονται.

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

Τι είναι η αποστολή φόρμας

Η αποστολή φόρμας είναι η διαδικασία συλλογής των δεδομένων που έχει βάλει ένας επισκέπτης στα πεδία της φόρμας σου και αποστολής τους σε έναν προορισμό για επεξεργασία. Η αποστολή γίνεται όταν ο χρήστης πατά το κουμπί αποστολής (ή πατά Enter σε ένα πεδίο κειμένου), ενεργοποιώντας ένα αίτημα HTTP που μεταφέρει τις απαντήσεις του επισκέπτη στον server σου ή σε υπηρεσία τρίτου.

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

Πώς δουλεύει η αποστολή φόρμας βήμα βήμα

Όταν ένας επισκέπτης πατά αποστολή, εξελίσσεται μια συγκεκριμένη αλληλουχία. Το να καταλάβεις κάθε βήμα σε βοηθά να βρίσκεις προβλήματα ενσωμάτωσης και να στήνεις σωστά τους αυτοματισμούς.

Βήμα 1: Ενεργοποιείται το γεγονός αποστολής

Όταν ο χρήστης πατά το κουμπί αποστολής ή πατά Enter σε ορισμένα πεδία, η φόρμα δημιουργεί ένα γεγονός αποστολής (submit event). Αυτό το γεγονός λέει στον browser να μαζέψει όλα τα δεδομένα που μπήκαν στα πεδία της φόρμας και να τα προετοιμάσει για μετάδοση.

Βήμα 2: Συλλέγονται τα δεδομένα της φόρμας

Ο browser διαβάζει κάθε πεδίο της φόρμας σου (πεδία κειμένου, αναδυόμενα μενού, checkbox, μεταφορτώσεις αρχείων κ.λπ.) και εξάγει τις τιμές. Τα δεδομένα κάθε πεδίου ζευγαρώνουν με το χαρακτηριστικό name του, δημιουργώντας ζεύγη κλειδιού-τιμής. Για παράδειγμα, αν έχεις ένα πεδίο με όνομα "email" και τιμή "jane@example.com", ο browser το καταγράφει ως ζεύγος.

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

Βήμα 3: Τα δεδομένα κωδικοποιούνται

Πριν ταξιδέψουν τα δεδομένα στο διαδίκτυο, πρέπει να μεταφραστούν σε μορφή που καταλαβαίνει ο web server. Αυτό λέγεται κωδικοποίηση. Οι δύο πιο συνηθισμένες μορφές κωδικοποίησης είναι:

URL-encoded (application/x-www-form-urlencoded): Τα ονόματα και οι τιμές των πεδίων συνδυάζονται με σημεία ισότητας και ampersand. Για παράδειγμα: "name=Jane&email=jane@example.com&phone=555-0123". Αυτή είναι η προεπιλογή για τις περισσότερες φόρμες.

Multipart/form-data: Χρησιμοποιείται όταν η φόρμα σου περιλαμβάνει μεταφόρτωση αρχείων. Αυτή η μορφή επιτρέπει να σταλούν μαζί και κείμενο και δυαδικά δεδομένα (όπως εικόνες).

Βήμα 4: Τα δεδομένα ταξιδεύουν στον server

Τα κωδικοποιημένα δεδομένα της φόρμας πακετάρονται σε ένα αίτημα HTTP και στέλνονται στην τοποθεσία που ορίζει το χαρακτηριστικό action της φόρμας σου. Αν δεν έχει οριστεί action, η φόρμα στέλνεται στην ίδια σελίδα όπου βρίσκεται.

Το αίτημα HTTP περιλαμβάνει τη μέθοδο που όρισες: GET ή POST. Τα αιτήματα GET φαίνονται στο URL (χρησιμοποιούνται για αναζητήσεις και φίλτρα). Τα αιτήματα POST κρύβουν τα δεδομένα στο σώμα του αιτήματος (χρησιμοποιούνται για ευαίσθητες πληροφορίες όπως κωδικούς ή στοιχεία πληρωμής).

Αν η φόρμα σου στέλνεται μέσω HTTPS (που πρέπει να κάνουν όλες οι σύγχρονες φόρμες), τα δεδομένα κρυπτογραφούνται κατά τη μετάδοση. Έτσι οι πληροφορίες προστατεύονται από υποκλοπή.

Βήμα 5: Ο server παραλαμβάνει και ελέγχει τα δεδομένα

Όταν ο server σου παραλάβει την αποστολή, πρώτα ελέγχει αν τα δεδομένα είναι έγκυρα και ασφαλή. Ο έλεγχος μπορεί να περιλαμβάνει:

Επιβεβαίωση ότι τα υποχρεωτικά πεδία δεν είναι άδεια. Έλεγχο ότι οι διευθύνσεις email μοιάζουν με πραγματικές διευθύνσεις email. Επαλήθευση ότι οι μεταφορτώσεις αρχείων έχουν σωστό τύπο και μέγεθος. Δοκιμή ότι οι αριθμοί είναι πραγματικά αριθμοί και όχι κείμενο.

Ο καθαρισμός (sanitization) είναι η διαδικασία αφαίρεσης οτιδήποτε επικίνδυνου από τα δεδομένα (όπως κακόβουλα scripts). Αυτό προστατεύει τη βάση δεδομένων και τα συστήματά σου από επιθέσεις.

Βήμα 6: Ο server επεξεργάζεται τα δεδομένα

Μετά τον έλεγχο και τον καθαρισμό, ο server αποφασίζει τι θα κάνει με τα δεδομένα. Συνηθισμένες ενέργειες περιλαμβάνουν:

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

Ενεργοποίηση αυτοματισμών: Η αποστολή μπορεί να στείλει αυτόματα email επιβεβαίωσης, να ενημερώσει ένα CRM ή να ενεργοποιήσει ένα webhook.

Δημιουργία απάντησης: Ο server δημιουργεί και στέλνει πίσω μια απάντηση στον browser του επισκέπτη. Αυτή μπορεί να είναι μια σελίδα επιτυχίας, μια ανακατεύθυνση ή ένα μήνυμα επιβεβαίωσης στην ίδια σελίδα.

Βήμα 7: Ο επισκέπτης βλέπει επιβεβαίωση

Το τελευταίο βήμα είναι αυτό που βιώνει ο επισκέπτης. Αυτό μπορεί να είναι:

Ένα μήνυμα επιτυχίας στην ίδια σελίδα. Μια ανακατεύθυνση σε σελίδα ευχαριστιών. Ένα email επιβεβαίωσης στα εισερχόμενά του. Ένα modal ή pop-up που επιβεβαιώνει ότι η αποστολή πέρασε.

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

Τι γίνεται με τα δεδομένα της φόρμας σου μετά την αποστολή

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

Τα δεδομένα της φόρμας σου μπορούν να αποθηκευτούν σε πολλά μέρη ταυτόχρονα. Τα περισσότερα εργαλεία φορμών αποθηκεύουν τις αποστολές στη δική τους βάση δεδομένων από προεπιλογή (όπου μπορείς να τις δεις στον πίνακα διαχείρισης). Ταυτόχρονα, η αποστολή μπορεί να προωθηθεί σε εξωτερικές υπηρεσίες όπως πλατφόρμες email marketing, συστήματα CRM ή προσαρμοσμένες εφαρμογές μέσω ενσωματώσεων και webhooks.

Η ροή μοιάζει έτσι: Αποστολή φόρμας → Το εργαλείο φορμών καταγράφει τα δεδομένα → Τα δεδομένα αποθηκεύονται τοπικά και προωθούνται σε ενσωματώσεις → Μπορείς να έχεις πρόσβαση στα δεδομένα από πολλές πλατφόρμες.

Ο ρόλος των πεδίων φόρμας στην αποστολή

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

Πεδία κειμένου, περιοχές κειμένου, πεδία email: Στέλνουν την τιμή τους ακριβώς όπως γράφτηκε.

Αναδυόμενα μενού και πεδία επιλογής: Στέλνουν την τιμή της επιλεγμένης επιλογής, όχι το κείμενο που εμφανίζεται (αν και μπορεί να είναι το ίδιο).

Checkbox: Στέλνουν τιμή μόνο αν είναι τσεκαρισμένα. Τα μη τσεκαρισμένα κουτιά δεν στέλνουν τίποτα.

Κουμπιά επιλογής (radio): Στέλνουν μόνο την τιμή της επιλεγμένης επιλογής.

Μεταφορτώσεις αρχείων: Στέλνουν το ίδιο το αρχείο, όχι μόνο το όνομά του. Το αρχείο περιλαμβάνεται στην κωδικοποίηση multipart που αναφέρθηκε νωρίτερα.

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

Σφάλματα που μπορεί να γίνουν κατά την αποστολή φόρμας

Κάποιες φορές οι φόρμες δεν στέλνονται επιτυχώς. Συνηθισμένα προβλήματα περιλαμβάνουν:

Σφάλματα δικτύου: Αν η σύνδεση στο διαδίκτυο πέσει κατά την αποστολή, τα δεδομένα μπορεί να μην φτάσουν στον server. Ο επισκέπτης πρέπει να δει ένα μήνυμα σφάλματος.

Σφάλματα server: Αν ο server σου είναι εκτός λειτουργίας ή υπερφορτωμένος, η αποστολή δεν μπορεί να επεξεργαστεί. Αυτό συνήθως καταλήγει σε σφάλμα 500.

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

Σφάλματα χρονικού ορίου: Αν η αποστολή παίρνει πολύ χρόνο (συνήθως πάνω από 30 δευτερόλεπτα), ο browser μπορεί να ακυρώσει το αίτημα.

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

Θέματα ασφάλειας στην αποστολή φόρμας

Η ασφάλεια μετράει σε κάθε στάδιο της διαδικασίας αποστολής. Να τα κρίσιμα σημεία:

Χρησιμοποίησε πάντα HTTPS: Η φόρμα σου πρέπει να βρίσκεται σε ασφαλή σελίδα (HTTPS), όχι HTTP. Αυτό κρυπτογραφεί τα δεδομένα κατά τη μετάδοση.

Έλεγξε και στις δύο πλευρές: Ο έλεγχος πρέπει να γίνεται και στον browser (για την εμπειρία χρήστη) και στον server (για την ασφάλεια). Μην εμπιστεύεσαι ποτέ μόνο τον έλεγχο στην πλευρά του χρήστη.

Καθάρισε κάθε είσοδο: Αφαίρεσε ή διέφυγε κάθε χαρακτήρα που θα μπορούσε να είναι επικίνδυνος όταν αποθηκευτεί ή εμφανιστεί.

Περιόρισε τις μεταφορτώσεις αρχείων: Αν η φόρμα σου δέχεται αρχεία, περιόρισε τους τύπους και τα μεγέθη αρχείων για να αποτρέψεις κατάχρηση.

Εφάρμοσε προστασία CSRF: Οι φόρμες πρέπει να περιλαμβάνουν ένα token CSRF για να αποτρέπουν επιτιθέμενους από το να στέλνουν δόλια αιτήματα εκ μέρους χρηστών.

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

Πώς χειρίζεται το WEMASY τις αποστολές φορμών

Ο Δημιουργός ιστοσελίδων του WEMASY σου επιτρέπει να φτιάξεις τις δικές σου σελίδες στην ιστοσελίδα σου και να προσθέσεις μια φόρμα.

Δες τα πακέτα του WEMASY.

Συχνές ερωτήσεις

Να χρησιμοποιώ GET ή POST για τη φόρμα μου;
Το POST είναι η ασφαλής επιλογή για σχεδόν όλες τις φόρμες. Χρησιμοποίησε GET μόνο για φόρμες αναζήτησης ή φίλτρων όπου θέλεις το ερώτημα να φαίνεται στο URL. Το POST κρύβει τα δεδομένα σου στο σώμα του αιτήματος, κάτι που το κάνει τη σωστή μέθοδο για φόρμες επικοινωνίας, εγγραφής και κάθε φόρμα που συλλέγει προσωπικά στοιχεία. Αν δεν είσαι σίγουρος, χρησιμοποίησε POST. Με τον Δημιουργό ιστοσελίδων του WEMASY μπορείς να το στήσεις απευθείας στην ιστοσελίδα σου.
Τι γίνεται αν κάποιος χάσει τη σύνδεσή του στο διαδίκτυο κατά την αποστολή;
Αν η σύνδεση πέσει κατά την αποστολή, το αίτημα μπορεί να μην φτάσει στον server σου. Ο επισκέπτης συνήθως βλέπει σφάλμα σύνδεσης. Τα δεδομένα δεν στέλνονται αν η αποστολή δεν ολοκληρωθεί πλήρως. Γι' αυτό ο καλός σχεδιασμός φόρμας αποθηκεύει τα δεδομένα τοπικά (στον browser) πριν επιχειρήσει την αποστολή, επιτρέποντας στους επισκέπτες να ξαναδοκιμάσουν χωρίς να τα βάλουν όλα από την αρχή.
Μπορεί κάποιος να στείλει κατά λάθος μια φόρμα δύο φορές;
Ναι, και συμβαίνει συχνά. Αν ο επισκέπτης δεν δει άμεση επιβεβαίωση, μπορεί να πατήσει ξανά αποστολή νομίζοντας ότι η πρώτη προσπάθεια δεν δούλεψε. Αυτό δημιουργεί διπλές αποστολές. Για να το αποτρέψεις, απενεργοποίησε το κουμπί αποστολής μετά το κλικ, δείξε κατάσταση φόρτωσης ή εφάρμοσε εντοπισμό διπλών αποστολών στον server, που αναγνωρίζει την ίδια αποστολή που στάλθηκε δύο φορές και κρατά μόνο μία εγγραφή.
Χρειάζεται να ελέγχω τα δεδομένα της φόρμας αν τα ελέγχω ήδη με JavaScript;
Ναι. Ο έλεγχος στην πλευρά του χρήστη (σε JavaScript) είναι για την εμπειρία χρήστη: πιάνει λάθη πριν από την αποστολή. Οι επισκέπτες όμως μπορούν να παρακάμψουν τον έλεγχο στην πλευρά του χρήστη αλλάζοντας τον κώδικα στον browser τους. Έλεγχε πάντα ξανά στον server. Ο έλεγχος στον server είναι ο έλεγχος ασφαλείας σου. Χρησιμοποίησε και τα δύο μαζί: το JavaScript αποτρέπει τα τίμια λάθη, ο server αποτρέπει τις κακόβουλες αποστολές.
Ποιες πληροφορίες να συλλέγω πραγματικά στη φόρμα μου;
Συλλέγε μόνο ό,τι χρειάζεσαι αυτή τη στιγμή. Κάθε πεδίο που προσθέτεις αυξάνει την εγκατάλειψη. Οι περισσότερες πρώτες φόρμες χρειάζονται μόνο όνομα, email και μία συγκεκριμένη ερώτηση σχετική με τον λόγο που στέλνουν τη φόρμα. Μπορείς να ζητήσεις περισσότερες πληροφορίες αργότερα με email follow up ή με δεύτερη φόρμα. Ξεκίνα με το ελάχιστο και πρόσθεσε πεδία μόνο αν τα δεδομένα δείχνουν ότι τα χρειάζεσαι.
Μπορώ να δω μια αποστολή φόρμας να αποτυγχάνει από τη δική μου πλευρά αλλά να πετυχαίνει στον server;
Ναι, αυτό συμβαίνει όταν τα δεδομένα φτάνουν στον server σου και επεξεργάζονται επιτυχώς, αλλά ο επισκέπτης δεν λαμβάνει την επιβεβαίωση (ίσως έπεσε το διαδίκτυό του αφού ολοκληρώθηκε η αποστολή). Από τη δική σου πλευρά, η αποστολή έχει καταγραφεί. Ο επισκέπτης δεν μαθαίνει ποτέ ότι πέρασε. Γι' αυτό τα email μετά την αποστολή και τα καθαρά μηνύματα επιτυχίας είναι σημαντικά: επιβεβαιώνουν στους επισκέπτες ότι η αποστολή τους παραλήφθηκε.

Βάλ’ το αμέσως σε εφαρμογή
στη δική σου ιστοσελίδα.

Ξεκίνα δωρεάν με το WEMASY και φτιάξε τη σελίδα σου σε λίγα λεπτά.