Connexion aux annales, registre php. Création d'un système simple d'enregistrement des utilisateurs en PHP et MySQL. Schéma de base de données

Laravel nécessite Composer pour gérer les dépendances du projet. Donc, avant d'installer Laravel, assurez-vous que Composer est installé sur votre système. Si vous entendez parler de Composer pour la première fois, il s'agit d'un outil de gestion des dépendances pour PHP similaire au npm de node.

Pour installer Composer sur votre machine, consultez cet article :

Installation de Laravel sous Windows :

Suivez les étapes ci-dessous pour installer Laravel sur une machine Windows. Peu importe que vous ayez une pile xampp/wamp, cela fonctionne pour les deux. Sur WAMP, assurez-vous d'installer laravel sur le dossier "www" et sur XAMPP, évidemment le "htdocs".

ÉTAPE 1) Ouvrez le dossier « htdocs » sur XAMPP, maintenez la touche MAJ enfoncée et faites un clic droit sur le dossier, puis choisissez « ouvrir la fenêtre de commande ici ». Alternativement, vous pouvez ouvrir la fenêtre de commande et changer le répertoire en "xampp/htdocs".

ÉTAPE-2) Entrez la commande suivante.

Compositeur créer-projet laravel/laravel my_laravel_site --prefer-dist

Ici "my_laravel_site" est le nom du dossier où les fichiers laravel seront installés. Changez cela à votre guise.

ÉTAPE 3) Il est maintenant temps d'être patient car l'installation de Laravel va prendre un certain temps.

ÉTAPE 4) Une fois installé, changez de répertoire en "my_laravel_site" (cd "my_laravel_site") sur l'invite de commande et entrez la commande ci-dessous.

Service artisanal PHP

ÉTAPE 5) Cela affichera un message semblable à « Le serveur de développement Laravel démarré : » ainsi qu'une URL.

ÉTAPE-6) Copiez et collez l'URL sur le navigateur. Si les choses se passent bien, vous verrez l'écran de bienvenue de Laravel.

ÉTAPE-7) Terminé ! Vous avez installé avec succès Laravel sur une machine Windows et vous êtes prêt à l'utiliser.

Définition de la clé d'application :

Laravel nécessite peu de configuration après l'installation. Cela vous oblige à définir la clé d’application. Il s'agit d'une chaîne aléatoire de 32 caractères utilisée pour crypter la session et d'autres données sensibles. Habituellement, cela sera défini automatiquement lorsque vous installerez Laravel via Composer ou le programme d'installation de Laravel.

Dans le cas où il n'est pas défini, vous devez le faire manuellement. Assurez-vous d'abord de renommer le fichier ".env.example" en ".env" à la racine de votre application. Ensuite, ouvrez l'invite de commande et accédez au dossier du projet Laravel. Exécutez maintenant la commande ci-dessous pour générer la clé.

Clé artisanale Php : générer

Copiez cette clé générée dans la variable APP_KEY du fichier ".env". Enregistrez et vous avez terminé.

Installation d'une version spécifique de Laravel :

La méthode donnée ci-dessus permettra à Composer de télécharger et d'installer la dernière version de Laravel. Si vous souhaitez installer des versions antérieures de Laravel sur votre ordinateur, assurez-vous d'inclure le numéro de version correspondant dans la commande create-project.

Composer create-project laravel/laravel=5.4 votre-nom-de-projet --prefer-dist Lire aussi :

De même, vous pouvez installez facilement Laravel en utilisant Composer sur Windows. J'espère que vous trouverez ce tutoriel utile. N'hésitez pas à le partager sur votre cercle social si vous l'aimez.

Dans ce didacticiel, je vous guide à travers le processus complet de création d'un système d'enregistrement des utilisateurs dans lequel les utilisateurs peuvent créer un compte en fournissant un nom d'utilisateur, une adresse e-mail et un mot de passe, une connexion et une déconnexion à l'aide de PHP et MySQL. Je vais également vous montrer comment rendre certaines pages accessibles uniquement aux utilisateurs connectés. Tout autre utilisateur non connecté ne pourra pas accéder à la page.

Si vous préférez une vidéo, vous pouvez la regarder sur ma chaîne YouTube

La première chose que nous devrons faire est de configurer notre base de données.

Créez une base de données appelée inscription. Dans le inscription base de données, ajoutez une table appelée utilisateurs. La table des utilisateurs prendra les quatre champs suivants.

  • nom d'utilisateur - varchar (100)
  • e-mail-varchar(100)
  • mot de passe - varchar (100)

Vous pouvez créer cela en utilisant un client MySQL comme PHPMyAdmin.

Ou vous pouvez le créer à l'invite MySQL à l'aide du script SQL suivant :

CREATE TABLE `users` (`id` int(11) NON NULL AUTO_INCREMENT PRIMARY KEY, `username` varchar(100) NON NULL, `email` varchar(100) NON NULL, `password` varchar(100) NOT NULL) MOTEUR =InnoDB CHARSET PAR DÉFAUT=latin1;

Et c'est tout avec la base de données.

Créez maintenant un dossier appelé inscription dans un répertoire accessible à notre serveur. c'est-à-dire créez le dossier dans htdocs (si vous utilisez le serveur XAMPP) ou dans www(si vous utilisez le serveur wampp).

