Καταχώρηση αυθεντίας php

10/05/2015 Romchik

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

Το πρώτο πράγμα που θα κάνουμε είναι να δημιουργήσουμε έναν ελεγκτή και μια προβολή για εγγραφή.

Δημιουργία φόρμας εγγραφής

Μεταβείτε στον κατάλογο με τα πρότυπα πόρων και δημιουργήστε τον υποκατάλογο auth σε αυτόν. Τώρα στον φάκελο auth θα δημιουργήσουμε ένα αρχείο register.blade.php με τον ακόλουθο κώδικα:

Εγγραφή

((--Σφάλματα--)) @if ($errors->has()) ×
    @foreach($errors->all() ως $error)
  • ((( $λάθος )))
  • @endforeach
@endif (!! csrf_field() ! Email Пароль Повторите пароль Отправить !}

Δεν θα εξηγήσω τον παραπάνω κώδικα, όλα είναι ξεκάθαρα εδώ.

App/Http/Controllers/Auth/AuthController.php

Θα παρακάμψουμε μόνο τις μεθόδους ελεγκτή AuthController.php. Έτσι, για να εμφανιστεί η φόρμα εγγραφής, υπάρχει μια μέθοδος getRegister. Δεν αγγίζουμε αυτή τη μέθοδο.

Ας περάσουμε τώρα στις διαδρομές. Ανοίξτε το αρχείο:

Και ορίστε τη διαδρομή προς τη μέθοδό μας:

Route::get("auth/register", "Auth\AuthController@getRegister");

Τώρα ας ανοίξουμε την εφαρμογή μας στο πρόγραμμα περιήγησης. Ωραία, βλέπουμε τη φόρμα εγγραφής.

Εγγραφή χρήστη σε

Ας ορίσουμε αμέσως τη διαδρομή για την εγγραφή χρήστη. Πάμε στο αρχείο:

App/Http/Controllers/routes.php

Και προσθέστε την ακόλουθη διαδρομή:

Route::post("auth/register", "Auth\AuthController@postRegister");

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

Database/migrations/2014_10_12_create_users_table.php

Και ας αλλάξουμε τον κωδικό:

Στην περίπτωσή μου μοιάζει με αυτό:

Αποθήκευση bd.php .
Εξαιρετική! Έχουμε έναν πίνακα στη βάση δεδομένων και μια σύνδεση με αυτόν. Τώρα μπορείτε να ξεκινήσετε τη δημιουργία μιας σελίδας στην οποία οι χρήστες θα αφήνουν τα δεδομένα τους.

3. Δημιουργήστε ένα αρχείο reg.php με περιεχόμενο (όλα τα σχόλια μέσα):



Εγγραφή


Εγγραφή


Η σύνδεσή σας:




Ο κωδικός σας:








4. Δημιουργήστε ένα αρχείο που θα εισάγει δεδομένα στη βάση δεδομένων και θα αποθηκεύει τον χρήστη. save_user.php (σχόλια μέσα):

5. Τώρα οι χρήστες μας μπορούν να εγγραφούν! Στη συνέχεια, πρέπει να δημιουργήσετε μια «πόρτα» για να μπουν ήδη εγγεγραμμένοι χρήστες στον ιστότοπο. index.php (σχόλια μέσα):




Αρχική σελίδα


Αρχική σελίδα


Η σύνδεσή σας:


Ο κωδικός σας:






Κανω ΕΓΓΡΑΦΗ



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

Τα τσέκαρα όλα, δουλεύει σωστά!

Σε αυτό το άρθρο, θα μάθετε πώς να δημιουργείτε μια φόρμα εγγραφής και σύνδεσης χρησιμοποιώντας HTML, JavaScript, PHP και MySql. Τέτοιες φόρμες χρησιμοποιούνται σχεδόν σε κάθε ιστότοπο, ανεξάρτητα από τον τύπο του. Δημιουργούνται για ένα φόρουμ, ένα ηλεκτρονικό κατάστημα, κοινωνικά δίκτυα (όπως Facebook, Twitter, Odnoklassniki) και πολλούς άλλους τύπους τοποθεσιών.

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

Δημιουργία πίνακα στη βάση δεδομένων

