Εγκατάσταση emmet σε sublime κείμενο 3. Πρακτική χρήση του Emmet (Zen Coding). Προσθήκη και επεξεργασία αποσπασμάτων

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

Βήμα 1: Σύνδεση σε μια βάση δεδομένων MySQL.
Ας δημιουργήσουμε ένα αρχείο db_connect.php:

Mysql_connect("localhost", "user", "user password") or die("Σφάλμα σύνδεσης στο MySQL!");
mysql_select_db("βάση δεδομένων") ή die ("Σφάλμα σύνδεσης στη βάση δεδομένων MySQL!");
mysql_set_charset("utf8"); // ορίστε την κωδικοποίηση της βάσης δεδομένων

Βήμα 2. Ας δημιουργήσουμε έναν πίνακα για τους χρήστες.

ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ "προφίλ_χρηστών" (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`όνομα χρήστη` varchar(32) ΟΧΙ NULL,
`password` varchar(32) NOT NULL,
ΚΥΡΙΟ ΚΛΕΙΔΙ ("user_id")
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Βήμα 3. Ας δημιουργήσουμε ένα αρχείο handler.php - αυτό το αρχείο θα περιέχει έναν έλεγχο για εξουσιοδότηση χρήστη.

include_once "db_connect.php"; // έλεγχος σύνδεσης βάσης δεδομένων

// ελέγξτε εάν το όνομα χρήστη και ο κωδικός πρόσβασης έχουν συμπληρωθεί στα cookies
if(!empty($_COOKIE["username"]) ΚΑΙ !empty($_COOKIE["password"]))
{
// αναζητήστε τον χρήστη στον πίνακα users_profiles, χρησιμοποιήστε mysql_real_escape_string ως προστασία από την ένεση sql
$search_user = mysql_query("SELECT * FROM `users_profiles` WHERE `username` = "".mysql_real_escape_string($_COOKIE["όνομα χρήστη"])."" AND `password` = "".mysql_real_escape_string("λέξη_ΟΚ"ΙΕ($s_OK] )""");
$user = (mysql_num_rows($search_user) == 1) ? mysql_fetch_array($search_user) : 0;
}
αλλού
{
$user = 0;
}
?>

Βήμα 4. Γράφουμε εγγραφή.
Για να το κάνετε αυτό, δημιουργήστε ένα αρχείο register.php και γράψτε τον ακόλουθο κώδικα σε αυτό:


if($user) (

έξοδος();
}

Αν (!empty($_POST["login"]) ΚΑΙ !empty($_POST["password"]))
{


// ελέγξτε αν υπάρχει σύνδεση στη βάση δεδομένων μας
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `users_profiles` WHERE `username` = "".$login."" LIMIT 1;"), 0) != 0)
{
echo "Το επιλεγμένο όνομα χρήστη είναι ήδη εγγεγραμμένο!";
έξοδος();
}
// εισάγετε τα δεδομένα στον πίνακα, δώστε προσοχή - κωδικοποιούμε τον κωδικό πρόσβασης σε md5
mysql_query("INSERT INTO `users_profiles" (`username`, "password") VALUES ("".$login."", "".md5($password)."")");
echo "Έχετε εγγραφεί με επιτυχία!";
έξοδος();
}
// φόρμα εγγραφής
ηχώ "


Σύνδεση:



Κωδικός πρόσβασης:




";
?>

include_once "handler.php"; // ελέγξτε εάν ο χρήστης είναι συνδεδεμένος

// αν ναι, ανακατευθύνετέ το στην κύρια σελίδα
if($user) (
header("Τοποθεσία: index.php");
έξοδος();
}

If(!empty($_POST["login"]) ΚΑΙ !empty($_POST["password"]))
{
// φίλτρο σύνδεσης και κωδικού πρόσβασης
$login = mysql_real_escape_string(htmlspecialchars($_POST["login"]));
$password = mysql_real_escape_string(htmlspecialchars($_POST["password"]));

$search_user = mysql_result(mysql_query("SELECT COUNT(*) FROM `users_profiles` WHERE `username` = "".$login."" AND `password` = "".md5($password)."""), 0 )
if($search_user == 0)
{
echo "Μη έγκυρη είσοδος ή χρήστης δεν βρέθηκε.";
έξοδος();
}
αλλού
{
// αποθήκευση ονόματος χρήστη και κωδικού πρόσβασης στα cookies
$time = 60*60*24; // πόσο καιρό αποθηκεύονται δεδομένα σε cookies
setcookie("όνομα χρήστη", $login, time()+$time, "/");
setcookie("password", md5($password), time()+$time, "/");
echo "Έχετε συνδεθεί με επιτυχία στον ιστότοπο!";
έξοδος();
}
}
ηχώ "


Σύνδεση:



Κωδικός πρόσβασης:




";
?>

Βήμα 6. Αποσύνδεση του χρήστη.
Κάθε χρήστης πρέπει να αποσυνδεθεί από τον ιστότοπο εάν το θέλει. Για να το κάνετε αυτό, δημιουργήστε ένα αρχείο exit.php

include_once "handler.php"; // ελέγξτε εάν ο χρήστης είναι συνδεδεμένος

// έλεγχος εξουσιοδότησης χρήστη
if($user) (
setcookie("όνομα χρήστη", "", time()-1, "/");
setcookie("password", "", time()-1, "/");
session_destroy();
echo "Έχετε αποσυνδεθεί επιτυχώς!";
) άλλο (
echo "Πρέπει να είστε συνδεδεμένοι για αυτήν την ενέργεια.";
}
?>

Βήμα 7. Δημιουργία της κύριας σελίδας του ιστότοπου.
Ας δημιουργήσουμε το τελευταίο αρχείο - index.php

include_once "handler.php"; // ελέγξτε εάν ο χρήστης είναι συνδεδεμένος

Εάν ($user) (
// εμφάνιση πληροφοριών για τον χρήστη
echo "Γεια, ".$user["όνομα χρήστη"]."!

- Πήγαινε έξω

";
) άλλο (
// εμφάνιση πληροφοριών για τον επισκέπτη
ηχώ "
- Εξουσιοδότηση

- Εγγραφή

";
}
?>

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

php_value register_globals 0
php_value magic_quotes_gpc 0

php_value zlib.output_compression 1

AddDefaultCharset UTF-8

Για όσους είναι πολύ τεμπέληδες για να τα κάνουν όλα αυτά, κάντε λήψη

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

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

Αρχικά, ας συζητήσουμε όλα τα βήματα που θα κάνουμε στη συνέχεια. Τι χρειαζόμαστε πραγματικά; Χρειαζόμαστε ένα σενάριο που θα εγγράφει τον χρήστη, θα εξουσιοδοτεί τον χρήστη, θα ανακατευθύνει τον χρήστη κάπου μετά την εξουσιοδότηση. Θα χρειαστεί επίσης να δημιουργήσουμε μια σελίδα που θα προστατεύεται από την πρόσβαση από μη εξουσιοδοτημένους χρήστες. Για εγγραφή και εξουσιοδότηση, θα χρειαστεί να δημιουργήσουμε Φόρμες HTML. Θα αποθηκεύσουμε πληροφορίες σχετικά με εγγεγραμμένους χρήστες σε μια βάση δεδομένων. Αυτό σημαίνει ότι χρειαζόμαστε ακόμα ένα σενάριο σύνδεσης DBMS. Όλη η εργασία που θα εκτελέσουμε είναι λειτουργίες που γράφουμε μόνοι μας. Θα αποθηκεύσουμε αυτές τις λειτουργίες σε ξεχωριστό αρχείο.

Χρειαζόμαστε λοιπόν τα παρακάτω αρχεία:

  • σύνδεση με το DBMS·
  • προσαρμοσμένες λειτουργίες?
  • εξουσιοδότηση;
  • εγγραφή;
  • ασφαλής σελίδα?
  • σενάριο τερματισμού λειτουργίας χρήστη.
  • ένα σενάριο που ελέγχει την κατάσταση εξουσιοδότησης του χρήστη.
  • φύλλο στυλ για τον πιο απλό σχεδιασμό των σελίδων μας.

Όλα αυτά δεν θα έχουν νόημα εάν δεν έχετε αντίστοιχο πίνακα στη βάση δεδομένων. Εκκινήστε το εργαλείο διαχείρισης DBMS (PhpMyAdmin ή γραμμή εντολών, όποιο είναι πιο βολικό) και εκτελέστε το ακόλουθο ερώτημα σε αυτό:

CREATE TABLE `users` (`id` int(11) NOT NULL AUTO_INCREMENT, `login` char(16) NOT NULL, `password` char(40) NOT NULL, `reg_date` timestamp NOT NULL DEFAULT CURRENT_TIMEYSTAMP, PRI id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Θα ονομάσω τα αρχεία σεναρίου μας ως εξής (θα βρίσκονται όλα στον ίδιο κατάλογο):

  • βάση δεδομένων.php
  • λειτουργίες.php
  • login.php
  • register.php;
  • index.php;
  • logout.php;
  • checkAuth.php;
  • στυλ.css

Ο σκοπός καθενός από αυτούς, είμαι σίγουρος ότι καταλαβαίνετε. Ας ξεκινήσουμε με το σενάριο σύνδεσης DBMS. Τον έχετε ήδη δει. Απλώς αποθηκεύστε αυτόν τον κώδικα σεναρίου σε ένα αρχείο που ονομάζεται database.php. Θα δηλώσουμε προσαρμοσμένες συναρτήσεις στο αρχείο functions.php. Πώς θα λειτουργήσουν όλα; Ένας μη εξουσιοδοτημένος χρήστης προσπαθεί να αποκτήσει πρόσβαση σε ένα προστατευμένο έγγραφο index.php, το σύστημα ελέγχει εάν ο χρήστης είναι εξουσιοδοτημένος, εάν ο χρήστης δεν είναι εξουσιοδοτημένος, ανακατευθύνεται στη σελίδα εξουσιοδότησης. Στη σελίδα εξουσιοδότησης, ο χρήστης θα πρέπει να δει μια φόρμα εξουσιοδότησης. Ας τα καταφέρουμε.

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

κανω ΕΓΓΡΑΦΗ.



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

/* αρχείο style.css */ .row ( margin-bottom:10px; width:220px; ) .row label ( display:block; font-weight:bold; ) .row input.text ( font-size:1.2em; padding:2px 5px; ) .to_reg ( font-size:0,9em; ) .instruction ( font-size:0,8em; color:#aaaaaa; margin-left:2px; cursor:default; ) .error ( color:red; margin-αριστερά: 3px;)

Εάν όλα γίνονται σωστά, θα πρέπει να έχετε τα εξής στο πρόγραμμα περιήγησής σας:

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

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

" />


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

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

" />
Το όνομα χρήστη μπορεί να περιέχει μόνο λατινικούς χαρακτήρες, αριθμούς, σύμβολα "_", "-", ".". Το μήκος του ονόματος χρήστη πρέπει να είναι τουλάχιστον 4 χαρακτήρες και όχι περισσότερο από 16 χαρακτήρες
Στον κωδικό πρόσβασης, μπορείτε να χρησιμοποιήσετε μόνο λατινικούς χαρακτήρες, αριθμούς, σύμβολα "_", "!", "(", ")". Ο κωδικός πρόσβασης πρέπει να αποτελείται από τουλάχιστον 6 χαρακτήρες και όχι περισσότερο από 16 χαρακτήρες
Επαναλάβετε τον κωδικό πρόσβασης που εισαγάγατε προηγουμένως


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

Χρειαζόμαστε τα πεδία σύνδεσης και κωδικού πρόσβασης να μην είναι κενά. Στη συνέχεια, πρέπει να ελέγξετε τη σύνδεση για συμμόρφωση με τις απαιτήσεις. Ο κωδικός πρόσβασης πρέπει επίσης να πληροί τις περιγραφόμενες απαιτήσεις και ο επαναπροσδιορισμένος κωδικός πρέπει να ταιριάζει με αυτόν και, επιπλέον, να είναι πανομοιότυποι. Εάν κάποια από αυτές τις προϋποθέσεις δεν πληρούται, η επεξεργασία των δεδομένων της φόρμας θα πρέπει να τερματιστεί, θα πρέπει να εγγραφεί μια κατάλληλη ειδοποίηση στη σειρά των μηνυμάτων σφάλματος και θα πρέπει να εμφανίζεται στον χρήστη. Για τη διευκόλυνση του χρήστη, θα αποθηκεύσουμε το login που έχει εισάγει (αν το έχει καθορίσει), γράφοντας την τιμή του στον πίνακα $fields.

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

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

/** * functions.php * Αρχείο με προσαρμοσμένες συναρτήσεις */ // Συνδέστε το αρχείο με παραμέτρους σύνδεσης στο DBMS require_once("database.php"); // Έλεγχος της συνάρτησης ονόματος χρήστη checkLogin($str) ( // Εκκίνηση μιας μεταβλητής με πιθανό μήνυμα σφάλματος $error = ""; // Εάν δεν υπάρχει συμβολοσειρά σύνδεσης, επιστρέψτε ένα μήνυμα σφάλματος if(!$str) ( $error = " Δεν εισαγάγατε όνομα χρήστη"; επιστροφή $error; ) /** * Έλεγχος του ονόματος χρήστη με κανονικές εκφράσεις * Η σύνδεση δεν πρέπει να είναι μικρότερη από 4, όχι περισσότερους από 16 χαρακτήρες * Πρέπει να περιέχει λατινικούς χαρακτήρες, αριθμούς, * μπορεί να είναι χαρακτήρες "_", "-", "." */ $pattern = "/^[-_.a-z\d](4,16)$/i"; $result = preg_match($pattern, $ str) ; // Εάν ο έλεγχος αποτύχει, επιστρέψτε ένα μήνυμα σφάλματος if(!$result) ( $error = "Μη έγκυροι χαρακτήρες στο όνομα χρήστη ή το όνομα χρήστη είναι πολύ σύντομο (μακρύ)"; επιστροφή $error; ) // Αν όλα είναι εντάξει, επιστροφή true return true; ) // Έλεγχος της συνάρτησης κωδικού πρόσβασης του χρήστη checkPassword($str) ( // Εκκίνηση μεταβλητής με πιθανό μήνυμα σφάλματος $error = ""; // Εάν δεν υπάρχει συμβολοσειρά σύνδεσης, επιστρέψτε ένα σφάλμα μήνυμα if(!$ str) ( $error = "Δεν εισαγάγατε κωδικό πρόσβασης"; επιστροφή $error; ) /** * Ελέγξτε τον κωδικό πρόσβασης του χρήστη χρησιμοποιώντας κανονικές εκφράσεις * Ο κωδικός πρόσβασης δεν πρέπει να είναι μικρότερος από 6, όχι μεγαλύτερος από 16 χαρακτήρες * Πρέπει να περιέχει λατινικούς χαρακτήρες, αριθμούς, * μπορεί να περιέχει χαρακτήρες "_", "!", " (", ")" */ $pattern = "/^[_!)(.a-z\d](6,16)$/i"; $result = preg_match($pattern, $str); // Εάν ελεγχθεί απέτυχε, επιστρέψτε το μήνυμα σφάλματος if(!$result) ( $error = "Μη έγκυροι χαρακτήρες στον κωδικό πρόσβασης χρήστη ή ο κωδικός πρόσβασης πολύ σύντομος (μακρύς)"; επιστροφή $error; ) // Εάν όλα είναι καλά, επιστρέψτε true return true; )

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

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

"; header("Ανανέωση: 5; URL = login.php"); ) // Διαφορετικά, ενημερώστε τον χρήστη σχετικά με το σφάλμα else ( $errors["full_error"] = $reg; ) ) ) ?> Εγγραφή χρήστη
" />
Το όνομα χρήστη μπορεί να περιέχει μόνο λατινικούς χαρακτήρες, αριθμούς, σύμβολα "_", "-", ".". Το μήκος του ονόματος χρήστη πρέπει να είναι τουλάχιστον 4 χαρακτήρες και όχι περισσότερο από 16 χαρακτήρες
Στον κωδικό πρόσβασης, μπορείτε να χρησιμοποιήσετε μόνο λατινικούς χαρακτήρες, αριθμούς, σύμβολα "_", "!", "(", ")". Ο κωδικός πρόσβασης πρέπει να αποτελείται από τουλάχιστον 6 χαρακτήρες και όχι περισσότερο από 16 χαρακτήρες
Επαναλάβετε τον κωδικό πρόσβασης που εισαγάγατε προηγουμένως


Θα έπρεπε να έχετε παρατηρήσει μια ακόμη νέα λειτουργία στο σενάριο - register() . Δεν το έχουμε ανακοινώσει ακόμα. Ας το κάνουμε.

// Εγγραφή συνάρτησης εγγραφής χρήστη ($login, $password) ( // Εκκίνηση μεταβλητής με πιθανό μήνυμα σφάλματος $error = ""; // Εάν δεν υπάρχει συμβολοσειρά σύνδεσης, επιστρέψτε ένα μήνυμα σφάλματος if(!$login) ( $ error = "Δεν έχει καθοριστεί η σύνδεση"; επιστροφή $error; ) elseif(!$password) ( $error = "Ο κωδικός δεν έχει καθοριστεί"; επιστροφή $error; ) // Ελέγξτε εάν ο χρήστης είναι ήδη εγγεγραμμένος // Συνδεθείτε στο DBMS connect() ; // Γράψτε μια συμβολοσειρά ερωτήματος $sql = "SELECT `id` FROM `users` WHERE `login`="" . $login . """; // Κάντε ένα ερώτημα βάσης δεδομένων $query = mysql_query($ sql) ή die( ""); // Δείτε τον αριθμό των χρηστών με αυτήν τη σύνδεση, εάν υπάρχει τουλάχιστον ένας, // επιστρέψτε ένα μήνυμα σφάλματος if(mysql_num_rows($query) > 0) ( $error = "The χρήστης με τα καθορισμένα στοιχεία σύνδεσης είναι ήδη εγγεγραμμένος"; επιστροφή $ σφάλμα; ) // Εάν δεν υπάρχει τέτοιος χρήστης, καταχωρήστε τον // Γράψτε τη συμβολοσειρά ερωτήματος $sql = "INSERT INTO `users` (`id`,`login`, `password`) ΤΙΜΕΣ (NULL, "" . $login . " ","" . $password. "")"; // Κάντε ένα ερώτημα στη βάση δεδομένων $query = mysql_query($sql) ή die("

Δεν είναι δυνατή η προσθήκη χρήστη: " . mysql_error() . ". Παρουσιάστηκε σφάλμα στη γραμμή ". __LINE__."

"); // Μην ξεχάσετε να αποσυνδεθείτε από το DBMS mysql_close(); // Επιστροφή true, υποδεικνύοντας ότι η επιτυχής εγγραφή χρήστη επιστροφής true; )

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

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

;">

Εάν δεν είστε εγγεγραμμένος στο σύστημα, εγγραφείτε.



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

/** * Λειτουργία εξουσιοδότησης χρήστη. * Η εξουσιοδότηση των χρηστών θα πραγματοποιηθεί * με χρήση συνεδριών PHP. */ εξουσιοδότηση συνάρτησης ($login, $password) ( // Εκκίνηση μεταβλητής με πιθανό μήνυμα σφάλματος $error = ""; // Εάν δεν υπάρχει συμβολοσειρά σύνδεσης, επιστρέψτε ένα μήνυμα σφάλματος if(!$login) ( $error = " Δεν έχει καθοριστεί η σύνδεση"; return $error; ) elseif(!$password) ( $error = "Ο κωδικός δεν έχει καθοριστεί"; return $error; ) // Ελέγξτε εάν ο χρήστης είναι ήδη εγγεγραμμένος // Σύνδεση στη σύνδεση DBMS( ); // Πρέπει να ελέγξουμε αν υπάρχει ένας τέτοιος χρήστης μεταξύ των εγγεγραμμένων // Σύνθεση της συμβολοσειράς ερωτήματος $sql = "SELECT `id` FROM `users` WHERE `login`="".$login."" ΚΑΙ `password`="".$password ."""; // Εκτελέστε το ερώτημα $query = mysql_query($sql) ή die("

Δεν είναι δυνατή η εκτέλεση του ερωτήματος: " . mysql_error() . ". Παρουσιάστηκε σφάλμα στη γραμμή ". __LINE__."

"); // Εάν δεν υπάρχει χρήστης με τέτοια δεδομένα, επιστρέψτε ένα μήνυμα σφάλματος if(mysql_num_rows($query) == 0) ( $error = "Ο χρήστης με τα καθορισμένα δεδομένα δεν έχει εγγραφεί"; επιστροφή $error; ) // Εάν υπάρχει ο χρήστης, ξεκινήστε τη συνεδρία session_start(); // Και γράψτε τη σύνδεση και τον κωδικό πρόσβασης του χρήστη σε αυτήν // Για να το κάνετε αυτό, χρησιμοποιούμε τον υπερσφαιρικό πίνακα $_SESSION $_SESSION["login"] = $login; $ _SESSION["password"] = $password; / / Μην ξεχάσετε να κλείσετε τη σύνδεση της βάσης δεδομένων mysql_close(); // Επιστροφή true για την αναφορά επιτυχούς εξουσιοδότησης χρήστη επιστροφή true; )

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

Συνάρτηση checkAuth($login, $password) ( // Εάν δεν υπάρχει σύνδεση ή κωδικός πρόσβασης, επιστρέψτε false if(!$login || !$password) return false; // Ελέγξτε εάν αυτός ο χρήστης είναι εγγεγραμμένος // Σύνδεση στο DBMS connect(); // Συνθέστε τη συμβολοσειρά ερωτήματος $sql = "SELECT `id` FROM `users` WHERE `login`="".$login."" AND `password`="".$password."""; // Εκτελέστε το ερώτημα $ query = mysql_query($sql) ή die("

Δεν είναι δυνατή η εκτέλεση του ερωτήματος: " . mysql_error() . ". Παρουσιάστηκε σφάλμα στη γραμμή ". __LINE__."

"); // Εάν δεν υπάρχει χρήστης με τέτοια δεδομένα, επιστρέψτε false; if(mysql_num_rows($query) == 0) ( return false; ) // Μην ξεχάσετε να κλείσετε τη σύνδεση με τη βάση δεδομένων mysql_close(); // Διαφορετικά, επιστρέψτε true return true;)

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

/** * Σενάριο για έλεγχο εξουσιοδότησης χρήστη */ // Έναρξη της συνεδρίας, από την οποία θα εξαγάγουμε τη σύνδεση και τον κωδικό πρόσβασης // των εξουσιοδοτημένων χρηστών session_start(); // Συμπεριλάβετε ένα αρχείο με προσαρμοσμένες συναρτήσεις require_once("functions.php"); /** * Για να προσδιορίσουμε εάν ένας χρήστης είναι συνδεδεμένος, χρειαζόμαστε * για να ελέγξουμε εάν υπάρχουν εγγραφές στη βάση δεδομένων για το όνομα χρήστη * και τον κωδικό πρόσβασής του. Για να γίνει αυτό, θα χρησιμοποιήσουμε την προσαρμοσμένη λειτουργία * για να ελέγξουμε την ορθότητα των δεδομένων του εξουσιοδοτημένου χρήστη. * Εάν αυτή η συνάρτηση επιστρέψει false, τότε δεν υπάρχει εξουσιοδότηση. * Εάν δεν υπάρχει εξουσιοδότηση, απλώς ανακατευθύνουμε * τον χρήστη στη σελίδα εξουσιοδότησης. */ // Εάν η περίοδος σύνδεσης περιέχει δεδομένα σύνδεσης και κωδικού πρόσβασης, // ελέγξτε τα if(isset($_SESSION["login"]) && $_SESSION["login"] && isset($_SESSION["password" ]) && $_SESSION["password"]) ( // Εάν η επικύρωση των υπαρχόντων δεδομένων αποτύχει εάν(!checkAuth($_SESSION["login"], $_SESSION["password"])) ( // Ανακατεύθυνση του χρήστη στην κεφαλίδα της σελίδας σύνδεσης ("location: login.php"); // Τερματισμός της εκτέλεσης της εξόδου του σεναρίου; ) ) // Εάν δεν υπάρχουν δεδομένα είτε για τη σύνδεση είτε για τον κωδικό πρόσβασης του χρήστη, // θεωρούμε ότι δεν υπάρχει εξουσιοδότηση, ανακατευθύνουμε το χρήστη // στη σελίδα εξουσιοδότησης αλλού ( header("location: login.php"); // Διακοπή εξόδου εκτέλεσης σεναρίου; )

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

Εξουσιοδότηση και εγγραφή χρηστών

Επιτυχής εξουσιοδότηση.

Έχετε πρόσβαση σε μια ασφαλή σελίδα. Μπορείτε να αποσυνδεθείτε.



Όπως μπορείτε να δείτε, στο προστατευμένο έγγραφο περιλαμβάνουμε μόνο ένα αρχείο - checkAuth.php. Όλα τα άλλα αρχεία περιλαμβάνονται σε άλλα σενάρια. Επομένως, ο κώδικάς μας δεν φαίνεται ογκώδης. Έχουμε οργανώσει εγγραφή και εξουσιοδότηση χρηστών. Τώρα πρέπει να επιτρέψετε στους χρήστες να αποσυνδεθούν. Για να γίνει αυτό, θα δημιουργήσουμε ένα σενάριο στο αρχείο logout.php.

/** * Σενάριο αποσύνδεσης χρήστη. Εφόσον οι χρήστες είναι * εξουσιοδοτημένοι μέσω περιόδων σύνδεσης, το όνομα χρήστη και ο κωδικός πρόσβασής τους αποθηκεύονται * στον υπερσφαιρικό πίνακα $_SESSION. Για να αποσυνδεθείτε * από το σύστημα, απλώς καταστρέψτε * τις τιμές των συστοιχιών $_SESSION["login"] και $_SESSION["password"], * μετά την οποία ανακατευθύνουμε τον χρήστη στη σελίδα σύνδεσης */ // Be βεβαιωθείτε ότι θα ξεκινήσετε τη συνεδρία session_start(); unset($_SESSION["login"]); unset($_SESSION["password"]); header("location: login.php");

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

ΥΣΤΕΡΟΓΡΑΦΟ. Γνωρίζω ότι είναι καλύτερο να γράφετε αντικειμενοστραφή κώδικα, ξέρω ότι δεν αξίζει να μεταδώσετε και να αποθηκεύσετε τον κωδικό πρόσβασης σε καθαρό κείμενο, ότι πρέπει πρώτα να ελεγχθούν οι πληροφορίες που εισάγονται στη βάση δεδομένων. Ξέρω. Δεν θα μιλήσω για αυτό εδώ.