Dans le dossier inscription, créez les fichiers suivants :

Ouvrez ces fichiers dans un éditeur de texte de votre choix. Le mien est Sublime Text 3.

Enregistrement d'un utilisateur

Ouvrez le fichier register.php et collez-y le code suivant :

registre.php :

Registre

Déjà membre? Se connecter



Rien de compliqué jusqu’ici, non ?

Quelques points à noter ici :

Premièrement, notre formulaire action l'attribut est défini sur register.php. Cela signifie que lorsque vous cliquez sur le bouton de soumission du formulaire, toutes les données du formulaire seront soumises à la même page (register.php). La partie du code qui reçoit les données de ce formulaire est écrite dans le fichier server.php et c'est pourquoi nous l'incluons tout en haut du fichier register.php.

Notez également que nous incluons le fichier error.php pour afficher les erreurs de formulaire. Nous y reviendrons bientôt.

Comme vous pouvez le voir dans la section d'en-tête, nous établissons un lien vers un fichier style.css. Ouvrez le fichier style.css et collez-y le CSS suivant :

* (marge : 0px ; remplissage : 0px ; ) corps (taille de police : 120 % ; arrière-plan : #F8F8FF ; ) .header ( largeur : 30 % ; marge : 50 px auto 0px ; couleur : blanc ; arrière-plan : #5F9EA0 ; texte -aligner : centre ; bordure : 1px solide #B0C4DE ; bordure inférieure : aucune ; bordure-radius : 10px 10px 0px 0px ; remplissage : 20px ; ) formulaire, .content (largeur : 30 % ; marge : 0px auto ; remplissage : 20px ; bordure : 1px solide #B0C4DE ; arrière-plan : blanc ; rayon de bordure : 0px 0px 10px 10px ; ) .input-group ( marge : 10px 0px 10px 0px ; ) .input-group label ( affichage : bloc ; alignement du texte : gauche ; marge : 3 px ; ) .input-group input ( hauteur : 30 px ; largeur : 93 % ; remplissage : 5 px 10 px ; taille de police : 16 px ; rayon de bordure : 5 px ; bordure : 1 px gris uni ; ) .btn ( remplissage : 10px ; taille de police : 15px ; couleur : blanc ; arrière-plan : #5F9EA0 ; bordure : aucune ; rayon de bordure : 5px ; ) .error (largeur : 92 % ; marge : 0px auto ; remplissage : 10px ; bordure : 1px solide # a94442 ; couleur : #a94442 ; arrière-plan : #f2dede ; rayon de bordure : 5 px ; alignement du texte : gauche ; ) .success (couleur : #3c763d ; arrière-plan : #dff0d8 ; bordure : 1px solide #3c763d ; marge inférieure : 20 px ; )

Maintenant, le formulaire est magnifique.

Écrivons maintenant le code qui recevra les informations soumises à partir du formulaire et stockons (enregistrons) les informations dans la base de données. Comme promis précédemment, nous faisons cela dans le fichier server.php.

Ouvrez server.php et collez-y ce code :

serveur.php

Les sessions sont utilisées pour suivre les utilisateurs connectés et nous incluons donc une session_start() en haut du fichier.

Les commentaires dans le code expliquent à peu près tout, mais je vais souligner quelques points ici.

L'instruction if détermine si le bouton reg_user du formulaire d'inscription est cliqué. N'oubliez pas que dans notre formulaire, le bouton de soumission a un attribut name défini sur reg_user et c'est ce à quoi nous faisons référence dans l'instruction if.

Toutes les données sont reçues du formulaire et vérifiées pour s'assurer que l'utilisateur a correctement rempli le formulaire. Les mots de passe sont également comparés pour s'assurer qu'ils correspondent.

Si aucune erreur n'a été rencontrée, l'utilisateur est enregistré dans le utilisateurs table dans la base de données avec un mot de passe haché. Le mot de passe haché est pour des raisons de sécurité. Cela garantit que même si un pirate informatique parvient à accéder à votre base de données, il ne pourra pas lire votre mot de passe.

Mais les messages d'erreur ne s'affichent pas maintenant car notre fichier erreurs.php est toujours vide. Pour afficher les erreurs, collez ce code dans le fichier erreurs.php.

0) : ?>

Lorsqu'un utilisateur est enregistré dans la base de données, il est immédiatement connecté et redirigé vers la page index.php.

Et c'est tout pour l'enregistrement. Regardons la connexion des utilisateurs.

Utilisateur connecté

Connecter un utilisateur est une chose encore plus simple à faire. Ouvrez simplement la page de connexion et insérez ce code :

Système d'enregistrement PHP et MySQL

Se connecter

Pas encore membre? S'inscrire



Tout sur cette page est assez similaire à la page register.php.

Désormais, le code qui connecte l'utilisateur doit être écrit dans le même fichier server.php. Ouvrez donc le fichier server.php et ajoutez ce code à la fin du fichier :