Για να υλοποιήσουμε την εγγραφή χρήστη, χρειαζόμαστε πρώτα από όλα μια Βάση Δεδομένων. Εάν το έχετε ήδη, τότε υπέροχο, διαφορετικά, πρέπει να το δημιουργήσετε. Στο άρθρο, εξηγώ λεπτομερώς πώς να το κάνετε αυτό.

Και έτσι, έχουμε μια βάση δεδομένων (συντομογραφία ως DB), τώρα πρέπει να δημιουργήσουμε έναν πίνακα χρήστεςστο οποίο θα προσθέσουμε τους εγγεγραμμένους χρήστες μας.

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

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

  • ταυτότητα- Αναγνωριστικό. Πεδίο ταυτότηταΚάθε πίνακας στη βάση δεδομένων πρέπει να το έχει.
  • όνομα- Για να αποθηκεύσετε το όνομα.
  • επίθετο- Να διατηρηθεί το επώνυμο.
  • ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ- Για να αποθηκεύσετε την ταχυδρομική διεύθυνση. Θα χρησιμοποιήσουμε το ηλεκτρονικό ταχυδρομείο ως σύνδεση, επομένως αυτό το πεδίο πρέπει να είναι μοναδικό, δηλαδή να έχει το ΜΟΝΑΔΙΚΟ ευρετήριο.
  • email_status- Πεδίο για να υποδείξετε εάν η αλληλογραφία είναι επιβεβαιωμένη ή όχι. Εάν η αλληλογραφία επιβεβαιωθεί, τότε θα έχει τιμή 1, διαφορετικά η τιμή είναι 0.
  • Κωδικός πρόσβασης- Για να αποθηκεύσετε τον κωδικό πρόσβασης.


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

Αυτό είναι, το τραπέζι μας χρήστεςέτοιμος. Ας περάσουμε στο επόμενο στάδιο.

Σύνδεση βάσης δεδομένων

Δημιουργήσαμε τη βάση δεδομένων, τώρα πρέπει να συνδεθούμε σε αυτήν. Θα συνδεθούμε χρησιμοποιώντας την επέκταση PHP MySQLi.

Στον φάκελο του site μας, δημιουργήστε ένα αρχείο με το όνομα dbconnect.phpκαι γράψτε το ακόλουθο σενάριο σε αυτό:

Αυτό το αρχείο dbconnect.phpθα χρειαστεί να συνδεθούν σε χειριστές φορμών.

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

Δομή τοποθεσίας

Τώρα ας δούμε τη δομή HTML του ιστότοπού μας.

Θα μετακινήσουμε την κεφαλίδα και το υποσέλιδο του ιστότοπου σε ξεχωριστά αρχεία, header.phpΚαι υποσέλιδο.php. Θα τα συμπεριλάβουμε σε όλες τις σελίδες. Δηλαδή στην κεντρική σελίδα (αρχείο index.php), στη σελίδα με τη φόρμα εγγραφής (αρχείο form_register.php) και στη σελίδα με το έντυπο εξουσιοδότησης (αρχείο form_auth.php).

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

Περιεχόμενα του αρχείου header.php:

Όνομα του ιστότοπού μας

Ως αποτέλεσμα, η κύρια σελίδα μας μοιάζει με αυτό:


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

Τώρα ας προχωρήσουμε στη φόρμα εγγραφής. Όπως καταλαβαίνετε ήδη, το έχουμε στο αρχείο form_register.php.

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

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

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

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

Σε γενικές γραμμές, ο κωδικός αρχείου form_register.phpπήραμε αυτό:

Είστε ήδη εγγεγραμμένος

Στο πρόγραμμα περιήγησης, η σελίδα με τη φόρμα εγγραφής μοιάζει με αυτό:


Χρησιμοποιώντας το απαιτούμενο χαρακτηριστικό, κάναμε όλα τα πεδία υποχρεωτικά.

Προσέξτε τον κωδικό της φόρμας εγγραφής όπου εμφανίζεται το captcha:


Καθορίσαμε τη διαδρομή προς το αρχείο στην τιμή του χαρακτηριστικού src για την εικόνα captcha.php, το οποίο δημιουργεί αυτό το captcha.

Ας δούμε τον κώδικα του αρχείου captcha.php:

Ο κώδικας είναι καλά σχολιασμένος, οπότε θα επικεντρωθώ σε ένα μόνο σημείο.

Μέσα σε μια λειτουργία imageTtfText(), καθορίζεται η διαδρομή προς τη γραμματοσειρά verdana.ttf. Για να λειτουργήσει λοιπόν σωστά το captcha, πρέπει να δημιουργήσουμε έναν φάκελο γραμματοσειρέςκαι τοποθετήστε το αρχείο γραμματοσειράς εκεί verdana.ttf. Μπορείτε να το βρείτε και να το κατεβάσετε από το Διαδίκτυο ή να το πάρετε από το αρχείο με τα υλικά αυτού του άρθρου.

Τελειώσαμε με τη δομή HTML, ήρθε η ώρα να προχωρήσουμε.

Έλεγχος εγκυρότητας email χρησιμοποιώντας jQuery

Οποιαδήποτε φόρμα πρέπει να ελέγχει την εγκυρότητα των δεδομένων που έχουν εισαχθεί, τόσο από την πλευρά του πελάτη (με χρήση JavaScript, jQuery) όσο και από την πλευρά του διακομιστή.

Πρέπει να δώσουμε ιδιαίτερη προσοχή στο πεδίο Email. Είναι πολύ σημαντικό η καταχωρημένη ταχυδρομική διεύθυνση να είναι έγκυρη.

Για αυτό το πεδίο εισαγωγής, ορίσαμε τον τύπο email (type="email"), αυτό μας προειδοποιεί ελαφρώς για εσφαλμένες μορφές. Αυτό όμως δεν αρκεί, γιατί μέσω του code inspector που μας παρέχει το πρόγραμμα περιήγησης, μπορούμε εύκολα να αλλάξουμε την τιμή του χαρακτηριστικού τύποςΜε ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗεπί κείμενο, και αυτό είναι, η επιταγή μας δεν θα ισχύει πλέον.


Και σε αυτή την περίπτωση, πρέπει να κάνουμε έναν πιο αξιόπιστο έλεγχο. Για να το κάνουμε αυτό, θα χρησιμοποιήσουμε τη βιβλιοθήκη jQuery από JavaScript.

Για να συνδέσετε τη βιβλιοθήκη jQuery, στο αρχείο header.phpμεταξύ ετικετών , πριν από την ετικέτα κλεισίματος , προσθέστε αυτή τη γραμμή:

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

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

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

Εγγραφή χρήστη

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

Ανοίξτε αυτό το αρχείο register.phpκαι το πρώτο πράγμα που πρέπει να κάνουμε είναι να γράψουμε μια συνάρτηση έναρξης περιόδου λειτουργίας και να συνδέσουμε το αρχείο που δημιουργήσαμε νωρίτερα dbconnect.php(Σε αυτό το αρχείο κάναμε σύνδεση με τη βάση δεδομένων). Και επίσης, ας δηλώσουμε αμέσως τα κύτταρα error_messagesΚαι επιτυχία_μηνυμάτωνστον πίνακα καθολικών συνεδριών. ΣΕ error_mesagesθα καταγράψουμε όλα τα μηνύματα σφάλματος που προκύπτουν κατά την επεξεργασία της φόρμας και μέσα succes_messages, θα καταγράψουμε χαρμόσυνα μηνύματα.

Πριν συνεχίσουμε, πρέπει να ελέγξουμε αν η φόρμα υποβλήθηκε καθόλου. Ένας εισβολέας μπορεί να κοιτάξει την τιμή του χαρακτηριστικού δράσηαπό τη φόρμα και μάθετε ποιο αρχείο επεξεργάζεται αυτήν τη φόρμα. Και μπορεί να έχει την ιδέα να μεταβεί απευθείας σε αυτό το αρχείο πληκτρολογώντας την ακόλουθη διεύθυνση στη γραμμή διευθύνσεων του προγράμματος περιήγησης: http://site_address/register.php