// ... // CONNEXION UTILISATEUR if (isset($_POST["login_user"])) ( $username = mysqli_real_escape_string($db, $_POST["username"]); $password = mysqli_real_escape_string($db, $_POST ["mot de passe"]); if (empty($username)) ( array_push($errors, "Le nom d'utilisateur est requis"); ) if (empty($password)) ( array_push($errors, "Le mot de passe est requis"); ) if (count($errors) == 0) ( $password = md5($password); $query = "SELECT * FROM users WHERE username="$username" AND password="$password""; $results = mysqli_query ($db, $query); if (mysqli_num_rows($results) == 1) ( $_SESSION["username"] = $username; $_SESSION["success"] = "Vous êtes maintenant connecté"; header(" location: index.php"); )else ( array_push($errors, "Mauvaise combinaison nom d'utilisateur/mot de passe"); ) ) ) ?>

Encore une fois, tout cela ne fait que vérifier si l'utilisateur a rempli le formulaire correctement, vérifie que ses informations d'identification correspondent à un enregistrement de la base de données et le connecte si c'est le cas. Une fois connecté, l'utilisateur est redirigé vers le fichier index.php avec un message de réussite.

Voyons maintenant ce qui se passe dans le fichier index.php. Ouvrez-le et collez-y le code suivant :

Maison

Page d'accueil

Accueillir

Se déconnecter



La première instruction if vérifie si l'utilisateur est déjà connecté. S'ils ne sont pas connectés, ils seront redirigés vers la page de connexion. Cette page est donc accessible uniquement aux utilisateurs connectés. Si vous souhaitez rendre une page accessible uniquement aux utilisateurs connectés, tout ce que vous avez à faire est de placer cette instruction if en haut du fichier.

La deuxième instruction if vérifie si l'utilisateur a cliqué sur le bouton de déconnexion. Si oui, le système les déconnecte et les redirige vers la page de connexion.

Maintenant, personnalisez-le en fonction de vos besoins et créez un site génial. Si vous avez des inquiétudes ou quelque chose que vous devez clarifier, laissez-le dans les commentaires ci-dessous et de l'aide viendra.

Vous pouvez toujours soutenir en partageant sur les réseaux sociaux ou en recommandant mon blog à vos amis et collègues.

Rétroliens (0)

Mis à jour le: 2019-10-08

Posté sur: 2016-12-21

Au fil du temps, PHP a ajouté des fonctionnalités favorisant le développement d'applications sécurisées, ainsi que des fonctionnalités obsolètes ou supprimées qui facilitaient l'écriture de code non sécurisé.

Lisez ce didacticiel pour apprendre à créer un système de connexion et d'enregistrement moderne qui tire parti des fonctionnalités PHP axées sur la sécurité et utilise jQuery pour envoyer des requêtes AJAX et Bootstrap pour fournir une interface utilisateur rapide et agréable qui peut fonctionner indépendamment du fait que vous utilisiez d'autres frameworks ou pas.



Si vous avez des questions ou des commentaires, vous pouvez poster un message en commentaire de cet article ou dans son .

Journal des modifications

27/03/2017 : Ajout d'informations supplémentaires sur le téléchargement et l'installation à l'aide de l'outil Composer.

01/01/2017 : mise à jour de l'article pour indiquer que ces pratiques restent sécurisées en 2017




Vous devez être un utilisateur enregistré ou vous connecter pour poster un commentaire

Connectez-vous immédiatement avec votre compte sur :

La plupart des sites Web disposent d'un formulaire d'inscription permettant à vos utilisateurs de s'inscrire et peuvent ainsi bénéficier d'une sorte de privilège au sein du site. Dans cet article nous verrons comment créer un formulaire d'inscription en PHP et MySQL.

Nous utiliserons des balises simples ainsi que la balise table pour concevoir la page Web Sign-Up.html. Commençons:

Liste 1: inscription.html

S'inscrire

Formulaire d'inscription
Nom
E-mail
Nom d'utilisateur
Mot de passe
Confirmez le mot de passe



Figure 1:

Description de la page Web sing-in.html :

Comme vous pouvez le voir sur la figure 1, il existe un formulaire d'inscription qui demande quelques données sur l'utilisateur. Ce sont les données communes qui demandent à tout site Web à ses utilisateurs ou visiteurs de créer un identifiant et un mot de passe. Nous avons utilisé la balise table pour afficher les champs de formulaire sur la page Web sous une forme organisée, comme vous pouvez les voir sur la figure 1. Cela semble si simple car nous n'avons pas encore utilisé le style CSS. Maintenant, utilisons les styles CSS et lions le Fichier de style CSS avec page Web sing-up.html.

Liste 2: style.css

/*Fichier CSS pour la page Web d'inscription*/ #body-color( background-color:#6699CC; ) #Sign-Up( background-image:url("sign-up.png"); background-size:500px 500px ; répétition d'arrière-plan : pas de répétition ; pièce jointe d'arrière-plan : fixe ; position d'arrière-plan : centre ; marge supérieure : 150 px ; marge inférieure : 150 px ; marge droite : 150 px ; marge gauche : 450 px ; remplissage : 9 px 35 px ; ) #button( border-radius:10px; width:100px; height:40px; background:#FF00FF; font-weight:bold; font-size:20px; )

Liste 3 : Lien style.css avec la page Web sign-up.html