Πρέπει λοιπόν να ελέγξουμε για ένα κελί στον καθολικό πίνακα POST του οποίου το όνομα ταιριάζει με το όνομα του κουμπιού "Εγγραφή" από τη φόρμα. Με αυτόν τον τρόπο ελέγχουμε αν έγινε κλικ στο κουμπί «Εγγραφή» ή όχι.

Εάν ένας εισβολέας προσπαθήσει να μεταβεί απευθείας σε αυτό το αρχείο, θα λάβει ένα μήνυμα σφάλματος. Να σας υπενθυμίσω ότι η μεταβλητή $address_site περιέχει το όνομα του ιστότοπου και δηλώθηκε στο αρχείο dbconnect.php.

Η τιμή captcha στη συνεδρία προστέθηκε όταν δημιουργήθηκε, στο αρχείο captcha.php. Ως υπενθύμιση, θα σας δείξω ξανά αυτό το κομμάτι κώδικα από το αρχείο captcha.php, όπου η τιμή captcha προστίθεται στη συνεδρία:

Τώρα ας προχωρήσουμε στην ίδια την επαλήθευση. Στο αρχείο register.php, μέσα στο μπλοκ if, όπου ελέγχουμε αν έγινε κλικ στο κουμπί "Εγγραφή" ή μάλλον πού υποδεικνύεται το σχόλιο "" // (1) Κενό για το επόμενο κομμάτι κώδικα"γράφουμε:

//Ελέγξτε το ληφθέν captcha //Περικοπή των διαστημάτων από την αρχή και το τέλος της γραμμής $captcha = trim($_POST["captcha"]); if(isset($_POST["captcha"]) && !empty($captcha))( //Σύγκριση της τιμής που ελήφθη με την τιμή από τη συνεδρία. if(($_SESSION["rand"] != $captcha) && ($_SESSION ["rand"] != ""))( // Εάν το captcha δεν είναι σωστό, τότε επιστρέφουμε τον χρήστη στη σελίδα εγγραφής και εκεί θα του εμφανίσουμε ένα μήνυμα σφάλματος ότι εισήγαγε λάθος captcha $error_message = "

Λάθος! Εισαγάγατε λάθος captcha

"; // Αποθηκεύστε το μήνυμα σφάλματος στη συνεδρία. $_SESSION["error_messages"] = $error_message; // Επιστροφή του χρήστη στην κεφαλίδα της σελίδας εγγραφής("HTTP/1.1 301 Moved Permanently"); header("Τοποθεσία: " .$address_site ."/form_register.php"); //Διακοπή της δέσμης ενεργειών exit(); ) // (2) Τοποθετήστε το επόμενο κομμάτι κώδικα )else( //Εάν το captcha δεν περάσει ή είναι κενό, βγείτε ("

Λάθος! Δεν υπάρχει κωδικός επαλήθευσης, δηλαδή κωδικός captcha. Μπορείτε να μεταβείτε στην κεντρική σελίδα.

"); }

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

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

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

Επικολλήστε αυτόν τον κωδικό στην καθορισμένη τοποθεσία" // (2) Κενό για το επόμενο κομμάτι κώδικα".

/* Ελέγξτε εάν αποστέλλονται δεδομένα από τη φόρμα στον καθολικό πίνακα $_POST και τυλίξτε τα υποβληθέντα δεδομένα σε κανονικές μεταβλητές.*/ if(isset($_POST["first_name"]))( //Περικοπή των διαστημάτων από την αρχή και τέλος της συμβολοσειράς $first_name = trim($_POST["first_name"]); //Ελέγξτε τη μεταβλητή για κενή if(!empty($first_name))( // Για ασφάλεια, μετατρέψτε ειδικούς χαρακτήρες σε οντότητες HTML $first_name = htmlspecialchars($first_name, ENT_QUOTES) ; )else( // Αποθηκεύστε το μήνυμα σφάλματος στη συνεδρία. $_SESSION["error_messages"] .= "

Εισάγετε το όνομά σας

Το πεδίο ονόματος λείπει

"; //Επιστροφή του χρήστη στην κεφαλίδα της σελίδας εγγραφής("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); ) if( isset($_POST["last_name"]))( //Περικοπή διαστημάτων από την αρχή και το τέλος της γραμμής $last_name = trim($_POST["last_name"]); if(!empty($last_name)) ( // Για ασφάλεια, μετατρέψτε τους ειδικούς χαρακτήρες σε οντότητες HTML $last_name = htmlspecialchars($last_name, ENT_QUOTES); )else( // Αποθηκεύστε το μήνυμα σφάλματος στη συνεδρία. $_SESSION["error_messages"] .= "

Παρακαλώ εισάγετε το επώνυμό σας

"; //Επιστροφή του χρήστη στην κεφαλίδα της σελίδας εγγραφής("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); ) )else ( // Αποθηκεύστε το μήνυμα σφάλματος στη συνεδρία. $_SESSION["error_messages"] .= "

Το πεδίο επωνύμου λείπει

"; //Επιστροφή του χρήστη στην κεφαλίδα της σελίδας εγγραφής("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); ) if( isset($_POST["email"]))( //Περικοπή διαστημάτων από την αρχή και το τέλος της γραμμής $email = trim($_POST["email"]); if(!empty($email)) ( $email = htmlspecialchars ($email, ENT_QUOTES); // (3) Θέση κωδικού για έλεγχο της μορφής της διεύθυνσης email και της μοναδικότητάς της )else( // Αποθηκεύστε το μήνυμα σφάλματος στη συνεδρία. $_SESSION["error_messages"] .="

Συμπληρώστε το email σας

"; //Επιστροφή του χρήστη στην κεφαλίδα της σελίδας εγγραφής("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); ) )else ( // Αποθηκεύστε το μήνυμα σφάλματος στη συνεδρία. $_SESSION["error_messages"] .= "

"; //Επιστροφή του χρήστη στην κεφαλίδα της σελίδας εγγραφής("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); ) if( isset($_POST["password"]))( //Περικοπή διαστημάτων από την αρχή και το τέλος της συμβολοσειράς $password = trim($_POST["password"]); if(!empty($password)) ( $password = htmlspecialchars ($password, ENT_QUOTES); //Κρυπτογράφηση του κωδικού πρόσβασης $password = md5($password."top_secret"); )else( // Αποθηκεύστε το μήνυμα σφάλματος στη συνεδρία. $_SESSION["error_messages"] .="

Εισάγετε τον κωδικό σας

"; //Επιστροφή του χρήστη στην κεφαλίδα της σελίδας εγγραφής("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); ) )else ( // Αποθηκεύστε το μήνυμα σφάλματος στη συνεδρία. $_SESSION["error_messages"] .= "

"; //Επιστροφή του χρήστη στην κεφαλίδα της σελίδας εγγραφής("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); ) // (4) Θέση για τον κώδικα για την προσθήκη ενός χρήστη στη βάση δεδομένων

Ιδιαίτερη σημασία έχει το γήπεδο ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ. Πρέπει να ελέγξουμε τη μορφή της λαμβανόμενης ταχυδρομικής διεύθυνσης και τη μοναδικότητά της στη βάση δεδομένων. Δηλαδή, υπάρχει ήδη εγγεγραμμένος χρήστης με την ίδια διεύθυνση email;

στην καθορισμένη τοποθεσία" // (3) Θέση κωδικού για να ελέγξετε τη μορφή της ταχυδρομικής διεύθυνσης και τη μοναδικότητά της" προσθέστε τον ακόλουθο κώδικα:

//Ελέγξτε τη μορφή της ληφθείσας διεύθυνσης email χρησιμοποιώντας μια τυπική έκφραση $reg_email = "/^**@(+(*+)*\.)++/i"; //Εάν η μορφή της ληφθείσας διεύθυνσης email δεν ταιριάζει με την κανονική έκφραση if(!preg_match($reg_email, $email))( // Αποθηκεύστε το μήνυμα σφάλματος στη συνεδρία. $_SESSION["error_messages"] .= "

Εισαγάγατε λάθος email