Figure 2:

Description du fichier style.css :

Dans le fichier CSS externe, nous avons utilisé des styles qui pourraient être nouveaux pour vous. Comme nous avons utilisé une image en arrière-plan et l’avons placée au centre de la page Web. Ce qui est devenu facile à utiliser grâce à la balise html div. Comme nous avons utilisé trois identifiants de balise div. #button, #sing-up et #body-color et nous leur avons appliqué tous les styles CSS et maintenant vous pouvez voir la figure 2, à quel point elle est belle et attrayante. Vous pouvez utiliser de nombreux autres styles CSS, comme les styles CSS 2D et 3D. Il sera plus beau qu’il n’y paraît maintenant.

Après ces travaux simples, nous allons maintenant créer une base de données et une table pour stocker toutes les données dans la base de données des nouveaux utilisateurs. Avant de créer une table, nous devons savoir ce que nous exigeons de l'utilisateur. Au fur et à mesure que nous avons conçu le formulaire, nous créerons le tableau selon le formulaire d'inscription que vous pouvez voir sur les figures 1 et 2.

Liste 3: Requête de table dans MySQL

CREATE TABLE WebsiteUsers (userID int(9) NOT NULL auto_increment, fullname VARCHAR(50) NOT NULL, userName VARCHAR(40) NOT NULL, email VARCHAR(40) NOT NULL, passez VARCHAR(40) NOT NULL, PRIMARY KEY(userID) );

Description du listing 3 :

Une chose que vous devez savoir : si vous ne disposez pas de la fonctionnalité MySQL pour utiliser cette requête, vous devriez également suivre mon article précédent sur . à partir de ce lien, vous pourrez comprendre l'installation et les exigences. Et comment pouvons-nous l'utiliser.

Dans la requête de liste 3, nous avons utilisé tous les éléments dont nous avons besoin pour le formulaire d'inscription. Comme il existe des variables d’e-mail, de nom complet, de mot de passe et de nom d’utilisateur. Ces variables stockeront les données de l'utilisateur, qu'il saisira dans le formulaire d'inscription de la figure 2 pour l'inscription.

Après tous ces travaux, nous allons travailler avec la programmation PHP qui est un langage de programmation côté serveur. C'est pourquoi il faut créer une connexion avec la base de données.

Liste 4: Connexion à la base de données

Description du listing 4 :

Nous avons créé une connexion entre la base de données et nos pages Web. Mais si vous ne savez pas si cela fonctionne ou non, vous utilisez une chose de plus dans la dernière liste de contrôle 5 pour cela.

Liste 5: vérification de la connexion de la connectivité de la base de données

Description Liste 5 :

Dans le Listing 5, j'ai juste essayé de vous montrer que vous pouvez vérifier et confirmer la connexion entre la base de données et PHP. Et une chose de plus, nous n'utiliserons pas le code du listing 5 dans notre page Web d'inscription. Parce que c’est juste pour vous faire comprendre comment vérifier la connexion MySQL.

Nous allons maintenant écrire une application de programmation PHP pour vérifier d'abord la disponibilité de l'utilisateur, puis stocker l'utilisateur s'il est un nouvel utilisateur sur la page Web.

Liste 6: connectivité-sign-up.php

Description de connectivité-sign-up.php

Dans cette application PHP, j'ai utilisé le moyen le plus simple pour créer une application d'inscription pour les pages Web. Comme vous pouvez le voir, nous créons d'abord une connexion comme dans la liste 4. Et puis nous avons utilisé deux fonctions. La première fonction est SignUP() qui est appelée par l'instruction if de la dernière de l'application, où elle confirme d'abord l'appui sur sign up. bouton. Si vous appuyez dessus, il appellera la fonction SingUp et cette fonction utilisera une requête de SELECT pour récupérer les données et les comparer avec le nom d'utilisateur et l'e-mail actuellement saisis par l'utilisateur. Si le nom d'utilisateur et l'e-mail sont déjà présents dans la base de données, il dira désolé, vous êtes déjà inscrit

Si l'utilisateur est nouveau, car son nom d'utilisateur actuel et son identifiant de messagerie ne sont pas présents dans la base de données, l'instruction If appellera NewUser() où elle stockera toutes les informations du nouvel utilisateur. Et l'utilisateur deviendra une partie de la page Web.



figure 3

Dans la figure 3, l'utilisateur saisit des données pour s'inscrire s'il est un ancien utilisateur de cette page Web selon les enregistrements de la base de données. Ainsi, la page Web affichera un message indiquant que l'utilisateur est déjà enregistré si l'utilisateur est nouveau, donc la page Web affichera un message indiquant que l'enregistrement de l'utilisateur est terminé.



Figure 4 :

Lorsque nous avons saisi les données dans le formulaire d'inscription (Figure 4), selon la base de données, le nom d'utilisateur et l'adresse e-mail que nous avons saisis dans le formulaire d'inscription pour l'inscription sont déjà présents dans la base de données. Nous devrions donc essayer un nouveau nom d'utilisateur et une nouvelle adresse e-mail pour nous inscrire avec un nouvel identifiant et un nouveau mot de passe.



Figure 5

Dans la figure 5, il nous confirme le nom d'utilisateur et l'identifiant de messagerie que l'utilisateur a saisis. Les deux ne sont pas présents dans les enregistrements de la base de données. Alors maintenant, un nouvel identifiant et un nouveau mot de passe sont créés et l'utilisateur peut utiliser son nouvel identifiant et son nouveau mot de passe pour se connecter la prochaine fois.

Conclusion:

Dans cet article, nous avons appris la manière la plus simple de créer une page Web d'inscription. Nous avons également appris comment gérer la base de données si nous utilisons PHP et MySQL. J'ai essayé de vous donner des connaissances de base sur la fonctionnalité de la page Web d'inscription. Comment cela fonctionne en back-end et comment nous pouvons changer son apparence en front-end. Pour toute question n’hésitez pas et commentez.

Si vous devez rendre l'une des sections de votre site Web accessible à un cercle de personnes limité mais non précisé, le moyen le plus simple de le faire est d'enregistrer et d'autoriser les utilisateurs. Il existe de nombreuses façons d'autoriser les utilisateurs. Vous pouvez utiliser à la fois les outils du serveur Web et les outils du langage de programmation. Nous parlerons du cas où des sessions PHP sont utilisées.

Vous aimeriez probablement voir une manière plus moderne de créer cette forme. Je n'ai pas encore l'intention de le présenter entièrement de manière moderne et pertinente, mais vous pouvez voir que le formulaire de feedback peut être construit à l'aide de techniques orientées objet en PHP.

Tout d’abord, discutons de toutes les étapes que nous prendrons ensuite. De quoi avons-nous besoin ? Nous avons besoin d'un script qui enregistrera l'utilisateur, autorisera l'utilisateur, redirigera l'utilisateur quelque part après autorisation. Nous devrons également créer une page qui sera protégée contre l'accès par des utilisateurs non autorisés. Pour l'enregistrement et l'autorisation, nous devrons créer des formulaires HTML. Nous stockerons les informations sur les utilisateurs enregistrés dans une base de données. Cela signifie que nous avons toujours besoin d'un script pour nous connecter au SGBD. Tout notre travail sera effectué par des fonctions que nous écrivons nous-mêmes. Nous enregistrerons ces fonctions dans un fichier séparé.

Nous avons donc besoin des fichiers suivants :

  • connexion au SGBD ;
  • fonctions personnalisées ;
  • autorisation;
  • inscription;
  • page protégée ;
  • script d'arrêt de l'utilisateur ;
  • un script qui vérifie l'état d'autorisation de l'utilisateur ;
  • feuille de style pour la conception la plus simple de nos pages.

Tout cela n'aura aucun sens si vous n'avez pas de table correspondante dans la base de données. Lancez votre outil de gestion de SGBD (PhpMyAdmin ou la ligne de commande, selon ce qui est le plus pratique) et exécutez-y la requête suivante :