"; //Επιστροφή του χρήστη στην κεφαλίδα της σελίδας εγγραφής("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); ) // Ελέγχουμε αν μια τέτοια διεύθυνση βρίσκεται ήδη στη βάση δεδομένων. $result_query = $mysqli->query("SELECT `email` FROM `users` WHERE `email`="".$email."""); / /Εάν ο αριθμός των ληφθέντων είναι ακριβώς μία σειρά, πράγμα που σημαίνει ότι ο χρήστης με αυτήν τη διεύθυνση email είναι ήδη εγγεγραμμένος εάν($result_query->num_rows == 1)( //Εάν το αποτέλεσμα που προκύπτει δεν είναι ψευδές if(($row = $result_query->fetch_assoc()) != false) ( // Αποθηκεύστε το μήνυμα σφάλματος στη συνεδρία. $_SESSION["error_messages"] .= "

Ένας χρήστης με αυτήν τη διεύθυνση email έχει ήδη εγγραφεί

". στη συνεδρία . $_SESSION["error_messages"] .= "

Σφάλμα στο ερώτημα της βάσης δεδομένων

"; //Επιστροφή του χρήστη στην κεφαλίδα της σελίδας εγγραφής("HTTP/1.1 301 Moved Permanently"); header("Τοποθεσία: ".$address_site."/form_register.php"); ) /* κλείσιμο της επιλογής */ $ result_query-> close(); //Διακοπή του σεναρίου exit(); ) /* κλείσιμο της επιλογής */ $result_query->close();

Και έτσι, τελειώσαμε με όλους τους ελέγχους, ήρθε η ώρα να προσθέσουμε τον χρήστη στη βάση δεδομένων. στην καθορισμένη τοποθεσία" // (4) Θέση για τον κώδικα για την προσθήκη ενός χρήστη στη βάση δεδομένων" προσθέστε τον ακόλουθο κώδικα:

//Ερώτημα για προσθήκη χρήστη στη βάση δεδομένων $result_query_insert = $mysqli->query("INSERT INTO `users` (first_name, last_name, email, password) VALUES ("".$first_name."", "".$last_name ." ", "".$email.", "".$password."")"); if(!$result_query_insert)( // Αποθηκεύστε το μήνυμα σφάλματος στη συνεδρία. $_SESSION["error_messages"] .= "

Σφάλμα στο αίτημα για προσθήκη χρήστη στη βάση δεδομένων

"; //Επιστροφή του χρήστη στην κεφαλίδα της σελίδας εγγραφής("HTTP/1.1 301 Moved Permanently"); header("Location: ".$address_site."/form_register.php"); )else( $_SESSION["success_messages"] = "

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

". result_query_insert-> close(); //Κλείσιμο της σύνδεσης με τη βάση δεδομένων $mysqli->close();

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

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

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

Η συνεδρία ξεκινά επίσης στο αρχείο header.php, λοιπόν στο αρχείο form_auth.phpΔεν χρειάζεται να ξεκινήσουμε μια συνεδρία, γιατί θα εμφανιστεί σφάλμα.


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

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

Εξουσιοδότηση χρήστη

Για απόδοση τιμής δράσητο μειονέκτημα εξουσιοδότησης έχει καθορισμένο αρχείο auth.php, αυτό σημαίνει ότι η φόρμα θα υποβληθεί σε επεξεργασία σε αυτό το αρχείο.

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

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

Κωδικός αρχείου logout.php:

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

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

Όλα τα σενάρια έχουν δοκιμαστεί και λειτουργούν. Μπορείτε να κατεβάσετε το αρχείο με τα αρχεία αυτού του μικρού ιστότοπου από αυτόν τον σύνδεσμο.

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

Εάν έχετε οποιεσδήποτε ερωτήσεις, επικοινωνήστε μαζί μου και εάν παρατηρήσετε κάποιο σφάλμα στο άρθρο, ενημερώστε με.