CREATE TABLE `users` (`id` int(11) NON NULL AUTO_INCREMENT, `login` char(16) NON NULL, `password` char(40) NON NULL, `reg_date` timestamp NON NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (` id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Je nommerai nos fichiers de script comme ceci (ils seront tous dans un seul répertoire) :

  • base de données.php ;
  • fonctions.php ;
  • connexion.php;
  • enregistrement.php;
  • index.php;
  • déconnexion.php;
  • checkAuth.php;
  • style.css.

Le but de chacun d’eux, j’en suis sûr, est clair pour vous. Commençons par le script de connexion au SGBD. Vous l'avez déjà vu. Enregistrez simplement le code de ce script dans un fichier appelé database.php. Nous déclarerons des fonctions personnalisées dans le fichier function.php. Comment tout cela fonctionnera-t-il ? Un utilisateur non autorisé tente d'accéder à un document protégé index.php, le système vérifie si l'utilisateur est autorisé, si l'utilisateur n'est pas autorisé, il est redirigé vers la page d'autorisation. Sur la page de connexion, l'utilisateur devrait voir un formulaire d'autorisation. Faisons-le.

Autorisation de l'utilisateur

registre.



Maintenant, notre formulaire doit recevoir une certaine forme. Parallèlement, nous définirons des règles pour d’autres éléments. Pour l’avenir, je présenterai le contenu de la feuille de style dans son intégralité.

/* fichier 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 ( taille de police:0.9em; ) .instruction ( taille de police:0.8em; couleur:#aaaaaa; marge-gauche:2px; curseur:par défaut; ) .error ( couleur:rouge; marge-gauche:3px; )

Si tout est fait correctement, vous devriez avoir ce qui suit dans votre navigateur :

Bien entendu, nous n’avons pas encore un seul utilisateur enregistré et pour vous connecter, vous devez vous inscrire. Faisons un formulaire d'inscription.

Enregistrement de l'utilisateur

" />


Vous avez probablement remarqué qu'il existe des variables PHP dans le code HTML. Ce sont le contenu des attributs des champs de texte des formulaires, le contenu des conteneurs destinés à afficher les erreurs. Mais nous n'avons pas initialisé ces variables. Faisons cela.

Enregistrement de l'utilisateur

" />
Le nom d'utilisateur ne peut contenir que des caractères latins, des chiffres et les symboles "_", "-", ".". Le nom d'utilisateur ne doit pas contenir plus de 4 caractères ni plus de 16 caractères
Dans votre mot de passe, vous ne pouvez utiliser que des caractères latins, des chiffres et les symboles "_", "!", "(", ")". Le mot de passe ne doit pas comporter moins de 6 caractères ni plus de 16 caractères
Répétez le mot de passe précédemment saisi


Aucun paramètre n'est spécifié dans l'attribut action de la balise form. Dans ce cas, lors de la soumission des données du formulaire, elles seront traitées dans le même script à partir duquel elles ont été envoyées. Cela signifie que nous devons écrire du code qui traite les données du formulaire. Mais parlons d’abord de l’algorithme permettant de les traiter.

Nous avons besoin que les champs login et mot de passe ne soient pas vides. Ensuite, vous devez vérifier la conformité de la connexion aux exigences. Le mot de passe doit également répondre aux exigences décrites, et le mot de passe respécifié doit y correspondre et, en outre, ils doivent être identiques. Si l'une de ces conditions n'est pas remplie, le traitement des données du formulaire doit s'arrêter, une alerte appropriée doit être écrite dans le tableau des messages d'erreur et elle doit être affichée à l'utilisateur. Pour la commodité de l'utilisateur, nous enregistrerons le login qu'il a saisi (s'il l'a spécifié) en écrivant sa valeur dans le tableau $fields.

Si tout va bien, dans la fenêtre de votre navigateur, lorsque vous accédez au document Registration.php, vous devriez voir quelque chose comme ceci :

Supposons maintenant que l'utilisateur ait cliqué sur le bouton d'inscription et n'ait pas rempli les champs du formulaire. Selon notre algorithme, le login et le mot de passe ne peuvent pas être vides. Si cette condition n’est pas remplie, l’inscription n’est pas possible. Nous gardons à l’esprit que le traitement des données du formulaire se produit dans le scénario actuel. Cela signifie que nous devons modifier son code en ajoutant les vérifications appropriées. Discutons immédiatement des contrôles suivants. Si vous avez saisi à la fois un identifiant et un mot de passe, vous devez vérifier leur conformité aux exigences spécifiées. Pour vérifier le login et le mot de passe, nous créerons des fonctions personnalisées dans le fichier function.php.

/** * function.php * Fichier avec fonctions personnalisées */ // Connectez le fichier avec les paramètres de connexion au SGBD require_once("database.php"); // Vérification de la fonction du nom d'utilisateur checkLogin($str) ( // Initialise une variable avec un éventuel message d'erreur $error = ""; // Si la ligne de connexion est manquante, renvoie un message d'erreur if(!$str) ( $error = " Vous n'avez pas saisi de nom d'utilisateur"; return $error; ) /** * Vérifiez le nom d'utilisateur à l'aide d'expressions régulières * Le login ne doit pas être inférieur à 4, pas plus de 16 caractères * Il doit contenir des caractères de l'alphabet latin, nombres, * il peut contenir les caractères "_", "-", "." */ $pattern = "/^[-_.a-z\d](4,16)$/i"; $result = preg_match ($pattern, $str) ; // Si la vérification échoue, renvoie un message d'erreur if(!$result) ( $error = "Caractères invalides dans le nom d'utilisateur ou le nom d'utilisateur est trop court (long)"; return $error; ) // Si tout va bien, renvoie la valeur true return true; ) // Vérification du mot de passe de l'utilisateur fonction checkPassword($str) ( // Initialise une variable avec un éventuel message d'erreur $error = ""; // S'il y a pas de ligne de connexion, renvoie un message d'erreur if(!$ str) ( $error = "Vous n'avez pas entré de mot de passe"; renvoyer $erreur ; ) /** * Vérifiez le mot de passe de l'utilisateur à l'aide d'expressions régulières * Le mot de passe ne doit pas contenir plus de 6 caractères, pas plus de 16 caractères * Il doit contenir des caractères latins, des chiffres, * il peut contenir les caractères "_", "!", " ("", ")" */ $pattern = "/^[_!)(.a-z\d](6,16)$/i"; $result = preg_match($pattern, $str); // Si la vérification n'a pas réussi, renvoie un message d'erreur if(!$result) ( $error = "Caractères invalides dans le mot de passe de l'utilisateur ou le mot de passe est trop court (long)"; return $error; ) // Si tout va bien, return la valeur true renvoie true ; )

Nous devons maintenant modifier le fichier Registration.php pour activer les fonctions que nous avons déclarées. Nous ajouterons une condition au script qui vérifie si le bouton d'enregistrement est cliqué. Dans cette condition, une vérification des identifiants et des mots de passe est lancée. Si l'une des vérifications échoue, nous affichons à nouveau le formulaire et affichons un message d'erreur. S'il n'y a pas d'erreur, nous enregistrons l'utilisateur, nous n'affichons plus le formulaire d'inscription, nous informons l'utilisateur de la réussite de l'inscription et, grâce à la fonction header(), nous le redirigeons vers le formulaire d'autorisation.

Vous vous êtes inscrit avec succès dans le système. Vous serez maintenant redirigé vers la page de connexion. Si cela ne se produit pas, accédez-y en utilisant le lien direct.

"; header("Refresh: 5; URL = login.php"); ) // Sinon, informer l'utilisateur de l'erreur else ( $errors["full_error"] = $reg; ) ) ) ?> Enregistrement de l'utilisateur
" />
Le nom d'utilisateur ne peut contenir que des caractères latins, des chiffres et les symboles "_", "-", ".". Le nom d'utilisateur ne doit pas contenir plus de 4 caractères ni plus de 16 caractères
Dans votre mot de passe, vous ne pouvez utiliser que des caractères latins, des chiffres et les symboles "_", "!", "(", ")". Le mot de passe ne doit pas comporter moins de 6 caractères ni plus de 16 caractères
Répétez le mot de passe précédemment saisi


Vous auriez dû remarquer une autre nouvelle fonction dans le script - Registration() . Mais nous ne l’avons pas encore annoncé. Faisons cela.

// Fonction d'enregistrement de l'utilisateur function Registration($login, $password) ( // Initialise une variable avec un éventuel message d'erreur $error = ""; // S'il n'y a pas de ligne de connexion, renvoie un message d'erreur if(!$login) ( $ error = "Aucun identifiant spécifié"; return $error; ) elseif(!$password) ( $error = "Aucun mot de passe spécifié"; return $error; ) // Vérifiez si l'utilisateur est déjà enregistré // Connectez-vous au DBMS connect() ; // Écrire une chaîne de requête $sql = "SELECT `id` FROM `users` WHERE `login`="" . $login . """; // Faire une requête à la base de données $query = mysql_query ($sql) ou die( ""); // On regarde le nombre d'utilisateurs avec ce login, s'il y en a au moins un, // renvoie un message d'erreur if(mysql_num_rows($query) > 0) ( $error = "L'utilisateur avec le login spécifié est déjà enregistré"; return $ error; ) // S'il n'existe pas d'utilisateur, enregistrez-le // Écrivez une chaîne de requête $sql = "INSERT INTO `users` (`id`,` login`,`password`) VALEURS (NULL, "" . $login . " ","" . $mot de passe. """; // Faire une requête à la base de données $query = mysql_query($sql) ou die("

Impossible d'ajouter l'utilisateur : " . mysql_error() . ". Une erreur s'est produite à la ligne " . __LINE__ . "

"); // N'oubliez pas de vous déconnecter du SGBD mysql_close(); // Renvoie la valeur true, indiquant la réussite de l'enregistrement de l'utilisateur return true; )

Si tout va bien, votre utilisateur sera enregistré. Vous pouvez tester le formulaire. Essayez d'enregistrer des utilisateurs avec les mêmes connexions. Après une inscription réussie, l'utilisateur sera redirigé vers le formulaire d'autorisation. Auparavant, nous créions simplement le balisage pour afficher ce formulaire. Puisqu'aucun paramètre n'est spécifié dans son attribut d'action, les données soumises par le formulaire seront traitées dans le même script. Cela signifie que nous devons écrire du code pour le traitement et l'ajouter au document login.php.

Autorisation de l'utilisateur

;">

Si vous n'êtes pas enregistré dans le système, inscrivez-vous.



Vous avez probablement remarqué que dans le script d'autorisation, nous avons maintenant une autre fonction inconnue - authorisation() . Cette fonction doit autoriser l'utilisateur en vérifiant d'abord si un utilisateur enregistré avec le même identifiant et le même mot de passe existe dans la base de données. Si un tel utilisateur n'est pas trouvé, l'autorisation sera annulée et un message d'échec s'affichera. Si la vérification réussit, la fonction autorisation() lancera une session et y écrira les valeurs de connexion et de mot de passe de l'utilisateur, informera le script que l'autorisation a réussi et le script redirigera l'utilisateur vers une page de ressources protégée.

/** * Fonction d'autorisation utilisateur. * L'autorisation de l'utilisateur sera effectuée * à l'aide de sessions PHP. */ function authorisation($login, $password) ( // Initialise une variable avec un éventuel message d'erreur $error = ""; // S'il n'y a pas de ligne de connexion, renvoie un message d'erreur if(!$login) ( $error = " Login non spécifié"; return $error; ) elseif(!$password) ( $error = "Mot de passe non spécifié"; return $error; ) // Vérifiez si l'utilisateur est déjà enregistré // Connectez-vous au SGBD connect( ); // Nous devons vérifier si un tel utilisateur fait partie des utilisateurs enregistrés // Composez une chaîne de requête $sql = "SELECT `id` FROM `users` WHERE `login`="".$login."" AND ` password`="".$password ."""; // Exécute la requête $query = mysql_query($sql) ou die("

Impossible d'exécuter la requête : " . mysql_error() . ". Une erreur s'est produite à la ligne " . __LINE__ . "

"); // S'il n'y a aucun utilisateur avec de telles données, renvoie un message d'erreur if(mysql_num_rows($query) == 0) ( $error = "L'utilisateur avec les données spécifiées n'est pas enregistré"; return $error; ) // Si l'utilisateur existe, démarrez la session session_start(); // Et écrivez-y le login et le mot de passe de l'utilisateur // Pour cela, nous utilisons le tableau superglobal $_SESSION $_SESSION["login"] = $login; $_SESSION[ "password"] = $password; / / N'oubliez pas de fermer la connexion à la base de données mysql_close(); // Renvoie true pour indiquer une autorisation utilisateur réussie return true; )

Lorsqu'un utilisateur arrive sur une page protégée, vous devez vérifier l'exactitude de ses données d'autorisation. Pour ce faire, nous avons besoin d'une autre fonction personnalisée. Appelons-le checkAuth() . Sa tâche sera de vérifier les données d’autorisation de l’utilisateur avec celles stockées dans notre base de données. Si les données ne correspondent pas, l'utilisateur sera redirigé vers la page de connexion.

Function checkAuth($login, $password) ( // S'il n'y a pas de login ou de mot de passe, return false if(!$login || !$password) return false; // Vérifiez si un tel utilisateur est enregistré // Connectez-vous au DBMS connect(); // Composez une chaîne de requête $sql = "SELECT `id` FROM `users` WHERE `login`="".$login."" AND `password`="".$password.""" ; // Exécute la requête $ query = mysql_query($sql) ou die("

Impossible d'exécuter la requête : " . mysql_error() . ". Une erreur s'est produite à la ligne " . __LINE__ . "

"); // S'il n'y a aucun utilisateur avec de telles données, retournez false; if(mysql_num_rows($query) == 0) ( return false; ) // N'oubliez pas de fermer la connexion à la base de données mysql_close(); // Sinon, retourne vrai, retourne vrai ; )

Maintenant que l'utilisateur est arrivé à la page protégée, il faut appeler la fonction pour vérifier les données d'autorisation. Nous placerons le script d'appel et de vérification dans un fichier checkAuth.php séparé et le connecterons aux pages qui seront fermées au public.

/** * Script de vérification de l'autorisation des utilisateurs */ // Démarre une session dont nous extrairons le login et le mot de passe // des utilisateurs autorisés session_start(); // Connecter un fichier avec des fonctions personnalisées require_once("functions.php"); /** * Pour déterminer si un utilisateur est autorisé, nous devons * vérifier s'il existe des enregistrements dans la base de données pour son identifiant * et son mot de passe. Pour ce faire, nous utiliserons la fonction personnalisée * pour vérifier l'exactitude des données utilisateur connectées. * Si cette fonction renvoie false, alors il n'y a pas d'autorisation. * S'il n'y a pas d'autorisation, nous redirigeons simplement * l'utilisateur vers la page d'autorisation. */ // Si la session contient à la fois des données de connexion et de mot de passe, // vérifiez-les if(isset($_SESSION["login"]) && $_SESSION["login"] && isset($_SESSION["password" ]) && $_SESSION["password"]) ( // Si la vérification des données existantes échoue if(!checkAuth($_SESSION["login"], $_SESSION["password"])) ( // Rediriger l'utilisateur vers l'en-tête de la page de connexion ( "location: login.php"); // Arrêtez d'exécuter le script exit; ) ) // S'il n'y a aucune donnée sur le login ou le mot de passe de l'utilisateur, // nous supposons qu'il n'y a pas d'autorisation, nous redirigeons l'utilisateur // vers la page d'autorisation sinon ( header("location: login.php"); // Arrêter l'exécution du script exit; )

Créons maintenant le code de notre page sécurisée. Ce sera assez simple.

Autorisation et enregistrement des utilisateurs

Autorisation réussie.

Vous avez accédé à une page sécurisée. Vous pouvez vous déconnecter.



Comme vous pouvez le constater, dans un document protégé, nous n'incluons qu'un seul fichier - checkAuth.php. Tous les autres fichiers sont connectés dans d'autres scripts. Notre code ne semble donc pas encombrant. Nous avons organisé l'enregistrement et l'autorisation des utilisateurs. Vous devez maintenant autoriser les utilisateurs à se déconnecter. Pour ce faire, nous allons créer un script dans le fichier logout.php.

/** * Script de déconnexion de l'utilisateur. Étant donné que les utilisateurs * se connectent via des sessions, leur identifiant et leur mot de passe sont stockés * dans le tableau superglobal $_SESSION. Pour * vous déconnecter du système, détruisez simplement les valeurs * du tableau $_SESSION["login"] et $_SESSION["password"], après quoi nous * redirigeons l'utilisateur vers la page de connexion */ // Be assurez-vous de démarrer la session session_start(); unset($_SESSION["connexion"]); unset($_SESSION["mot de passe"]); header("emplacement : login.php");

Le script d'enregistrement, d'autorisation et de vérification des utilisateurs est prêt. Vous pouvez l'utiliser pour vous-même, le compléter, le modifier selon vos besoins. Si vous avez des questions, vous pouvez les poser dans les commentaires. Vous pouvez télécharger tous les fichiers discutés ici, regroupés dans une seule archive.

P.S. Je sais qu'il vaut mieux écrire du code orienté objet, je sais que cela ne vaut pas la peine de transmettre et de stocker un mot de passe en texte clair, que les informations saisies dans la base de données doivent être vérifiées au préalable. Je sais. Je n'en parlerai pas ici.