Σχέδιο μαθήματος (Μέρος 5):

  • Δημιουργία δομής HTML για τη φόρμα εξουσιοδότησης
  • Επεξεργαζόμαστε τα δεδομένα που λαμβάνονται
  • Εμφανίζουμε τον χαιρετισμό του χρήστη στην κεφαλίδα του ιστότοπου
  • Σας άρεσε το άρθρο;

    Θα μάθουμε πώς να κάνουμε απλό έλεγχο ταυτότητας χρήστη στον ιστότοπο. Ο ιστότοπος μπορεί να έχει σελίδες μόνο για εξουσιοδοτημένους χρήστες και θα λειτουργούν πλήρως εάν προσθέσουμε το μπλοκ ελέγχου ταυτότητας σε αυτούς. Για να το δημιουργήσετε, χρειάζεστε μια βάση δεδομένων MySQL. Μπορεί να έχει 5 στήλες (ελάχιστο) ή περισσότερες αν θέλετε να προσθέσετε πληροφορίες σχετικά με τους χρήστες. Ας ονομάσουμε τη βάση δεδομένων "Userauth".

    Ας δημιουργήσουμε τα ακόλουθα πεδία σε αυτό: ID για την καταμέτρηση του αριθμού των χρηστών, UID για τον μοναδικό αριθμό αναγνώρισης του χρήστη, Όνομα χρήστη για το όνομα του χρήστη, Email για τη διεύθυνση email του και Κωδικό πρόσβασης για τον κωδικό πρόσβασης. Μπορείτε να χρησιμοποιήσετε την υπάρχουσα βάση δεδομένων σας για να εξουσιοδοτήσετε τον χρήστη, απλώς, όπως στην περίπτωση μιας νέας βάσης δεδομένων, δημιουργήστε τον παρακάτω πίνακα σε αυτήν.

    Κώδικας MySQL

    ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ «χρήστες» («ID» int (11) NOT NULL AUTO_INCREMENT, «UID» int (11) NOT NULL, κείμενο «Όνομα χρήστη» ΟΧΙ NULL, κείμενο «email» ΟΧΙ NULL, κείμενο «κωδικός πρόσβασης» NOT NULL, ΚΥΡΙΟ ΚΛΕΙΔΙ (`ID`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

    Τώρα ας δημιουργήσουμε το αρχείο "sql.php". Είναι υπεύθυνο για τη σύνδεση με τη βάση δεδομένων. Αυτός ο κώδικας, αρχικά, δημιουργεί μεταβλητές για τον διακομιστή και τον χρήστη όταν συνδέεται με τον διακομιστή. Δεύτερον, θα επιλέξει τη βάση δεδομένων, σε αυτήν την περίπτωση "USERAUTH". Αυτό το αρχείο πρέπει να περιλαμβάνεται στα "log.php" και "reg.php" για πρόσβαση στη βάση δεδομένων.

    Κώδικας PHP

    Ακολουθεί η σελίδα σύνδεσης, ας ονομάζεται "login.php". Αρχικά, ελέγχει τα δεδομένα που έχουν εισαχθεί για σφάλματα. Η σελίδα έχει πεδία για όνομα χρήστη, κωδικό πρόσβασης, κουμπί υποβολής και σύνδεσμο εγγραφής. Όταν ο χρήστης κάνει κλικ στο κουμπί "Είσοδος", η φόρμα θα υποβληθεί σε επεξεργασία από τον κώδικα από το αρχείο "log.php" και στη συνέχεια θα συνδεθεί.

    Κώδικας PHP

    Φόρμα σύνδεσης

    Όνομα χρήστη
    Κωδικός πρόσβασης
    Εγγραφή

    Στη συνέχεια γράφουμε ένα σενάριο για να συνδεθείτε στο σύστημα. Ας το ονομάσουμε "log.php". Έχει μια λειτουργία καθαρισμού των δεδομένων εισόδου από ενέσεις SQL που μπορεί να καταστρέψουν το σενάριό σας. Δεύτερον, λαμβάνει τα δεδομένα της φόρμας και τα ελέγχει για ορθότητα. Εάν τα δεδομένα εισαγωγής είναι σωστά, το σενάριο στέλνει τον χρήστη στη σελίδα εξουσιοδοτημένων χρηστών, εάν όχι, ορίζει σφάλματα και στέλνει τον χρήστη στη σελίδα σύνδεσης.

    Κώδικας PHP

    Ας φτιάξουμε μια σελίδα εγγραφής, να την ονομάσουμε "register.php". Είναι παρόμοιο με τη σελίδα σύνδεσης, μόνο που έχει μερικά ακόμη πεδία και αντί για σύνδεσμο εγγραφής, υπάρχει σύνδεσμος στο login.php σε περίπτωση που ο χρήστης έχει ήδη λογαριασμό.

    Κώδικας PHP

    Φόρμα εγγραφής

    Όνομα χρήστη
    ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
    Κωδικός πρόσβασης
    Επαναλάβετε τον κωδικό πρόσβασης
    έχω έναν λογαριασμο

    Τώρα θα δημιουργήσουμε ένα σενάριο εγγραφής στο αρχείο "reg.php". Θα περιλαμβάνει "sql.php" για σύνδεση στη βάση δεδομένων. Χρησιμοποιείται η ίδια λειτουργία όπως στο σενάριο σύνδεσης για την εκκαθάριση του πεδίου εισαγωγής. Οι μεταβλητές ορίζονται για πιθανά σφάλματα. Στη συνέχεια είναι μια συνάρτηση για τη δημιουργία ενός μοναδικού αναγνωριστικού που δεν έχει δοθεί ποτέ πριν. Στη συνέχεια εξάγονται και επαληθεύονται τα δεδομένα από τη φόρμα εγγραφής. Γίνεται έλεγχος για να διασφαλιστεί ότι η διεύθυνση email είναι στη σωστή μορφή και ότι ο κωδικός πρόσβασης έχει εισαχθεί ξανά σωστά. Στη συνέχεια, το σενάριο ελέγχει εάν υπάρχει χρήστης με το ίδιο όνομα στη βάση δεδομένων και, εάν ναι, αναφέρει ένα σφάλμα. Τέλος, ο κώδικας προσθέτει τον χρήστη στη βάση δεδομένων.

    Κώδικας PHP

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

    Κώδικας PHP

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

    Κώδικας PHP

    Μία από τις προϋποθέσεις στον παραπάνω κώδικα είναι το θέμα της ερώτησης στο .

    Ο ακόλουθος κώδικας πρέπει να εισαχθεί στη σελίδα για εξουσιοδοτημένους χρήστες, ονομάζεται, για παράδειγμα, "member.php", αλλά ο δικός σας μπορεί να ονομάζεται όπως θέλετε.

    Κώδικας PHP

    Έχετε εξουσιοδότηση πρόσβασης σε αυτή τη σελίδα. Πήγαινε έξω ( )

    Ο έλεγχος ταυτότητας χρήστη είναι έτοιμος!

    Τελευταία τροποποίηση στις 5 Απριλίου 2018 από Vincy.

    Η σύνδεση και η εγγραφή χρήστη είναι βασική προϋπόθεση για οποιαδήποτε εφαρμογή CMS. Αυτή είναι η αρχική εργασία κατά την έναρξη ενός έργου. Η εφαρμογή με έλεγχο ταυτότητας σύνδεσης χρήστη παρέχει ασφάλεια αποτρέποντας την ανώνυμη πρόσβαση. Υπάρχουν διάφοροι τρόποι για να ενεργοποιήσετε τον έλεγχο ταυτότητας στην εφαρμογή μας, όπως ενεργοποιώντας τη σύνδεση OAuth ή εφαρμόζοντας Single Sign-on (SSO) και παρόμοιους άλλους τρόπους. Σε ένα προηγούμενο σεμινάριο, είδαμε πώς να εφαρμόσουμε και επίσης σχετικά.

    Αυτό το παράδειγμα περιλαμβάνει και τις λειτουργίες σύνδεσης και εγγραφής. Έχω χρησιμοποιήσει τη βάση δεδομένων MySQL για την αποθήκευση των εγγεγραμμένων μελών. Η εγγραφή χρήστη θα περιέχει στοιχεία για να ληφθούν τα στοιχεία από τον χρήστη. Κατά την υποβολή αυτής της φόρμας, τα δεδομένα της φόρμας δημοσιεύονται στην PHP και αποθηκεύονται στη βάση δεδομένων. Ο κωδικός πρόσβασης χρήστη θα κρυπτογραφηθεί πριν από την αποθήκευση στη βάση δεδομένων. πριν από τη δημοσίευση στον κώδικα PHP. Όταν ο χρήστης είναι συνδεδεμένος με τα έγκυρα διαπιστευτήρια, τότε ο χρήστης και αυτός θα έχουν τη δυνατότητα να προχωρήσουν περαιτέρω.

    Φόρμα εγγραφής χρήστη

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