Transcription
1. Bienvenue et introduction: Hey là, John Morris ici, John Morris en ligne dot com. Donc, je veux être très rapide ce que vous allez apprendre dans ce cours, Donc vous allez apprendre à construire un script de connexion assez avancé. Donc, ce script de connexion, bien
sûr, est exécuté par des sessions. Vous verrez qu'il a une fonctionnalité se souvenir de moi ici pleinement fonctionnel. Souvenez-vous de moi fonctionnalité. Donc, si quelqu'un vérifie cela et qu'ils ferment leur navigateur et reviennent, il se souviendra d'eux et ils seront toujours connectés, même si, parce que nous utilisons des sessions fermant le navigateur détruit les sessions. Nous utilisons des cookies pour les aider à se reconnecter. Tu te souviens d'eux ? Vous pouviez le voir ici. A une inscription parlera. Il y a des moyens faciles, orteil, ajouter des champs et ainsi de suite. Nous avons réinitialisé le mot de passe avec elle afin que vous puissiez avoir ah, mot de passe envoyé par e-mail. Faites-les réinitialiser. Donc c'est un script de connexion assez pleinement fonctionnel,
et nous allons marcher à travers une sorte de comment régler ça, tout le code sécurisant
toutes ces choses parce que nous commençons à parler de la fonctionnalité Se souvenir de moi
et d'une fonctionnalité de réinitialisation du mot de passe. Ces choses sont assez sensibles en termes de pouvoir les sécuriser. On parlera de s'assurer que ces Lee cryptographiques aériens sont sécurisés. Nous allons parler maintenant, insérant tous ces trucs dans la base de données, comment créer la base de données pour ce genre de choses. Il y a un script d'installation en tant que partie de cela qui va jeter un coup d'oeil et juste
vraiment tout séparer, vous
montrer comment le faire. Et comme je l'ai dit, c'est une forme assez avancée ici. Donc, c'est quelque chose que vous pouvez apprendre à faire. Et si vous faites vraiment ça, je veux dire, ce n'est pas quelque chose que tous les codeurs et là-bas savent. Je dirais que c'est probablement, je ne sais pas, 10% 20% peut-être des gens là-bas qui comprennent vraiment comment faire ça Donc vous pouvez vraiment vous
démarquer. Ah, dans une grande façon de savoir comment faire ça. Encore une fois, on va creuser dans tout ça. Je vais te montrer comment construire un mur, comment le sécuriser. Ah, et comment faire en sorte que tout fonctionne. C' est ce qu'il y a dans ce cours. Je suis sûr qu'il y a un bouton d'inscription ou quelque chose par ici. Alors allez-y et cliquez dessus, et j'ai hâte de vous voir dans le cours.
2. Créer une connexion simple et sans base: Hé, là. John Morrissey, John Morris en ligne dot com. Cette leçon. Je vais vous accompagner dans la version simple de ce formulaire de connexion. Donc c'est Ah, ce serait quelque chose que vous n'allez pas distribuer. Peut-être plus utilisé pour les choses internes. Et, vous savez, vous voulez juste ne pas avoir d'orteils, vous ne voulez pas avoir à vous soucier de la base de données et de tout ce genre de choses. Vous voulez juste avoir un simple type de script de connexion qui alors vous pouvez juste mettre un
peu de contenu que vous voulez là-dedans pour les utilisateurs connectés. Vous pouvez être le seul utilisateur connecté. Vous avez peut-être quelques personnes. C' est vraiment à toi de décider. Vous pouvez ajouter plus d'utilisateurs, mais encore une fois, c'est juste une version simple et
non basée sur des données d'un script de connexion. Laisse-moi te montrer ça très vite. J' ai ah, mot de passe, joli nom et mot de passe ici, et en fait, j'ai besoin d'en changer juste là. Mais on le fera quand on sera là. Donc si on frappe Submit, tu peux voir ce à quoi je viens. Un simple écran qui dit, bienvenue à John Morris. Et puis il est donc il a mon nom et sait qui je suis et puis a ce clic ici pour déconnecter les liens. Donc, c'est là que vous pourriez juste avoir vraiment simple ici, mais je montre que vous pouvez réellement saisir des données utilisateur. Donc, il sait qui je suis, et je suis connecté. Si je recharge cette page, vous savez, il va toujours reconnaître que je suis connecté, et puis j'ai juste un simple lien de déconnexion ici. Donc, si je clique ici pour me déconnecter dit que vous êtes maintenant déconnecté et si je retourne ici Ah, c'est en fait la page d'accueil. Donc, c'est un point d'index PHP et affiche à nouveau l'écran de connexion. Donc, je suis sûr que vous avez tout ce qui fonctionne, mais c'est essentiellement ce que fait le script. Si je mets juste un gobbledygook pour ah, nom et pasteur et essaie de le soumettre, vous pouvez voir que je ne suis pas connecté. Et si j'essaie de rafraîchir cette page pour y revenir, je ne peux pas y revenir. Ok, donc c'est une idée simple ici. Maintenant, nous allons en quelque sorte sauter par-dessus et voir tout le code derrière cela. Donc, comme je l'ai dit, c'est un script de connexion sans base de données. Donc, où nous conservons réellement les données de l'utilisateur est dans un fichier de conflit. Et donc c'est essentiellement que je viens de créer dans un tableau ah et le genre d'
espace Natan global ici appelé utilisateurs. Et dans celui-ci, j'ai le nom d'utilisateur, le mot de passe et le nom. Donc juste quelques données simples. Vous pourriez, bien
sûr, ajouter toutes les données que vous vouliez à cela et tout ira bien. Vous pouvez aussi, si je viens de copier ceci et de copier Coller et nous allons juste changer. Ajoutons simplement un nouvel utilisateur ici. Donc, Dawn Juan, nous entrerons toute cette année et nous sauverons ça. Et si je reviens ici et maintenant, je me connecte avec mon nom d'utilisateur Don Juan et appuie sur soumettre. Maintenant, il sait que je suis Don un, et je suis connecté afin que vous puissiez facilement ajouter de nouveaux utilisateurs à cela, ne pas utiliser une base de données, et vous pourriez vous demander d'enregistrer ces noms d'utilisateur et mots de passe dans un fichier PHP comme
celui-ci . C' est très bien, parce que s'ils sont arrivés là-bas, ils ne peuvent pas voir ce dossier de conflit directement là, n' est-ce pas ? n'y a aucun moyen de faire ça. Les serveurs protègent tous contre ce genre de choses. Parce que s'ils avaient accès à votre manteau, même si vous étiez,
disons, les
stocker dans une base de données et que vous étiez en train de hacher, vous auriez quand même vos absurdités et tout ce genre d'état sauvegardés dans vos fichiers. Donc, s'ils ont accès à votre code comme celui-ci, alors ils peuvent obtenir qu'ils peuvent entrer n'importe où ils veulent. Donc, ah, l'
avoir en texte brut ou non haché ici n'est plus, plus ou moins sûr. Ah, alors si on essayait de Hashem ici et de faire tout ce genre de choses, ça ne rendrait pas ça plus sûr parce qu'ils auraient les absurdités, euh, ou les sels. Et ils pourraient simplement recréer. Ah, le hachage de toute façon, donc c'est parfaitement bien de le faire pour ce scénario particulier ici, ils ne seront pas en mesure d'avoir accès à ce fichier. Ah, pour pouvoir voir ces mots de passe et ainsi de suite. Bon, donc c'est le dossier du conflit. Je vais aller de l'avant et fermer une sorte de fermer celle-là parce qu'on n'utilisera plus vraiment ça. Hum, notre fichier principal ici est ce genre de nos gestionnaires sont index point PHP et dedans. Nous avons besoin de ce bas point PHP et ainsi de suite en charge. J' ai déjà parlé de cela, mais j'aime les fichiers de chargement parce que je peux mettre toutes mes instructions require dans ce fichier de chargement puis dans chaque fichier où j'ai besoin d'accéder à ceux que je peux juste faire cela nécessite une fois sur le chargement , et il charge toutes les choses qui sont ici au lieu d'avoir à prendre toutes ces choses et les
mettre en haut d'ici. Donc, c'est essentiellement ce qu'il va charger notre fichier de conflit. Je viens de vous montrer. Et puis il va charger un fichier de notre dossier d'
inclusion, qui est en fait notre classe de connexion que nous allons utiliser ici. On y arrivera dans une seconde. Mais c'est ce que le bas fait. J' essaie juste de passer en revue celles dont on peut se débarrasser de la chauve-souris. Donc Ah, c'est PHP point bas. Bon, donc maintenant nous pouvons en quelque sorte plonger dans cela et vous montrer le gestionnaire initial, donc nous avons PHP à faible point en cours de chargement, ce qui nous donne accès à notre fichier de conflit et à notre classe de connexion. Et puis on a besoin de faire deux choses. Donc, d'abord, nous devons vérifier s'il y a une sorte de données de connexion qui a été soumise. Donc, si nous avons besoin de vérifier si ce formulaire de connexion a été soumis Donc, nous allons vérifier si données de
Post si Si la méthode de requête est une méthode de post. Fondamentalement, si un formulaire a été soumis et si oui, alors la première chose que nous allons faire est que nous allons passer les données de poste à cette méthode de
vérification de connexion dans notre classe de connexion, et encore une fois nous allons passer par ce c'est ça. Mais nous devons être en mesure de gérer ces formulaires. Donc, c'est essentiellement ce que ce bloc un code est juste ici. Il s'occupe des Loggins. Maintenant vous remarquez qu'on ne redirige pas ou quoi que ce soit comme ça, et je vais vous montrer pourquoi ? Parce qu'on va utiliser les séances. Et c'est l'une des bonnes choses à propos de l'utilisation des sessions, c'est que nous n'avons pas à faire un tas de redirections et ainsi de suite. Donc ah, encore une fois, on s'occupait de Loggins. Nous allons vérifier pour voir, fondamentalement, si nous avons besoin de gérer longtemps, et si oui, nous allons le gérer et ensuite nous reviendrons ici et à chaque chargement de pages. Nous allons vérifier la session. Donc essentiellement, ce que cela fait, c'est qu'il prend les données de session. Il vérifie s'il existe des données de session définies liées à cet utilisateur en cours de journalisation. On parlera de ce qu'il y a ici dans une seconde,
mais ça va vérifier si ces données existent. On parlera de ce qu'il y a ici dans une seconde, S' il existe, ça va le vérifier par rapport à ce que nous avons dans notre dossier de conflit. Assurez-vous que ce n'est pas quelque chose de bizarre Ah, ou qu'il y a une sorte d'attaque ou de piratage ou quelque chose comme ça. Ça va vérifier par rapport à ce qu'on a dans notre dossier de conflit. Et s'il y a une correspondance, alors si l'utilisateur est vraiment un utilisateur dans notre système, alors il va aller de l'avant et permettre à cette session de continuer. Et après cela, si nous vérifions la session, alors nous allons inclure notre page d'accueil, qui est celle qui a dit Bienvenue, John. Cliquez ici pour vous déconnecter qui est notre page d'accueil. Et puis si l'utilisateur n'est pas vérifié, alors nous allons inclure notre connexion dans le point PHP. Donc home dot PHP il dit, Hey, bienvenue Et puis le nom d'utilisateur et a le clic toe se déconnecter ici. Ceci est effectivement inclus dans l'index Stop PHP. Donc, cet index stop peach PHP est une sorte de rappeur pour l'ensemble du système, et c'est vraiment un gestionnaire. Ah, et puis, bien
sûr, s'ils ne sont pas authentifiés, alors nous affichons notre journal et notre formulaire ici, et c'est ce que c'est. On sortira tout ça dans une seconde. Mais ce que je veux que vous compreniez à propos de cette page particulière est que, um c'est un qu'il gère Loggins, mais que ce soit vraiment c'est c'est une page de gestionnaire, donc le point d'index PHP vraiment n'affiche rien Tout ce qu'il fait. Est-ce que c'est Zalkind comme un gardien en de basket-ball, c'est diriger le trafic. Et c'est donc dire, il y
a eu ah, après émission. OK, fais ça et une fois que c'est fait. Mais si nous allons vérifier et vérifier l'utilisateur, les utilisateurs ont vérifié que nous allons charger cette page si l'utilisateur n'est pas vérifié. alors on va charger cette page, accord ? Et donc toutes les pages réelles sur lesquelles vous allez réellement voir affichage vont être incluses dans ce point d'index PHP. Maintenant, une chose à propos de ça, la raison pour laquelle je parle de tout ça, c'est parce que si tu voulais créer, disons que tu voulais créer Ah, et dire à propos de page ou quelque chose comme ça, et que tu voulais créer un tout sorte de nouvelle page ici. On fait la maison ou on se connecte. Ok, donc c'est essentiellement la page d'accueil. Supposons que vous vouliez créer une page à propos. Vous utiliseriez ce même gestionnaire. Vous utiliseriez tout le même code, peut-être se débarrasser des Loggins ici et si ah, ce journal en partie ici. Mais la gestion de la demande ici parce que je vais vous montrer sous la forme de la deuxième voie. Vous pourriez le faire, mais ah, vous pourriez probablement vous débarrasser de cette partie. Mais tu voudrais toujours cette partie. Et dans ce cas de dire à propos de la page, ce serait à propos de point PHP ou log and dot PHP. Ok, donc chaque page que vous créez va vérifier la session et ensuite afficher la page qu'ils sont censés voir ou afficher la page de connexion. Vous pourriez également ne pas avoir à faire une inclusion de connexion ici. Tu pourrais le faire. Vous pourriez faire, ah, rediriger
l'en-tête vers une page de connexion. Donc, vous avez des options avec toutes ces choses, et il y a environ 100 façons différentes de faire ce genre de chose. Mais c'est comme ça que j'ai choisi de faire ça. Donc, je veux juste essayer de vous donner une vue d'ensemble ici pour une seconde des façons que vous pouvez changer cela et utiliser ceci et ainsi de suite. Donc, chaque page que vous créez va commencer à essayer d'authentifier l'utilisation de la Terre en utilisant. Vérifiez cette méthode de session de vérification, et il va soit afficher la page de leur vérification, soit il va s'afficher, connecter ou les rediriger vers une page de connexion. Si elles ne sont pas vérifiées,
toutes les pages que vous avez créées sont correctes,
avec çahors du chemin,
alors nous savons que c'est le gestionnaire. Si elles ne sont pas vérifiées, toutes les pages que vous avez créées sont correctes,
avec ça hors du chemin, Nous savons que nous incluons la journalisation d'un PHP. Nous avons le point d'accueil PHP Allons de l'avant et regardons la logique réelle derrière Verify, connectez-vous et vérifiez session parce que ce sont les deux choses principales ici. Très bien, donc c'est notre session de classe. Nous avons ce public. Ah, propriété pour cet utilisateur appelé. On en parlera dans une seconde. Hum et puis nous avons notre méthode constructeur dans notre constructeur. Ce que nous faisons est une mondialisation. Nos utilisateurs disposent d'un tableau à partir de notre membre de fichier de conflit car il a été créé dans la portée globale. Et maintenant, nous sommes à l'intérieur d'une fonction. Nous devons la mondialiser ici. Et puis ce que nous faisons ici est essentiellement capturer cela afin que nous n'ayons pas à nous mondialiser dans toutes les autres fonctions. Nous le capturons comme cette propriété. Euh, cette propriété appelée utilisateurs, donc cela nous permet d'utiliser cette propriété tout au long de notre classe. L' autre chose que nous faisons est de démarrer notre session parce que chaque fois que vous voulez utiliser sessions, vous devez démarrer la session au point le plus élevé. Vraiment ? Et dans ce cas, c'est assez haut dans notre système. Déplacement, Rappelez-vous, à partir de notre PHP point bas, nous incluons le fichier uh, le fichier de conflit, puis nous incluons ce journal dans la classe. Donc, cette section démarre fondamentalement directement parce que c'est dans la méthode du constructeur. Ça commence essentiellement juste après le fichier de conflit, ce qui est très bien. Il doit juste être démarré avant qu'il n'y ait une sortie réelle. Eh bien, il n'y aura pas de sortie dans le fichier de conflit, donc ça marche très bien. Donc, nous obtenons nos utilisateurs de rail set pour que nous puissions l'utiliser à nouveau. Rappelez-vous, il s'
agit de nos noms d'utilisateur et mots de passe réels de notre fichier de conflit. Nous commençons notre séance. C' est ce que nous faisons dans notre constructeur. Et nous sommes en position, chantant une instance au bas de ce dossier. Donc, fondamentalement, chaque page que cela est inclus dans vous allez à l'instance, manger une instance de cette classe et ensuite vous allez démarrer votre session, vous allez mettre en place le rail de vos utilisateurs. Donc, vous êtes fondamentalement apprêté et prêt à travailler avec cela juste en l'incluant dans ah, fichier
particulier. Bon, alors vérifiez Se connecter. Ce que nous avons fait, c'est que nous avons transmis nos données de poste, donc nos données de poste ne sont qu'un nom d'utilisateur et un mot de passe. Donc la première chose que nous allons faire est que nous allons vérifier et voir si le nom d'utilisateur et
le mot de passe sont réellement définis dans ces données de publication. Et c'est pourquoi nous utilisons une déclaration ou ici. Donc, si celui-ci est, si le nom d'utilisateur n'est pas défini ou si le mot de passe n'a pas dit que l'un ou l'autre n'est pas défini, nous allons juste revenir. Faux. Et notre session, nos données de session ne seront pas créées, et donc elles ne le seront pas. Ils ne seront pas autorisés comme connectés, et ils ne pourront pas accéder au contenu protégé. Donc, hum, tout ce qui reste de cette session ici, essentiellement être créé ne va pas leur permettre de se connecter aux orteils. Donc, euh, retourner faux semble fait qu'ils ne peuvent pas se connecter. La prochaine chose qu'on va faire,
c'est qu'on a une sorte de méthode personnalisée ici et essentiellement ce que ça fait. C' est comme si c'était beaucoup comme la fonction dans le tableau en PHP. Sauf que ce qu'il fait, c'est qu'il va en fait d'un niveau plus profond à cause de la façon dont nos Reyes ont mis en place. Mais essentiellement ce que cette méthode fait est de vérifier le nom d'utilisateur qui a été passé, et il est en boucle dans notre tableau d'utilisateurs à partir de notre fichier de conflit pour voir si ce nom d'utilisateur existe dans notre fichier de conflit. C' est ce que fait cette méthode. Vous pouvez regarder ici pour voir comment il le fait, mais je veux dire, tant que vos utilisateurs ou un ressemble à celui que j'ai dans le fichier de conflit ce travail
fonctionnel, il suffit de trouver. Fondamentalement, ce qui est en train de faire une boucle à travers le tableau d'abord, puis en cours d'exécution dans le tableau sur les éléments à l'intérieur du tableau. Donc nous regardons notre dossier de conflit parce que c'est un rayon multidimensionnel. Vous avez ce tableau. C' est une boucle à travers chacun de ces besoins. L' un d'eux est un tableau. Donc, il vérifie ce tableau individuel ici pour voir si ce nom d'utilisateur existe. C' est essentiellement ce que cette méthode fait ici. Et puis il va,
s' il existe, va retourner l'article réel. Donc, il va retourner tout son va retourner ce tableau ici, ou s'il correspond à celui-ci. Ça va, euh, rendre celui-là, et bien sûr, si ça ne correspond pas à aucun, ça reviendra. Faux. Donc c'est comme ça que nous, c'est essentiellement comme ça que nous sortons dans Kato Log in. Nous prenons le nom d'utilisateur qui a été passé. Si ce nom d'utilisateur existe, nous saisissons ce ah particulier, données
utilisateur ce tableau de données ici et ensuite ce que nous faisons ensuite est donc nous avons retourné cela à partir de cela. C' est donc notre tableau de données. Le nom d'utilisateur existe. Donc c'est notre rayon sur cet utilisateur particulier. Et donc nous avons stocké cela comme cet utilisateur maintenant, donc c'est que des données de rayon du fichier de conflit ? Et si ce n'est pas faux parce que, ah, cette méthode renvoie false si le nom d'utilisateur n'a pas été trouvé. Donc, si ce n'est pas faux, nous savons que nous avons utilisé ce nom d'utilisateur existe. Et maintenant, nous allons vérifier le mot de passe de nos données de poste par rapport au mot de passe de cet utilisateur particulier dans notre fichier de conflit. Donc, nous vérifions juste pour voir les mots de passe correspondent, ce qui, bien
sûr, est logique. Si les mots de passe correspondent, alors ce que nous allons faire est de définir une variable d'appel de session très mal appelée nom d'utilisateur , égale au nom d'utilisateur que nous avons obtenu de notre fichier de conflit. Donc c'est ce que nous sommes. C'est la grande chose que nous recherchons ici. Fondamentalement, si le nom d'utilisateur quoi ? Quoi ? Tout ce que nous faisons jusqu'à présent est de vérifier si le nom d'utilisateur existe dans notre
fichier de conflit dans notre tableau d'utilisateurs. Et si le mot de passe qui a été soumis dans le formulaire correspond au mot de passe que nous avons dans notre fichier de
conflit pour cet utilisateur Donc encore une fois, c'est ce que vous imagineriez que vous feriez s'il existe. Et si tout cela correspond, alors nous définissons cette variable de session afin que nous puissions maintenant vérifier si cette
variable de session existe. Lorsque nous vérifions notre session ici parce que nous avons vérifié le mot de passe maintenant façon ne veulent pas ils aient à se connecter à chaque sur chaque chargement de page, juste, parce que je serais évidemment vraiment ennuyeux. Donc, ce que nous faisons, c'est que nous sauvegardons le nom d'utilisateur est une session, et ensuite nous vérifions cela à l'avenir. Et puis, bien
sûr, étaient la formation Vrai, au cas où nous voulons courir quelque chose de cela pour afficher des messages et de soi et Bien sûr , si rien de tout cela si cela échoue, à certains point, on va juste revenir. Faux. Encore une fois, vérifiez. Connectez-vous. Il vérifie si le nom d'utilisateur existe. Il vérifie si le mot de passe de cet utilisateur correspond. Et si c'est le cas, il définit une variable de session appelée nom d'utilisateur, égale au nom d'utilisateur qui a été soumis, et qui est dans le fichier de conflit. Bon, donc c'est vérifier. Connectez-vous maintenant que si nous revenons à l'index, c'est pourquoi ici tout ce que nous avons à faire est de dire t vérifier. La connexion est exécutée, et nous n'avons pas besoin d'en exécuter d'autres, quelque sorte. Si d'autres déclarations hors de cela, non plus. Lorsque cette vérification de connexion s'exécute, soit cette variable de session va être créée ou ce n'est pas le cas. Et puis à partir de là, eh bien, c'est la même chose que chaque chargement de page. Ensuite, nous vérifions simplement si cette variable de session existe ou non. Et nous incluons ensuite le fichier de modèle ah approprié. Basé sur ça. Donc, gérer Loggins est tout le point est juste de créer cette variable de session. Ok, alors nous devons vérifier la session donc ce que nous faisons pour vérifier la session
sera assez simple. Donc, ce que nous faisons, c'est que nous saisissons cette variable de session. Celui que nous venons de créer ici nom d'utilisateur de session. Donc on a attrapé ça. Maintenant, bien
sûr, si nous essayons de saisir ça et qu'il n'existe pas, tout le reste va échouer, d' accord,
donc, mais nous saisissons que Ah, même nous ne voulons pas juste vérifier que cette session variable iss ensemble nous chaque chargement de page que nous voulons vérifier et nous assurer qu'il correspond à un utilisateur qui est dans notre dans notre
fichier de conflit parce qu'il est possible que quelqu'un puisse juste trouver un moyen de définir le
nom d'utilisateur de session sur true et ensuite être en mesure que les gens peuvent contourner ça maintenant. Variables de session, C'est un peu. C' est un peu plus difficile, mais nous voulons simplement ajouter une couche supplémentaire de sécurité ici. Donc, ce que nous faisons, c'est que nous saisissons ce nom d'utilisateur de session et ensuite nous allons l'exécuter
à travers cela dans un rayon. Est-ce la même méthode à partir d'ici et vérifier si le nom d'utilisateur qui est dans cette session Ah, variable correspond à ce qui est dans notre fichier de conflit ? Donc, à chaque chargement de page, nous prenons cette variable de session et nous la vérifions par rapport à ce qui est dans notre fichier de conflit afin que nous nous assurions qu'elle correspond et que quelqu'un ne se
connecte pas à son compte, puis essayons d'aller dans les moyens que les gens peuvent genre de pirater autour de ça si vous ne faites pas ça. Donc, encore une fois, nous vérifions juste chaque chargement de page pour nous assurer que l'utilisateur qui est que nous pensons est
connecté est celui qui est réellement connecté dans le fichier existant sont, ah, notre fichier de conflit. Et on n'y va pas. Nous allons seulement afficher leurs données. Ok, Donc quand nous vérifions la session et que le nom d'utilisateur existe dans notre fichier de conflit, donc si ce n'est pas égal orteil faux ici, alors nous allons définir cet utilisateur la propriété de l'utilisateur égale à cet utilisateur que nous venons de tirer de notre dossier de conflit. Donc encore une fois, ça va avoir toutes ces données de raid et ensuite on reviendra. True si cela la session est vérifiée et false. Si
ce n'est pas le cas maintenant, c'est important ici, car c'est ce qui nous donne accès à nos données parce que nous avons défini ceci sur la propriété pour cette classe. Si nous revenons à Index, vous pouvez voir que nous définissons ici, utilisateur égal à cette propriété de notre classe de connexion à nouveau. Rappelez-vous, nous sommes en position dans une instance de celui-ci ici et nous avons défini cela pour vous connecter. Donc, lorsque vous faites cela, vous pouvez accéder aux propriétés de classe de cette façon ici. Et ce que nous avons fait, c'est que nous avons réglé ça aussi. Qu' est-ce qui était à partir des données que nous avons dans notre fichier de conflit après vérification de la session ? Donc, nous vérifions la session. Essentiellement grande image sage. Nous vérifions la session et vérifions que le nom d'utilisateur est valide. Et puis nous saisissons les données sur cet utilisateur, et nous les stockons dans cette variable utilisateur juste ici pour que nous puissions y accéder sur ces pages ici. Ok, donc à partir de cela, si nous arrivons maintenant au point d'accueil PHP et que nous sommes connectés, vous pouvez voir que nous utilisons cette variable utilisateur juste ici pour afficher le nom. Alors c'est quoi ? Quand nous affichons ce nom ici. C' est ce qui fait que c'est tout ce truc Saisir les données, vérifier la session, puis faire écho ici,
OK, Et puis, enfin, mais pas des moindres, nous avons inclus quelques trucs de modèles ici. C' est vraiment, vraiment simple genre de choses de modèle, donc je ne serais pas trop enveloppé dessus. Vous pouvez, littéralement la raison pour laquelle j'ai écrit ceci comme je l'ai fait avec le fichier d'index. Et ce fait d'être le gestionnaire et d'utiliser inclut tout ce genre de choses. La raison pour laquelle je l'ai fait est que lorsque vous construisez ces pages ici, la
page de connexion , euh, la page d'accueil juste ici. Vous pouvez construire ces fichiers à peu près comme, juste des fichiers de modèle réguliers que vous avez peut-être vu faire des tutoriels avant que vous êtes habitué à signifier que vous pouvez inclure un en-tête. Vous pouvez inclure un quatre pieds de page. Et vous pourriez inclure bootstrap dans tout cela. Vous n'avez pas à vous soucier du système de connexion réel en termes de tout cela, quand il s'agit de la façon dont vous allez modéliser cela. Encore une fois, j'ai un en-tête et un pied de page. On peut les regarder très vite. Je l'ai rendu très basique. J' ai juste le type de doc des étiquettes d'odeur H, l'étiquette de tête, trucs
de base de l'étiquette de tête. Et encore une fois, si vous avez regardé l'un de mes modèles ing vidéos, toutes les choses dont je parle là-dedans en termes de comment aller sur le template ing s'appliqueraient Ah, ici aussi. Le pied de page est vraiment simple de fermer les balises que nous allons au style. Juste un style vraiment basique ici. Hum, ma recommandation est que
si vous allez entrer et vraiment modéliser ça, je voudrais juste me débarrasser de tout ce CSS et réécrire le CSS à partir de zéro. Comment vous voulez et encore En raison de la façon dont cela est fait, vous pouvez mettre ce que vous voulez dans ces fichiers d'en-tête. Vous n'avez pas à vous soucier du journal dans une partie de celui-ci. C' est ce qui rend cette partie importante. Et et pratique est que vous n'avez pas à injecter tous ces trucs dans vos fichiers de modèle. Vous avez vraiment séparé la logique de connexion de la logique de template ing, et vous pouvez simplement modéliser comment vous voulez et ensuite vous avez accès à cela dans ces fichiers. Ici, ces fichiers modèles, vous avez accès à cette variable utilisateur, qui est la principale à laquelle vous avez besoin d'accéder pour afficher les données utilisateur. Et vous pouvez, bien
sûr, étendre ces données utilisateur autant que vous le souhaitez. Bon, donc c'est Ah ah ah ah. Simple. Configurez ici pour l'utiliser Si vous voulez ajouter à nouveau. Si vous voulez ajouter des utilisateurs à
cela, c'est là que vous le feriez à nouveau. C' est quelque chose que vous ne distribueriez pas orteil d'autres personnes. Ce serait quelque chose que vous utilisez pour un usage interne que Onley vous allez
voir le code si vous ne donnez pas ça à d'autres personnes. Ou si vous le donnez à d'autres personnes, votre Il est comme un ami à vous et votre effacement de ce tableau d'utilisateurs, puis les noms d'utilisateur et les mots de passe avant vous. Vous les donnez pour qu'ils ne sachent pas quels sont vos noms d'utilisateur et mots de passe. D' accord. Donc Ah, ça va le faire pour cette leçon. Merci d'avoir regardé. Parlez avec vous la prochaine fois
3. Créer un espace avancé et basé sur la base des données: Hé, là. John Morrissey, John Morris en ligne dot com. Cette leçon. Je vais vous montrer comment créer un peu plus d'un script de connexion avancé, et c'est peut-être celui qui vous intéresse un peu plus. Ce serait quelque chose que vous pourriez redistribuer. Cela implique une sorte de base de données plus du journal de type avancé, complexe, complexe,
moderne et de script que vous pourriez imaginer lorsque vous entendez quelqu'un dire script de connexion. Donc ce que je vais faire, c'est que je vais passer par les choses que j'ai changé ici parce que je Ce que j'ai fait, juste pour que vous sachiez, c'est que j'ai pris ce dossier pour le simple, et je l'ai complètement copié dans l'ensemble de tous les fichiers dans ce fichier avancé . Et puis je n'ai eu qu'à changer quelques choses. Donc, par
exemple, je veux vous montrer que nous avons beaucoup parlé du fichier d'index la dernière fois. Le fichier d'index n'a pas vraiment changé. Et c'était l'une des raisons pour lesquelles le faire de cette façon fonctionne vraiment bien, c'est parce que nous appelons simplement des méthodes. Et Aiken, vous savez, je peux vérifier la connexion et vérifier la session, cependant, veux que cela ne va pas changer. Donc, que j'utilise ah, fichier
texte ou que j'utilise une base de données, aucun de ces trucs ne change. Il y a beaucoup de choses qu'on n'a pas eu à changer ici. Donc je vais passer en revue les choses qui ont changé. Maintenant, le premier genre de gros qui va avoir changé est le fichier de conflit. Et c'est parce que nous ne mettons plus la création de notre tableau d'utilisateurs ici et que nous stockons nos noms
d'utilisateur et nos mots de passe dans le fichier de conflit. On va les stocker dans une base de données. Donc ici, c'est probablement plus comme un fichier de conflit régulier que vous pourriez voir. Où a les détails de la base de données ici. Nous avons donc le nom d'utilisateur, le mot de passe, le nom de la base de données, l'hôte de la base de données, puis le jeu de caractères. Et puis avec ça, je vais aller de l'avant et fermer ça parce qu'on ne parlera
plus trop de ça. Um, aussi avoir ce fichier de chargement, et dans celui-ci j'ai un conflit PHP, et maintenant j'en ai un nouveau à la classe db dot PHP et ensuite à me connecter à point PHP. Donc, nous avons eu confiance en vous connectant avant. Maintenant, nous avons ajouté ce db point PHP Parce que nous allons interagir avec la base de données que les classes ici. C' est une classe de base de données basée sur PDO que j'ai réellement écrite. J' ai fait des tutoriels et écrit sur et ainsi de suite dans d'autres cours et ainsi de suite. Tu vas évidemment avoir ça avec le code source que tu as. Je ne vais pas parcourir cette base de données en profondeur, principalement parce que ce n'est pas vraiment nécessaire pour ce que nous faisons ici. Cette classe de base de données fonctionne simplement. Je vais vous montrer comment utiliser la classe de base de données ou comment nous l'utilisons tout au long de notre
script de connexion . Mais j'ai plein d'autres tutoriels où je parle d'écrire réellement un script de base de données. Donc si ça vous intéresse, j'irais vérifier ça. Donc ah, encore une fois, classe dash db dot PHP Encore une fois, je vais fermer ceci parce que nous ne allons pas vraiment en parler une tonne. Comme je l'ai dit confit, la classe DB, la classe de connexion. Donc je vais fermer ça parce qu'on n'en parlera plus beaucoup, et donc on commence à se contenter de quelques choses. Ah, laissé ici. Donc, les deux principales choses que nous avons changé notre cette vérification connexion dans cette méthode de session de vérification . Et puis nous avons ajouté, Ah, la méthode de
registre ici. Donc, nous allons à l'avant et juste vous montrer ça très vite. Donc, je n'ai pas traversé et supprimé tous les utilisateurs. Je faisais des tests. n'y a pas d'utilisateurs dans la base de données en
ce moment . Je peux te montrer ça très vite. Nous allons aux utilisateurs. Il n'y a rien ici. Ok, donc on ne pourrait évidemment pas se connecter ici. J' ai donc ajouté ce lien sur la page de connexion qui dit S'inscrire ici et qui nous amène à ce enregistré sur la page PHP. Et alors allez-y et entrez mes coordonnées ici, et nous ferons le mot de passe est Morris et va frapper le ciment. Ainsi dit le nombre créé avec succès. Personne ne peut se connecter ici et faire John et Morris. Et vous pouvez voir que nous sommes connectés ici. Et si nous allons à la base de données maintenant, nous allons aux utilisateurs. Vous pouvez voir que nous avons un utilisateur. Ah, l'utilisateur nommé John Le mot de passe. Le mot de passe est haché nous avons notre nom. Donc on a des dossiers ici. Maintenant, si je me déconnecte ici et je vais m'inscrire à nouveau et laissez-moi simplement essayer d'utiliser ce même nom d'utilisateur et de m'inscrire, il dit que le nom d'utilisateur le fait déjà. Donc, nous avons une vérification de base Teoh, voir si les noms d'utilisateurs existent déjà. Nous avons ajouté des enregistrements à une base de données pouvant se connecter, puis utiliser ces informations, hacher des mots de passe, tout ce genre de choses. Donc c'est ce que je vais te montrer ici. D' accord ? Donc, comme je
l'ai dit, les principales choses que nous avons changé notre session de vérification et de vérification. Mais pour en arriver à ce point, nous devons faire un peu de travail arrière. Donc, la première chose que nous devons faire est en fait ici dans PHP mon admin, qui était de créer notre base de données. Donc si nous retournons ici et nous allons juste rentrer chez nous et nous cliquons sur les bases de données maintenant, si vous faites ça sur ah, serveur Web
distant, vous devez probablement y aller, voir le panneau. Et il y a un moyen de le faire dans le panneau C, vous pouvez juste, bien
sûr, le faire. Um, mais vous pouvez aussi le faire à partir d'ici dans PHP dans mon admin. Mais vous pouvez voir ici sous les bases de données. Il dit créer une base de données. Donc, je viens de taper la connexion. J' ai réglé le classement. Teoh ut utf huit Mo quatre soulignements. Être ? Je le crois. Waas oui, juste là. ce moment, Ence moment,à partir du moment où j'enregistre, c'est le genre de générique recommandé. Mais c' est la fois où je fais ça,
ce genre de chose a eu tendance à changer. Donc, en fonction du moment où vous regardez ceci, j'irais juste et sorte de Google ce que le genre de classement standard devrait être. Il y a des exceptions à cela. Vous remarquez qu'il y a différentes langues et autres choses ici. Donc, si vous voulez utiliser principalement avec un certain langage que peut-être vous envisageriez utiliser Ah, certains d'entre eux. Mais encore une fois, je voudrais juste regarder. J' hésite à vous dire d'en utiliser un tout simplement parce que, d'après mon expérience, j'ai vu ce genre de fluctuation et de changement et ainsi de suite, donc je voudrais juste regarder. Mais dans tous les cas, il
suffit de taper le nom de la base de données et de cliquer sur créer. Et donc une fois que vous avez la base de données, alors c'est quand vous pouvez passer à votre fichier de conflit et vous pouvez mettre dans le nom de la base de données, puis sur un serveur distant, vous aurez ah, nom
d'utilisateur et mot de passe que vous créer lorsque vous le faites également. Donc, vous pouvez mettre cette information ici une fois que vous avez fait cela, puis j'ai créé vous avez besoin Vous avez la base de données, mais j'ai besoin de créer la table avec les champs et ainsi de suite. Et donc j'ai créé un script d'installation ici. Donc, une fois que vous avez défini les détails de votre base de données dans votre fichier de conflit, nous allons inclure le fichier de conflit dans la classe de base de données. Et vous pouvez simplement charger cette page de sorte que vous pouvez simplement aller à slash installer point PHP et charger cette page, et il va de l'avant et créer la table pour vous. Bien sûr. Si vous voulez le créer manuellement, toutes les informations sont ici. Vous pouvez le faire à l'intérieur de PHP. Mon administrateur. Une fois que vous allez dans une base de données, euh, alors vous pouvez aller dans et créer des tables afin de créer une table juste ici mettre le nom de
la table, le nombre de colonnes qu'elle va et cela vous aurait permis d'entrer toutes ces informations et vous avez J' ai toutes les données ici. Donc, le nom de celui-ci est I d. C'est une auto int non signée. Donc, il vous indique toutes les informations ici pour chacun si vous voulez le créer manuellement. En tout cas, Ah, si on y va une fois, tout
est fait. Si nous allons à installé à PHP donc il va seulement créer ajustement n'existe pas. On peut revenir ici. C' est ce qui va revenir. Il va décrire la table des utilisateurs que nous venons de créer. Ainsi, vous saurez quand vous allez à ce script d'installation s'il a été réellement créé ou non. Très bien, alors une fois que vous l'avez installé, si vous utilisez ce genre de télécommande ou autre, alors ah, je me débarrasserais de ce script d'installation. Ça ne va pas forcément faire mal à quoi que ce soit parce que, hum, on ne prend aucune sorte d'entrée d'utilisateur. Et, euh, vous savez, nous ne créons la table que si elle n'existe pas déjà. Mais vous mettez en quelque sorte votre structure de base de données là pour que tout le monde puisse voir. Et je suis d'avis aussi. Donnez aux gens le moins d'informations possible sur mes affaires. Donc, euh, encore une fois, je voudrais supprimer cette offre là. Très bien, donc avec cela dit, nous nous débarrassons de ça. Et maintenant, nous avons maintenant une base de données créée. On a nos tables. Maintenant, tout ce qu'il nous faut vraiment faire, c'est nous. abord, nous devons permettre aux gens de s'inscrire, puis nous devons changer la façon dont nous vérifions nos Loggins et nos sessions pour correspondre à ce que nous
avons dans la base de données. Alors allez à PHP enregistré. Nous avons un formulaire assez standard ici, je dirais. Nous mettons notre fichier de chargement ici. Nous avons donc accès à tous nos fichiers de conflit dans notre classe de base de données et notre
classe de connexion . Et puis nous faisons la même chose que nous avons fait avant et en fait, nous avons Loggins ici. Cela devrait être géré. Hé, je peux voir. Je viens de le copier directement sur les enregistrements de poignée, l'inscription. Et puis nous changeons ceci pour enregistrer le statut. Mais nous appelons simplement le registre de connexion de la méthode. Donc, avant que nous soyons utilisés sur la page de connexion, nous utilisons. Ah, le puits, en fait, sur la semaine de la page d'index. Hum,
ici, nous utilisions Verify Login. En gros, j'ai juste copié ceci ici et l'ai changé pour m'inscrire. Donc nous allons appeler cette méthode de registre, que nous ajoutons à notre classe de connexion. On y arrivera dans une seconde. Ah, nous avons notre en-tête inclus. Le formulaire est assez standard. La seule chose qui soit vraiment différente, c'est l'action. Au lieu de soumettre à l'index, arrêtez PHP car le point d'index PHP est ce que les poignées sont Loggins. Nous allons le soumettre à lui-même. Donc nous allons juste laisser l'action vide dans cette soumission formelle à lui-même et ensuite nous
allons utiliser la méthode post. Ah, nous avons une sorte de message d'
état ici va arriver à ça en une seconde. Ça n'a pas vraiment de sens jusqu'à ce que, tu sais, comprenne ce qu'il y a de nouveau dans la classe. Mais le champ A jusqu'à la forme, les champs sont tous à peu près les mêmes. Sauf que nous avons ajouté ce champ pour le nom complet depuis notre inscription. Et c'est l'un des champs que nous voulons collecter. Alors où est avant sur le journal ? Informez-vous uniquement en demandant le nom d'utilisateur et le mot de passe parce que c'est tout ce dont vous avez besoin pour
les connecter ici lors de leur inscription. Nous demandons également leur nom complet afin que nous ayons ces données. Maintenant, bien
sûr, plus
les données que vous voulez collecter et être en mesure d'afficher dans votre type de zone de membres votre annonce Maneri ou là vous êtes connecté zone. Plus vous demandez des informations ici, et vous devez changer votre bien sûr,
votre base de données pour être en mesure de stocker ces données et ainsi de suite. Mais je pense que vous avez l'idée ici. Ce formulaire est vraiment à peu près le même que le formulaire de connexion. Et puis nous avons ajouté un lien vers le journal et le formulaire ici. Donc, quand quelqu'un soumet
ce formulaire, ce qui va se passer est que ça va déclencher ça si bloc ici, parce que la méthode de requête aura été post et va passer les données de post à cette méthode de
registre que nous avons ajoutée sur ici dans notre ah, connectez-vous en classe. Bon, alors allons-y et jetons un coup d'oeil à cette méthode de registre. Donc, ce que nous faisons avec les méthodes de registre était de saisir nos
données de poste . La première chose que nous allons faire est que nous allons vérifier et voir si le nom d'utilisateur qui a été transmis sur un formulaire d'inscription existe déjà parce que nous ne pouvons pas vraiment faire quoi que ce soit s' il existe déjà. J' ai donc créé cette fonction d'aide ou aider sa méthode appelée utilisateur existe. Et donc si nous venons ici, eh bien, et en cela nous allions transmettre le nom d'utilisateur qui a été soumis dans nos données de poste. Donc, ce que nous faisons ici, c'est que nous exécutons une simple requête dans notre base de données, et nous allons sélectionner toutes les informations de notre table d'utilisateurs où le nom d'utilisateur égal au nom d'utilisateur qui a été transmis. Maintenant, cette méthode get results ici est spécifique à cette classe de base de données que j'ai écrite, et elle vous permet d'utiliser des instructions préparées, et donc elle vous permet d'utiliser des instructions préparées sans avoir à ah, à droite. Toute la liaison et l'exécution et la préparation et tout ce truc vous-même. La classe de clip de base de données gère tout cela. Et donc fondamentalement, ce que vous passez dans la classe basée sur les dates est votre requête avec votre espace réservé dedans. Donc c'est juste ici et puis le tableau réel de données à intégrer. Donc, cela a utilisé cet élément. Le nom d'utilisateur correspond à ce détenteur de lieu, et il transmettra ces données. L' utilisation d'instructions préparées le liera correctement et tout cela. Donc vraiment pratique rend cela beaucoup plus facile à exécuter des instructions préparées. Les enquêtes de cette façon aide à abstraire que d'être réellement dans cette classe de connexion. Donc ce que cela va nous rendre, c'est que les résultats de ça vont être, Ah, ça va être, ah, un tableau avec Etes-vous toutes nos données utilisateur ? Donc, ce sera nous allons aller aux utilisateurs. Ce sera un tableau avec ces données, le i d. le nom d'utilisateur,
le mot de passe et le nom. Et donc puisque nous exécutons déjà cette requête au lieu de simplement retourner tour false, où nous allons réellement faire notre classe de base de données, nous regardons la méthode get results. S' il y a des résultats, va retourner les résultats. Mais s'il n'y en a pas, ça reviendra. Faux. Donc, ce que nous allons vérifier ici est de nous assurer que false n'est pas ce qui a été retourné de cette requête Un faux a été retourné. Ensuite, on va sauter ce bloc essentiellement, et on va retourner faux ici. Cependant, si ce n'était pas faux, alors nous allons retourner l'utilisateur. Et c'est une petite bizarrerie de cela parce que c'est la méthode get results. Il met en fait les résultats dans un tableau indexé. Maintenant, dans ce cas, il n'y aura qu'un seul élément parce qu'il n'y a qu'un seul utilisateur dont le nom et l'utilisateur vont correspondre à ce nom d'utilisateur. Donc, il n'y a qu'un seul élément dans le tableau. Donc, nous devons retourner l'élément à zéro Index. Donc c'est un peu bizarre, mais ce n'est pas vraiment une grosse affaire ici. Donc, nous allons retourner ces données utilisateur en utilisant cet utilisateur existe bloc. Donc parce que nous exécutons déjà la requête, nous allons juste nous sauver un peu de performance et juste graver les données parce que nous allons en avoir besoin de toute façon, euh et donc c'est ce que nous faisons ici. Donc encore une fois, cela renvoie faux. Si l'utilisateur ah n'existe pas Donc si l'utilisateur n'a pas ah, si c'est le
cas, Si l'utilisateur n'est pas égal à faux signifiant que fondamentalement si l'utilisateur
existe déjà , alors nous allons retourner ce tableau avec le statut de zéro, ce qui signifie essentiellement est pour false et dire que ce nom d'utilisateur existe déjà. Je vais vous montrer où nous allons utiliser ces messages ici dans une seconde. Mais dans cette méthode particulière, au lieu de simplement revenir à son faux parce que nous avons plusieurs choses qui pourraient arriver, le nom d'utilisateur pourrait déjà exister. Le décompte pourrait être créé avec succès ou il pourrait y avoir une sorte d'air inconnu. Parce que nous avons plusieurs choses et nous ne savons pas exactement laquelle. Nous ne pouvons pas vraiment revenir à son faux Si nous voulons afficher des messages d'état utiles et en particulier celui-ci ici, nous voulons être en mesure de leur dire que vous utilisez votre nom existe déjà. Donc, nous allions revenir et a dit, juste retourné faux. Nous allons retourner un tableau qui dit,
Hey, Hey, ça n'a pas fonctionné et donne ensuite un message que nous pouvons utiliser correctement ? Donc, si le nom d'utilisateur existe, nous allons le renvoyer. Cependant, si elle n'existe pas, alors nous continuerons ici et nous allons aller de l'avant un insertion de cet utilisateur dans la base de données . Nous utilisons donc la méthode insert de la classe de base de données. On va l'insérer dans la table de l'utilisateur dans laquelle nous sommes. Insérez le dans le champ de nom d'utilisateur. On va insérer les données du poste à partir du nom d'utilisateur. Maintenant encore une fois, Rappelez-vous ces méthodes de classe de base de données que la classe de base de données fait les
instructions préparées pour vous. Donc, je ne suis pas je ne mets pas dans une nouvelle donnée non préparée échappée ici peut ressembler ici
parce que je ne fais rien,
hum, hum, passer des noms d'utilisateurs de poste directement dans cette méthode. Mais cette méthode fait tout ce quatrième ok, donc ils peuvent mettre en passant le nom d'utilisateur dans le champ de nom d'utilisateur. Le mot de passe exécutait le hachage du mot de passe. Donc, ce mot de passe a est les hachages de la fonction PHP intégrée que nous avons maintenant qui fonctionne vraiment, vraiment bien. Je vous recommande fortement de l'utiliser sur tout ce que vous avez pu avoir vu dans le passé moi ou quelqu'un d'autre à faire. C' est la dernière et la meilleure façon de patcher les mots de passe de hachage. Et parce que c'est une fonction PHP intégrée. PHP comme il met à jour et met à jour, va continuer à faire toutes les choses nécessaires. orteils hachent correctement afin que nous n'ayons pas à s'inquiéter à ce sujet. Et donc nous passons le mot de passe que l'utilisateur a entré quand ils ont soumis le
formulaire d'inscription , et nous utilisons cet algorithme mot de passe par défaut. Je veux vraiment vous recommander, à moins que vous ayez une bonne raison. Raison solide. Tu sais pourquoi exactement ? Je veux vous recommander d'utiliser le mot de passe par défaut car le mot de passe par défaut va utiliser à nouveau
le plus récent et le plus grand algorithme PHP car il met à niveau va utiliser le meilleur algorithme disponible. Donc, cela assurera fondamentalement que vous utilisez toujours le meilleur hachage de l'algorithme, un mot de passe au lieu de devoir le comprendre. Vous pouvez juste les laisser gérer cela, donc utiliser le mot de passe par défaut qui va hacher le mot de passe pour nous, et ensuite nous allons passer notre nom de notre poste hors d'ici aussi. Donc nous devons nom d'utilisateur ou mot de passe ou nom. Tous vont être insérés dans notre base de données en utilisant notre classe de base de données. Donc, si cela retournait que cette méthode ah des classes de base de données va juste retourner, vrai ou faux. Il a été inséré ou non. Et si c'est vrai, alors nous reviendrons. Ah, message
d'état d'un. Et que le comte ou un statut d'un ? Message du nombre créé avec succès. Si ce n'est pas le cas, il sautera ce bloc et il reviendra à ce retour et retournera zéro. Et il y avait une sorte d'air inconnu s'est produit. Nous ne savons pas vraiment quelle est l'erreur. C' est quelque chose qui soit assez rare. Si ça doit être quelque chose à voir avec ta base de données, je veux dire,
tu auras de plus gros problèmes, je suppose, c'est ce que je dirais si ça se déclenche. D' accord. Donc, ce formulaire de registre, alors, sont cette méthode de registre va insérer l'utilisateur dans la base de données s'ils sont que le nom d'utilisateur est unique, et il nous retournera un message d'état que nous pouvons travailler avec. Donc, si nous venons ici pour nous inscrire, affaiblit le statut du registre est défini sur n'importe quelle méthode de registre retournée, donc le statut du registre sera défini sur ce tableau, le avec le statut et ensuite le message selon que le nom d'utilisateur existait, s'il a été inséré correctement, etcetera. Ça va nous rendre ça. Donc, à cause de cela, nous pouvons alors afficher les messages appropriés ici. Donc d'abord, on va vérifier et voir si le statut d'enregistrement est bien réglé ? Parce que si si c'était égal, parce que s'il n'y avait pas de données de poste soumis, ne va pas être défini. Donc, nous n'avons pas besoin d'afficher quoi que ce soit et puis si c'était réglé, étaient en train de faire une tournée à Eri ici. Et fondamentalement,
ce que cette vérification des zones de
tournage est si le statut est égal à vrai lequel,
si vous n'utilisez pas trois égaux ici si vous n'utilisez pas strict un est le même est vrai est que
la même chose est vrai, mais cela va vérification des zones de
tournage est si le statut est égal à vrai lequel, si vous n'utilisez pas trois égaux ici si vous n'utilisez pas strict un est le même est vrai est que . Il le fera. Ah, ça fera que ça sera évalué à vrai pour le message d'état d'un. Donc, ce sera si ce statut est réglé orteil un que cela sera vrai. Et dans ce cas, la classe définira cette variable de classe sur le succès. Et si ce n'est pas le
cas, si les messages d'état ne sont pas vrais, alors il définira cette classe, um, cette erreur de membre variable de classe. Donc ici, c'est là qu'on fait écho à ce cours. C' est pour notre message. Donc, cela essentiellement yeux pour que nous puissions donner le bon CSS pour un message aérien ou pour, ah, message de
réussite. Donc, cela nous permet de ah, changer cette classe en fonction de ce que nous avons obtenu de notre requête de base de données. Puis ici au lieu de la main dur revêtement d'un message d'état, nous avons juste fait écho aux messages d'état que nous avons reçus de notre
script de connexion . Alors ça ira. Ce sera l'un de ces messages ici. Utilisez le nom existe déjà. Compte créé avec succès, ou un air inconnu se produit en fonction de celui qui est vrai. Droit ? C' est ainsi que nous gérons nos messages aériens. Et juste très vite. Si on va au registre et c'est à John John Morris, ça devrait déjà exister. Ouais,
c' est comme ça que nous obtenons ce nom d'utilisateur. Ah, juste là. Ou ça. Ce message aérien juste ici. Ok, donc ça vous montre la partie de l'inscription. Maintenant, allons voir comment nous vérifions cela. Donc encore une fois, nous interagissons maintenant avec une base de données ici, donc nous devons Nous devons changer, vérifier, se connecter et vérifier la session juste un peu. Eh bien, nous avons déjà une méthode ici qui nous permet de vérifier si un nom d'utilisateur existe et
si oui, nous
donne les données pour cet utilisateur. Eh bien, c'est vraiment ce dont nous avons besoin pour ces deux scénarios déjà. Donc, sous vérification, connectez-vous. Mais vous pouvez voir qu'on fait toujours ça, qu'on l'a fait avant. Donc, poster le nom d'utilisation et les mots de passe de poste. On vérifie s'il a dit que s'ils ne sont pas prêts, on ne peut rien faire de toute façon. Et puis on s'enfuit. Cet utilisateur existe méthode et nous passons le nom d'utilisateur. Donc l'utilisation qui a été soumise par le formulaire, et donc nous allons juste exécuter cela via l'utilisateur existe, et si elle existe, nous allons récupérer les données de l'utilisateur. Sinon, on va se faire faux pour qu'on puisse courir la même chose si le bloc est faux et c'est strict ici parce qu'on veut. Assurez-vous qu'il est strictement faux parce que c'est ce qu'il retourne. Si c'est faux. Ah, si les utilisateurs sont faux ou si ce n'est pas faux, alors on va aller de l'avant et tout faire à l'intérieur de ce bloc. Si ce n'est pas le
cas si ah, si l'utilisateur est faux, nous allons retourner false ici. Ok, donc si l'utilisateur existe que ce qu'on va faire, c'est vérifier le mot de passe. Nous allons donc utiliser le mot de passe Vérifier. C' est donc une autre fonction PHP intégrée pour les mots de passe. Donc, ils avaient le hachage et la sortie du mot de passe, et puis ils avaient également ajouté la vérification du mot de passe. Cela rend vraiment,
vraiment facile de hacher les mots de passe et de vérifier pour voir Vérifier ces mots de passe. Nous n'avons pas à faire de levage lourd. Donc tout ce que nous avons à faire est de prendre le mot de passe qui a été soumis par l'utilisateur, qui sera là en version texte brut. Et nous prenons le mot de passe que nous avons de notre base de données, qui est la version de hachage. Et nous les transmettons dans mot de passe, vérification et mot de passe. Verify va essentiellement remanier le mot de passe de la peinture en texte brut exactement de la même manière qu'il a été haché à l'origine avant qu'il ait été stocké dans la base de données lors de leur inscription et il
vérifiera qu'ils correspondent. Donc, cette méthode fera tout cela pour nous. Vous avez vu dans les choses que j'ai faites avant que ça ne soit sorti avec des mots de passe que vous
deviez faire tout ça. Maintenant tu n'as plus à faire ça. Tout ce que vous avez à faire est de passer le mot de passe qui a été entré dans le formulaire et le hachage de mot que vous avez stocké dans votre base de données dans bâtard. Vérifiez et il vérifiera tout pour vous. Si ce mot de passe vérifie, alors nous pouvons faire ce que nous avons fait avant de pouvoir définir le nom d'utilisateur de session sur, ah, le nom d'utilisateur. Et c'est comme ça que nous avons alors ce que nous utilisons pour vérifier la session ici et nous
reviendrons vrai ici. C' est ainsi que nous vérifions la connexion. Et finalement, ce que nous cherchons, c'est si la connexion est bonne, nous allons définir ce nom d'utilisateur de session et ensuite nous allons l'utiliser ici et vérifier la session, et nous allons le faire à nouveau. On va prendre le nom d'utilisateur, on va l'attraper. Ah, le nom d'utilisateur de session et nous allons à nouveau exécuter ce nom d'utilisateur via l'utilisateur existe pour voir si cet utilisateur existe. Parce que rappelle-toi, on l'a fait avant. La seule différence est que nous allions à notre fichier de conflit dans notre tableau d'utilisateurs pour voir si l'utilisateur existe là. Ici. Nous sommes en train d'acquérir notre base de données à nouveau. Ainsi, chaque fois que la page se charge où vous exécutez cette méthode de session de vérification, il va chercher un nom d'utilisateur, ce bloc de nom d'utilisateur étant défini dans la variable sessions. Et il va vérifier ce qui définit leur par rapport à ce qui est dans la base de données et voir si cet utilisateur existe
réellement dans la base de données. Donc, si cet utilisateur existe, nous allons stocker, rappelez-vous, l'utilisateur existe, cet utilisateur existe. Méthode retourne l'utilisateur, toutes les données de l'utilisateur si cet utilisateur existe. Et donc nous allons stocker cela comme cette variable utilisateur à nouveau, nous allons vérifier si oui ou non, um, c'était faux ou non. Donc, si l'utilisateur existe, alors nous allons définir cet utilisateur égal à l'utilisateur, comme nous l'avons fait auparavant et ont été devenus vrais. Sinon, nous allons retourner faux. Donc j'espère que ce que vous avez vu de tous me rencontrer en traversant tout ça. Est-ce la différence d'un point de vue global ? La différence entre faire les vérifications de connexion et avoir cette
vérification de connexion entre faire dans un fichier texte et faire dans la base de données n'est pas si différente. La seule vraie différence est que vous devez avoir la chose du registre. Et techniquement, tu n'as même pas besoin de ça. Vous pouvez entrer et entrer ces informations manuellement, bien que le hachage soit problématique en ce sens. Mais ces méthodes ici ne sont vraiment pas si différentes. Tout ce que vous faites est juste de saisir les données de la base de données au lieu de les saisir du fichier de conflit et à peu près d'exécuter des vérifications très, très similaires et de faire des choses
très, très similaires. Donc, quand nous appelons cela avancé, est pas tellement plus compliqué que ce que nous avons fait auparavant. Et d'un point de vue d'ensemble. Nous n'avons vraiment pas beaucoup changé, et c'est tout à fait littéral. Si nous allons à la page d'index, rien n'a changé ici. Donc c'est sur les trucs de Lee Internal qui ont vraiment changé, donc l'idée est la même. Vous voulez vérifier que le journal dans les Loggins est correct ? Vous voulez créer la variable de session, puis chaque chargement de page que vous souhaitez protéger. Vous allez vérifier cette variable de session pour voir s'il existe. S' il existe dans le tableau de session, puis si le nom d'utilisateur qui s'y trouve existe réellement dans votre base de données. C' est un utilisateur vérifié. Et puis en plus de ça, une fois que vous aurez ces trucs de base en place, vous pourriez faire toutes sortes de choses. Vous pouvez récupérer plus de données pour chaque utilisateur afin que vous puissiez l'afficher. Je veux dire, c'est comme ça
que vous n'avez pas de sites de commerce électronique que non, toutes les commandes que vous avez faites ou vous savez, vous connectez au remorquage. Je ne connais pas le site PlayStation, et il a toutes ces informations sur votre site Microsoft. Il a toutes les commandes et les trucs que vous avez achetés et
toutes ces informations, tout cela est basé sur cette chose très fondamentale de pouvoir vérifier Loggins et vérifier les utilisateurs. Donc ah, apprendre à faire cela est une chose fondamentale qui vous permettra de développer ensuite à partir de là. Alors c'est tout. Je veux dire, qu'il y a vraiment, euh en fait il y en a ? Eh bien, non, on a effectivement couvert la déconnexion dans l'autre. Donc, la déconnexion est la même ici. Vous détruisez la session. Hum, et c'est à peu près tout. Donc, c'est assez simple. Une autre chose que je devrais mentionner, j'allais mentionner la dernière. Et puis je crois que je ne l'ai pas fait. J' avais dit comment nous voyions. Lorsque nous saisissons notre mot de passe dans le bloc mot de passe, nous les voyons réellement. C' est parce que j'avais défini ce type sur du texte. Vous voulez réellement définir ce mot de passe de type deux. Et j'ai changé ça ici dans le journal. C' est pourquoi si nous venons ici et que nous tapons ce bloc maintenant, vous voyez les points au lieu des mots. Donc d'accord, le butin pour cette leçon demande de regarder. On parlera à la prochaine fois.
4. Ajoutez dans une fonctionnalité Rappelez-moi: Hé, John Morse. Ici. John Morris en ligne dot com. Cette leçon, nous allons entrer dans l'ajout d'une fonctionnalité souvenir de moi à votre journal, informer votre long et script ici. Maintenant, je vais préfacer tout ça en disant que quand tu fais ça, tu es, en quelque sorte de créer une porte dérobée dans ton système. Maintenant, nous allons voir comment vous sécurisez ça. Et probablement la plus grande partie de ce que nous faisons ici est la sécurisation. Parce que le fait de faire la fonctionnalité se souvenir de moi est assez
simple et simple . C' est ce que la partie la plus complexe est en fait de le sécuriser. Donc, vous pourriez trouver pour votre application que le truc se souvenir de moi n'est pas aussi important. Et donc tu serais très bien, à mon avis, ne pas ajouter ça dans ton script si tu ne veux pas avoir ce genre de porte dérobée, OK, tu verras ce que je veux dire quand on entrera dans ça. Mais ce que je veux dire, c'est que vous n'avez pas besoin de l'avoir et ensuite, pour certaines applications, par exemple, ah, les applications
bancaires seraient un exemple vraiment évident. C' est quelque chose que vous ne voudriez vraiment pas dio, parce que encore une fois, c'est une
sorte de porte dérobée dans notre système. Donc, avec ce genre de mise en garde, allons de l'avant et regardons comment vous feriez cela si vous voulez le faire. Donc, la première chose que nous devons faire est que je pense que la partie la plus évidente est que nous devons ajouter une nouvelle contribution à notre formulaire. Donc, si nous regardons notre script ici, nous avons cette nouvelle case à cocher se souvenir de moi ici, et nous faisons juste entrée. Je l'ai fait dans ah, paragraphe tag. Juste parce que nous avons ce souvenir me texte et pour créer un peu plus Ah, espace ici entre le bouton de ciment réel et le bloc de me souvenir juste pour l'esthétique principalement. Donc, nous avons le type d'entrée de la case à cocher. Le nom est Souviens-toi de moi ? Qui est-ce ? La valeur de la pointe 1. Donc, si elle est vérifiée, essentiellement la valeur qui est dans notre tableau de post sera un. Et puis nous avons notre texte de souvenir de moi juste ici, donc assez simple à ce sujet. Ce que cela fait essentiellement est de nouveau lorsque l'ancien a soumis, il y aura un nouvel élément dans le tableau de rayons avec la clé de se souvenir de moi et la valeur définie toe one. Vraiment ? La valeur n'a pas trop d'importance parce que nous allons juste Fondamentalement, si ce n'est pas le
cas, si ce n'est pas vérifié, ce ne sera pas dans le tableau de toute façon. Ah, cette chose, cet élément ne sera pas là, donc c'est comme ça qu'on fait ici. Cela dit,
alors ce que nous allons faire ici, c'est que nous allons ajouter des fonctionnalités à notre vérification connexion parce que c'est notre formulaire de connexion. Nous le faisons lors de notre connexion, donc nous devons y ajouter un peu. Donc, tout est pareil jusqu'à ce point ici. Donc essentiellement ce petit bloc ici, nous vérifions juste si les yeux d'élément se souvenir de moi essentiellement fixés. Et ceci de la façon dont cela fonctionne qui va essentiellement vérifier pour voir si c'est réglé orteil un. Donc, il vérifie si cette case à cocher a été cochée. Et si c'est le cas, nous allons appeler cette nouvelle méthode que nous avons créée appelée Remember me et nous allons transmettre nos données utilisateur que nous avons déjà à notre disposition ici parce que nous allons en avoir besoin. Et je me souviens de ma fonctionnalité. Et nous l'avons déjà ici, donc pas besoin d'interroger à nouveau la base de données. Donc on va aller de l'avant et passer ça dans ce souvenir de moi ? Méthode. Droit. Donc, le fondamentalement, cela a deux parties. Donc, une fois que nous avons vérifié notre formulaire, alors essentiellement ce que nous allons faire est que nous allons créer un
jeton Nous allons créer . On va les stocker dans la base de données. Donc, si nous passons en revue et regardons la base de données, nous avons une nouvelle table annulée jetons et jetons off. Le format serait venu ici à la structure, et nous avons un I d. C'est un int. Nous avons un sélecteur, nous avons un jeton, nous avons un nom d'utilisateur, et ensuite nous avons un moment où il expire. Et si nous venons ici et regardons notre script d'installation, j'ai ajouté ceci au script d'installation ici. Pour que tu puisses. Tout ce que vous devez faire est juste de visiter votre script d'installation à nouveau, et il ne créera pas cette base de données parce que cela existe déjà, et cela créera ce nouveau pour vous puisque celui-ci n'existe pas. Donc, tout ce que vous avez à faire est juste de visiter cette page d'installation à nouveau. Il créera automatiquement cette table pour vous. Mais encore une fois, c'est là que nous allons stocker nos jetons d'authentification qui vont nous permettre de nous souvenir des gens. Essentiellement. C' est ce que tout ça fait ici. Donc fondamentalement, on va stocker les jetons, et
quand on va stocker les jetons,
et
quandquelqu'un visitera une page,
on va extraire les données et on va les vérifier contre Ah,
cookie. quelqu'un visitera une page, on va extraire les données et on va les vérifier contre Ah, Donc, la première chose que nous devons faire ici est que nous devons créer les sélecteurs et que ceux-ci authentifient cet authentificateur. Essentiellement, cela crée une clé publique et privée, je dirais que c'est généralement ce que nous faisons ici. Donc, le sélecteur que vous allez voir ici, nous allons stocker le sélecteur essentiellement large ouvert dans notre cookie, et puis notre authentificateur, nous allons faire un peu d'encodage et ensuite nous utilisons des octets aléatoires étaient en utilisant l'encodage ici. Fondamentalement, nous générons juste ah. Ah, des nombres
aléatoires ici pour faire ça. Donc je veux dire, est
probablement pas exactement ça, mais je le regarde comme une clé publique et privée. Et donc ce que nous faisons ici, c'est,
une fois que nous aurons ceux qui sont générés,
alors nous allons mettre un cookie. Et donc ce que nous faisons ici, c'est, une fois que nous aurons ceux qui sont générés, Le nom du cookie se souviendra de moi ? Et en fait, c'est bon. Et posez ça ici. La valeur du cookie. Les données qui sont réellement stockées dans le cookie sont les deux-points du sélecteur. Et puis nous basons 64 code à nouveau l'authentificateur. Ou dans ce cas, c'est la première fois pour l'authentificateur. Donc, cela crée un cookie qui a essentiellement ces données, le sélecteur et cet authentificateur dedans, nous avons dit, Ah, temps ici. Ah, quand on voulait expirer, c'est Ah, c'est comme 10 jours dans le futur. Ah, c'est le chemin du domaine. S' il est vide, il va juste choisir le domaine actuel. Et puis c'est pour ah, croyez que c'est https seulement. Et puis TLS seulement quelque chose comme ça. Donc c'est si on va regarder Francisco et regarder les cookies. Donc oui, en sécurité. Et puis http, seulement Donc c'est fondamentalement, um ça ne va le faire que si c'est une connexion https, donc vous devrez faire attention à cela. Selon l'endroit où vous installez cela, vous devrez peut-être définir que le faux et ensuite HC TP signifie seulement qu'il ne peut pas être accessible via des langages comme javascript, ce qui est important. Donc, vous vouliez seulement que cela puisse être accédé via Http à nouveau. Tout cela fait partie de la façon dont nous sécurisons ça. Ok, donc nous allons mettre ce cookie, et quand nous avons mis ce cookie, c'est ce
qui va faire que les cookies vont résider dans le navigateur de l'utilisateur. Donc, quand ils disent fermer leur navigateur, ce cookie ne sera pas supprimé. Et la prochaine fois qu'ils ouvrent leur parce que encore avec des sessions, chaque fois qu'ils croak fermé leur navigateur, essentiellement, cela va mettre fin à la session afin qu'ils soient fondamentalement automatiquement déconnectés. Cela nous permet de persister Loggins à travers ah, sessions de
navigateur. Donc, ce cookie, quand ils ferment le navigateur sera toujours là. Donc quand ils ouvrent leur navigateur et qu'ils viennent visiter notre page, s'ils ont cliqué dessus, vous souvenez de moi ? Case à cocher. Ensuite, nous allons essentiellement les reconnecter automatiquement est vraiment ce que c'est. Alors qu'est-ce qui a été encore ? On a mis le cookie. Ici, nous avons notre sélecteur. Nous avons notre authentificateur, et c'est ce que nous allons avoir besoin pour puis vous pour notre jeton ici. Donc, cette partie ici est essentiellement que nous nettoyons les vieux jetons. Donc si vous avec ce système, si vous vous connectez et que vous cochez la case « Se souvenir de moi », ça va créer un jeton qu'il va stocker dans la base de données. Et puis si vous appuyez sur le bouton de déconnexion, nous allons supprimer le cookie de votre navigateur parce que vous avez, essentiellement, lorsque vous cliquez sur déconnecté et à nouveau, vous pouvez changer la façon dont le comportement de cette comme vous le voulez. Mais à mon avis, quand vous cliquez sur déconnecter, vous dites essentiellement que je ne veux plus qu'on me souvienne. Je ne veux pas être connecté automatiquement la prochaine fois. Je ne peux pas revenir. Sinon je veux dire, pourquoi cliquer sur vous déconnecter ? Donc on va supprimer Ah, ce cookie. Eh bien, ce qui se passe quand vous supprimez le cookie, c'est que s'ils reviennent sur le site et qu'ils
cliquent sur cette boîte se souvenir de moi, on va générer un autre jeton et que le sélecteur et l'air authentique seront différent. Et donc il va créer un nouveau jeton, fondamentalement nouveau à l'intérieur de la base de données pour cet utilisateur. Donc, essentiellement, ce qui se passerait, si nous ne faisions aucun nettoyage, vous auriez, vous savez, plusieurs jetons dans la base de données pour le même utilisateur. Et puis en fonction du nombre d'utilisateurs que
vous êtes, vous avez chacun d'entre eux, chacun qui utilise pourrait avoir plusieurs jetons. 10 15 Au fil du temps, ça pourrait être 100 200. Donc que cette table va grandir énorme et que vous allez avoir beaucoup de ces
jetons hors de là, ce qui n'est juste jamais une bonne idée pour rien de lié à la sécurité. Donc essentiellement, ce que nous faisons ici, c'est quand ils se connectent et cela se souvient de moi, cases ont coché et nous exécutons cette méthode se souvenir de moi ici. On va supposer que tous les vieux jetons de l'air vont être invalides ? Donc, c'est essentiellement ce que cela fait maintenant. Le seul qu'ils ne devraient jamais avoir un seul jeton dans la base de données dans la table. Um, parce que nous les supprimons comme ils en créent de nouveaux mais si pour une raison quelconque il y en avait un tas ou autre, cela supprimera réellement chaque jeton dans la base de données que pour cet utilisateur particulier qui se connectait en ce moment. Donc, s'ils en avaient 10 et qu'il supprimerait tous les 10 Donc c'est ce que cela fait ici . Puis à partir de là. Ce que nous voulons faire, c'est que nous voulons insérer le nouveau jeton. Maintenant que nous avons dit notre cookie, nous avons nettoyé tous nos vieux jetons. Maintenant, nous voulons insérer ce nouveau jeton dans la base de données afin que nous puissions l'utiliser lorsque nous vérifions notre session. Donc, nous le faisons. Ah, insérez dans sa base de données, où les jetons incident et off nous avons sélecteur, nom d'utilisateur
jeton et expire qui a transmis notre sélecteur. Tout droit, nous hacher sont authentificateur fondamentalement la raison, comme je le comprends et encore une fois certains de ces trucs quand vous commencez à entrer dans cette sécurité vraiment lourde en cryptographie et tout cela devient un lécher, c'est un peu confus, même pour moi. Mais fondamentalement, l'idée ici est en hachant cet authentificateur. Même si quelqu'un avait accès à notre base de données et obtenu le sélecteur et l'authentificateur, il aurait quand même à faire. Ah, travaillez pour être à déhaché sh ce jeton. Donc, et c'est important, et assez que cela leur prendrait un certain temps pour être en mesure de le faire. Donc c'est pour ça que nous hachons ça. Et puis nous l'associons au nom d'utilisateur. Parce que, bien
sûr, un jeton appartient à Toa un utilisateur, et puis nous avons mis là quand il expire, au cas où nous voulions l'utiliser à un moment donné. Bien que, vraiment, ce qui importe, c'est l'heure que nous avons fixée ici pour ce cookie expirant. Ok, donc avec ce que nous finissons juste pour résumer que quelqu'un clique sur la case « Se souvenir de moi ». Nous exécutons cette méthode se souvenir de moi. Et ce que cette méthode fait, c'est qu'elle crée une clé essentiellement publique et privée. genre de ce que nous stockons dans notre cookie, et nous stockons également dans notre base de données. Ok, donc c'est encore une fois, c'est un cookie sur leur navigateur. Et nous avons aussi commencé dans notre base de données dans ce jetons off, euh, cette table de jetons off. Donc, si vous tombez longtemps, vous pourriez commencer à y voir. Ce qui permet ce que cela va nous permettre de faire, c'est quand ils reviendront sur le site, être en mesure d'attraper le cookie et de dire, OK, vous avez ce cookie. Vérifions la base de données pour voir s'il s'agit d'un jeton d'autorisation valide. Et si c'est le cas, alors on va pouvoir les connecter automatiquement et que cette partie est essentiellement ce qu' on fait ici. Donc, c'est tout le nouveau truc juste ici avant que nous fassions le nom d'utilisateur était Ah do
nom d'utilisateur de session et tous ces trucs étaient ici avant. Donc ce bloc de code, n'est-ce pas ? Voici ce que nous avons ajouté. Donc, fondamentalement, ce que nous faisons est de vérifier si le nom d'utilisateur de session est défini parce que dans ce scénario,
nous supposons qu'ils ont fermé leur navigateur. dans ce scénario, Et donc la session sera terminée. Et donc, quand ils reviennent, le nom d'utilisateur de session ne sera pas défini. Donc, nous allons vérifier et voir si cela dit, si si c'est si c'est vide, si c'est vide et qu'il y a un ensemble de cookies pour cela pour notre site nommé Remember me, qui est fondamentalement nous dire que nous avons le scénario que nous voulons, qui est qu'ils n'ont pas de session active et qu'ils ont le cookie se souvenir de moi. Donc ça veut dire qu'on va aller de l'avant et qu'on les connecte automatiquement. Donc ce qu'on fait, c'est qu'on utilise cette liste de remontées et ah, on explose notre cookie. Donc je me souviens quand on a dit notre cookie Ah, on a créé une chaîne avec un deux-points dedans comme ça. Et puis nous avons le sélecteur d'un côté et l'authentificateur de l'autre côté. Donc essentiellement, quand nous l'explosons,
ce que nous finissons avec, c'est que nous finissons avec un tableau. Un élément est le sélecteur, et un élément est l'authentificateur, puis nous exécutons. Nous lançons cette liste à travers, qui prend essentiellement l'élément qui est le sélecteur et définit cet élément égal au
sélecteur de variable et à l'élément qui est l'authentificateur et définit cela égal à la
variable d'authentification ici. Donc, nous finissons avec, euh, sont le sélecteur réel de notre ensemble de cookies pour saler le sélecteur précieux et les données d'
authentificateur réelles de notre ensemble de cookies à l'authentificateur, qui est ce que nous voulons, fondamentalement. Bon, alors ce qu'on va faire, c'est quand une requête, notre base de données, et nous allons sélectionner les données de la base de données de jetons off où le sélecteur est égal. En fin de compte, nous faisons une déclaration préparée, mais en fin de compte, où il est égal aux sélecteurs R. Donc, nous prenons le sélecteur de notre cookie et l'utilisons pour la base de données queer et trouvons ce sélecteur dans notre table de jetons off. Si ça n'existe pas,
ça veut dire que quelque chose ne va pas. Si ça n'existe pas, Et donc on ne va pas dire qu'on ne va pas faire tout ça, d' accord ? On ne vérifiera pas la séance. Essentiellement, nous sommes Ce qui arriverait fondamentalement, c'est quand nous venons ici pour exécuter le hachage égal qu'il
échouerait . Par conséquent, nous ne définirions pas la session ici, et donc nous continuerions ici et finalement retournerions false, donc nous ne vérifierons jamais la session. Ok, donc c'est ce qu'on fait ici, c'est de voir si ce sélecteur existe. Si ce sélecteur existe, alors nous allons saisir fondamentalement toutes ces données de jeton off. Donc c'est encore une fois. Il va avoir ah, le i d. le sélecteur, le jeton, le nom d'utilisateur et quand il expire, et donc nous saisissons toutes ces données de jeton, et ensuite ce que nous allons faire est Nous allons utiliser ce hachage égal ah, fonction ici. Donc,
fondamentalement, hachage égal va vérifier le jeton Le que nous avons de notre
base de données contre l'authentificateur que nous avons de notre cookie va voir s'ils sont égaux et vous utilisez hachage égal parce que encore une fois, cela devient compliqué. Mais il y a un problème de synchronisation où, um si vous n'utilisez pas d'égal à hachage, cela pourrait rendre plus facile pour quelqu'un d'essayer de force brute parce qu'ils changent
la première partie de, ah, la jeton. Ils changent la lettre, ça va la faire courir plus vite. Je veux dire, encore une fois, ça devient
vraiment, vraiment profondément dedans. Hum, je ne sais pas que ce soit nécessairement besoin de savoir à 100%. Le besoin de savoir est que vous devez exécuter le shash égal. Et donc nous passons notre jeton, qui encore une fois, ce jeton est là où nous avons sauvé notre authentificateur. Nous passons cela dans et puis nous avons passé dans notre authentificateur que nous avons réellement obtenu de notre cookie. Donc, notre authentificateur que nous avons obtenu de notre base de données le compare à notre authentificateur que nous avons obtenu de notre cookie. Et donc ça va voir s'ils s'égalent les uns les autres s'ils dio. Donc, si c'est vrai. Alors ce que nous allons faire est de nous souvenir, cela suppose que le nom d'utilisateur ici est vide. Donc la première chose et nous avons besoin d'un nom d'utilisateur ici si nous voulons faire une véritable authentification. Nous devons donc définir le nom d'utilisateur égal au nom d'utilisateur que nous avons maintenant obtenu de notre base de données à partir de notre connexion ici. Donc, nous le faisons d'abord, puis nous devons également définir notre variable de session. Donc, le cookie va être presque une sorte de contournement une fois. Donc, il va à cela va essentiellement contourner juste la vérification standard pour la session et vérifier ce jeton off et tous ces trucs. Et puis si tout est bon, alors il va définir la session, puis à partir de chaque revue de page sera
basée sur cette session parce que cette session ne sera plus vide. Donc, ce truc si le bloc ne se déclenchera jamais, ok, et puis qu'une fois que nous avons notre nom d'utilisateur et nos sessions ensemble, et ensuite nous pouvons retourner dans nos entraîneurs réguliers comme nous avions avant, ce qui est l'endroit où nous obtenons le données utilisateur afin que nous puissions l'afficher sur nos pages. Donc, comme vous pouvez le voir, c'est pourquoi je vois
que c'est une sorte de porte dérobée dans le sens où vous utilisez un cookie pour
contourner votre type d'authentification de session. Maintenant, tu le rends juste dedans. Mais c'est un sexe essentiellement ce que cela vous permet de faire. Et c'est comme ça que tu fais. Ah, tu te souviens de moi ? Fonctionnalité. Maintenant, un couple. J' appellerais des mises en garde ici, en fonction de la version de PHP que vous exécutez. Vous n'avez peut-être pas cette fonction d'octets aléatoires, et vous n'avez peut-être pas la fonction de hachage égal ici. Donc, ce que j'ai fait est que j'ai inclus une classe appelée Random Compact, qui rendra cette fonction d'octets aléatoires disponible. Si ce n'est pas disponible à la chute en PHP. Et ce hacks hash est égal à la classe, qui rendra le hachage égal à disponible s'il n'est pas disponible par défaut en PHP, tous les deux vérifiés pour voir si ces fonctions existent déjà avant de faire quoi que ce soit. Donc, s'ils existent déjà, ils vont juste utiliser ceux construits en PHP. Mais s'ils n'existent pas, ils vont utiliser ceux qu'ils ont créés dans ces classes qui font fondamentalement la même chose. Donc, une chose que vous remarquerez dans notre charge ah et j'ouvrirais dans notre PHP point bas est maintenant que nous
incluons ce comm pat aléatoire, et ce hachage est égal ici aussi. Donc si tu veux, peut-être que tu ne veux pas les inclure. Ce que vous pourriez faire est de venir ici et vous pourriez commenter les choses et ensuite simplement essayer
d'exécuter une connexion. Si vous n'obtenez pas d'héritiers exécutant une connexion, alors vous pouvez supprimer en toute sécurité ce dossier compact aléatoire dans ce fichier de hachage égal et cela nécessite ici. Et parce que vous avez ce dont vous avez besoin pour intégré pour PHP. Donc, euh, si dans leur fonction, n'existe pas d'erreurs. Donc si tu n'as pas ce dont tu as besoin, essaye
juste de faire un journal et ça va éclater et tu le sauras tout de suite. Donc encore une fois, vous pouvez le calmer. Ceux qui sortent, voyez si ça marche et si c'est le cas, et vous devriez être bon d'y aller, accord. Donc avec tout ce qui dit, alors nous pouvons jeter un oeil à ça. Laissez-moi aller de l'avant
et me connecter, et je vais frapper le bloc souvenir de moi et appuyer sur soumettre et qui me connecte et nous pouvons venir ici aux jetons off et vous pouvez voir que cela a créé un nouveau jeton off ici. Ah, pour moi de l'utiliser. Et puis si nous venons ici, alors nous allons à nos réglages et il faut une seconde pour arriver ici. Ah, vidéo aux paramètres de contenu,
cookies, puis voir tous les cookies et vers le bas. Et, bien
sûr, en fonction du navigateur utilisé être différent. J' ai un type de domaine sur lequel je suis. Et puis si nous regardons dans nos cookies ici, nous avons ce Souvenez-vous de moi et voici notre contenu de notre cookie ici. Donc nous avons le cookie. Maintenant, si je devais fermer ce navigateur et y revenir Ah, et la session serait terminée, mais je serais capable de me connecter avec juste le cookie. Maintenant, tu vas voir ici. Si je clique ici pour me déconnecter, alors je vais ici pour cliquer ici pour me reconnecter, ce qui m'amène juste à la page d'index. Vous voyez, l'information du journal revient. C' est parce que si nous regardons notre déconnexion ce point PHP. C' est essentiellement détruire ce cookie. Donc la façon dont vous détruisez un cookie, c'est que vous l'avez dit. Vous avez défini le cookie et vous avez dit qu'il expirait à un moment dans le passé. C' est ce qu'on fait ici. C' est pourquoi nous avons moins quel que soit le temps est moins 3600 secondes. Donc ça tue le cookie et que, essentiellement, je veux dire, vous pourriez probablement Pol Je déteste dire que vous ne pouvez pas Vous probablement hackers trouver un moyen d'usurper toutes ces informations et ce cookie et être capable de le charger et remettez-le. Mais ce serait, je veux dire, très, très difficile à faire. Et fondamentalement, une fois que vous vous déconnectez, ce jeton devient essentiellement invalide parce que la prochaine fois que vous vous connectez et appuyez sur, souvenez-vous de moi. Il va créer un tout nouveau jeton. Ça va écraser l'autre, et tu n'as plus ce cookie dans ton navigateur. Donc, fondamentalement, cela fait de sorte que vous ne pouvez plus vous connecter de cette façon. Tu dois te reconnecter et tu dois utiliser le bloc « Se souvenir de moi ». Et bien sûr, si vous ne vérifiez pas le souvenir de moi, Block. Ça ne va pas faire tout ça sur les cookies. Tout simplement ne fait rien parce que tout est basé sur si oui ou non ces cases à cocher sont cochées ou non. Très bien, donc c'est comme ça qu'il faut ajouter. Souvenez-vous de moi, fonctionnalité à votre script de connexion. Merci d'avoir regardé. On te parlera la prochaine fois.
5. Créer un mot de passe sécurisé: Hé, John Morse. Ici. John Morris en ligne dot com. Cette leçon. Je vais vous montrer comment ajouter une fonctionnalité de réinitialisation de mot de passe à votre script de connexion ici. Donc ça va être,
ah, ah, une fonction de mot de passe e-mail. Et donc on va devoir mettre à jour certaines des choses qu'on a faites jusqu'ici pour
qu' on ait Ah, un email. Et la raison pour laquelle il s'agit d'une réinitialisation de mot de passe par e-mail est essentiellement, dans la plupart des cas, ce sera le moyen le plus sûr pour vous de le faire. Parce que pour que quelqu'un puisse pirater à nouveau n'importe quel genre de choses,
ce genre de choses va être une porte dérobée essentiellement dans notre système. Donc, nous voulons être très prudents avec ça. Donc, un hacker ah devrait non seulement connaître l'adresse e-mail et tout ce qui non seulement pirater notre système, mais ils auraient dû pirater le compte de messagerie de l'utilisateur. Et donc ah, encore une fois, quand vous arrivez à ce point, cette personne a probablement plus de problèmes que ce qui se passe avec votre système. Donc c'est bien mieux que d'avoir quelque chose sur votre site où ils pourraient entrer des de questions
de
sécurité ou des choses de cette nature. Ah, tout simplement parce que vous mettez tout ça en quelque sorte. Toute la sécurité sur vous et votre système. Ah, et tu vas le redevenir. Ce sera votre système. C' est une cible pour le piratage. Alors que si tu le fais par email, ce sera Gmail ou Yahoo. Donc, encore une fois ,
généralement, la
plupart des situations la façon recommandée de le faire est avec une réinitialisation par e-mail. Donc je vais te montrer ça très vite. Vous verrez que nous avons ici. Nous avons ce mot de passe de réinitialisation. Donc on va y aller et cliquer dessus, et je vais aller de l'avant et entrer mon adresse e-mail. Maintenant, si d'abord j'entre quelque chose qui n'existe pas, nous allons avoir une erreur. Cet e-mail n'existe pas dans nos dossiers. Donc il y a ça. Et puis si j'entre ah, adresse e-mail
correcte, alors nous allons obtenir ce message de réussite qui dit, Vérifiez votre e-mail pour le lien de réinitialisation du mot de passe. Et puis si je viens ici à mon programme de messagerie, je vais faire glisser ça ici. Vous pouvez voir ici. Ah, ce que je finis avec ce Ah qui fuit mon email ici que je peux utiliser. Nous allons aller de l'avant et cliquez dessus et cela va nous conduire à cette page de réinitialisation du mot de passe ici . Et puis je vais réinitialiser mon mot de passe pour ne pas me rappeler ce que c'était la dernière fois . Je l'ai dit pour aller de l'avant et appuyez sur réinitialiser, appuyez, soumettre et il dit, Mot de passe mis à jour. Va frappé avec succès. Connectez-vous ici et nous taperons le nouvel e-mail ici. Ensuite, nous sommes tous connectés. Ok, donc c'est ce que ça nous permet de faire. Ah, et donc c'est assez simple. Maintenant, si nous revenons et me laissons juste sauter rapidement dans mon programme de messagerie et que j'essaie utiliser la même réinitialisation à nouveau et que j'essaie de réinitialiser mon e-mail, vous verrez que j'obtiens un code d'erreur. Ok, donc ils n'ont pas pu traiter ça. Et c'est ce qu'on veut. Parce que maintenant, une fois que ce jeton est utilisé, nous ne voulons pas qu'il soit utilisé à nouveau. Ok, je vais te montrer comment on a fait tout ça. C' est donc l'idée de base. Il y a des choses que nous avons faites ici qui devront passer à travers. abord ira ici au script d'installation. Il y a quelques changements ici, et,
ah, ah, certains de cela vient d'une partie de ceci vient juste de nettoyer et vient juste de faire d'autres tests sur, ah, un certain nombre de serveurs différents. Donc j'essayais juste de m'assurer que sur toutes sortes de serveurs différents,
ça allait toujours marcher. Il y a donc des choses de changement que nous avons dû nettoyer ici une de ces années. Vous remarquerez que j'ai ajouté ici les détails de la base de données et créé une connexion unique directement via PDO à la base de données. Et la raison pour laquelle je l'ai fait est ah, sont notre classe de base de données que nous utilisons est principalement destinée à la post-installation, donc je pourrais passer par, et je pourrais mettre à jour la classe de base de données pour cela. Mais je ne voulais vraiment pas entrer dans cela avec ce cours particulier,
parce que je veux me concentrer sur le journal dans la partie s. Donc ce que j'ai fait ici est juste que j'ai créé ah, une autre connexion à la base de données de centriste séparé de celui que nous utilisons dans le reste du script et c'est sur Lee sur la page d'installation, donc vous pouvez regarder à travers cela, mais à la fin de la journée, cela n'a pas vraiment d'importance. , Ce qui compte ici,
c'est que nous avons créé une nouvelle table appelée Réinitialisation du mot de passe, et nous avons un champ et un champ d'e-mail ah, champ de
sélecteur, un champ de jeton et un champ d'expiration. Donc, si vous regardez, c'est presque identique à nos jetons off, sauf que nous utilisons l'e-mail maintenant au lieu du nom d'utilisateur. Et c'est juste parce que pour les sessions, nous avons besoin de l'utilisateur nommé est ce que nous utilisons pour réinitialiser le mot de passe. L' e-mail est, c'est ce que nous utilisons. Donc c'est la seule raison pour changer les choses. Vous remarquez également que j'ai ajouté un autre champ ici appelé email à la table des utilisateurs, car nous devons maintenant collecter ces données afin que nous puissions envoyer la réinitialisation du mot de passe. Donc, ce que vous pouvez faire est si vous allez dans votre base de données ma suite et que vous allez aux utilisateurs et vous allez aux opérations, vous pouvez venir ici et supprimer la table. Supprimez simplement la table. Je suppose que vous êtes dans un environnement de test. Évidemment, si tu veux que tu l'utilises déjà,
alors ce n'est probablement pas nécessaire. Quelque chose que tu vas vouloir faire. Mais il supprime la table, puis vous pouvez revenir en arrière et visiter le script d'installation à nouveau. Visitez installer le point PHP et il va le réinstaller avec le nouveau champ dedans. Ou tu pourrais y aller si tu voulais entrer dans ma suite. Ah, et vous pourriez aller réfléchir à sa structure et ensuite vous pourriez ajouter un champ et donc Ah, partez. C' est en bas. Tu es capable orteil. Ajouter d'autres champs encore créer. Ah, ajoutez une colonne juste ici pour que vous puissiez ajouter une nouvelle colonne si vous le vouliez et ah, dans ce champ email, donc quelle que soit la façon dont vous voulez le faire. Mais toutes les informations relatives à la façon dont elle est créée sont ici. C' est un diagramme ah ah var à 55. Très bien, donc c'est une sorte de partie de la configuration initiale là-bas. Ensuite, nous aussi sur un formulaire d'inscription. Nous avons ajouté un champ pour l'e-mail ici. Nous avons donc ajouté un e-mail. Ah
, ici. Nous pourrions en fait définir ce type 2 email. Donc le petit HTM Island 5 vérifiera pour nous. C' est une chose que nous pouvons faire là-bas. La classe est définie sur la technologie encore, parce que nous avons tout notre style par défaut basé sur cela, c'est. Techniquement, il est toujours une sorte de champ de texte est juste un type spécial de nom de champ de texte est défini sur e-mail . Et puis si nous allons à notre script de connexion ici et nous regardons notre fonction de registre ici , Donc nous avons ah ensemble de champs obligatoires,nom
d'utilisateur, nom
d'utilisateur passe et e-mail. Ce seront des champs obligatoires. Ah, c'est juste une vérification rapide. Donc, fondamentalement, ce que vous faites est de faire une boucle à travers ce tableau requis et ensuite vous vérifiez si cette clé dans les données de post qui a été soumise est vide ou non. Si c'est vide, si quelqu'un est vide, le 1er 1 vide, nous allons retourner un message d'état de zéro Ah, état de zéro. Dans un message de s'il vous plaît entrer votre et puis quoi que ce soit. La clé est donc nom d'utilisateur, mot ,
e-mail, etc. Donc, qui gère en s'assurant que nous obtenons sont des champs obligatoires. À cette fin, nous le faisons aussi sur le formulaire. Et si nous regardons Registrar PHP. On fait obligatoire ici, mais tu veux toujours. Vous ne voulez pas compter sur les cinq choses HTML. Vous n'aurez pas toujours votre propre dos et script pour faire ces vérifications aussi. Très bien, donc ça fait des champs obligatoires. Et puis c'est que je vais là-bas parce que c'est une nouvelle chose que j'ai ajoutée ici, je ne crois pas que je l'avais déjà fait. Nous avons notre vérification standard pour voir s'ils ont utilisé le nom existe déjà. Et puis tout ce que nous avons fait était d'ajouter cette ligne ici, qui ajoute maintenant va prendre l'e-mail de la Post Data et le mettre dans notre base de données. Et c'est donc vraiment la seule chose en dehors de cela ici qui a changé en termes d'
insertion des données dans notre base de données. Donc c'est assez simple. Donc, nous allons la page de registre. Alors maintenant, quand quelqu'un s'inscrit, il va entrer son nom, son e-mail, son nom d'utilisateur et son mot de passe et affaiblis. Si nous allons vous connecter, cliquez ici pour vous déconnecter, puis nous allons vous inscrire ici. Ils vont maintenant entrer le nom, l'adresse
e-mail, l'
adresse, le nom
d'utilisateur et le mot de passe. D' accord, donc ça nous amène à s'installer maintenant. On a notre email. Ah, que nous collectons. Nous pouvons maintenant l'utiliser pour notre mot de passe. Réinitialiser. Nous avons notre script d'installation. Beaucoup de choses n'ont pas vraiment changé, Index. Et ce genre de choses n'a pas changé, euh, se connecter ici ? La seule chose qui a été ajoutée ici était le lien vers le mot de passe de réinitialisation. Donc, si nous revenons à notre journal, informez tout ce que nous avons ajouté ici était ce lien de réinitialisation du mot de passe. Donc c'est tout ce qui a changé là-bas. Notre dossier de conflit. On a ajouté quelques choses. Donc, parce que nous envoyons un e-mail, nous avons maintenant besoin de quelques choses supplémentaires. Donc nous avons besoin de l'URL du site parce que nous allons envoyer un lien vers qui ? Celui qui renvoie à notre site. Donc ah, nous avons besoin de votre l au lieu de le coder dur tout au long du script. Parce que si je faisais ça, alors tu devras entrer et changer toutes les instances de ça. Je viens de créer Ah constante ici. Et vous pouvez changer cela pour votre l Où vous avez installé ce. C' est le dossier quel que soit. Quel que soit le dossier que vous avez ce script ah téléchargé dans Voilà ce que l'huile que vous mettrez ici à nouveau parce que nous envoyons des e-mails. Nous avons également besoin d'un nom et d'une adresse e-mail pour que vous puissiez définir le nom et l'adresse e-mail ici. Bien sûr. Vous souhaitez également définir les détails de votre base de données pour la base de données que vous créez pour cela. Ah, et puis on a dit une date par défaut. Fuseau horaire par défaut. Je l'ai dit à l'UTC. Vous pouvez, bien
sûr, régler ce que vous voulez. Mais beaucoup de serveurs ces jours-ci, si vous ne définissez pas
ça, ça va lancer une sorte d'erreur. Donc j'ai juste mis ça là eso que, euh, et ça pourrait être réglé et dans n'importe quel fichier. Donc, certains serveurs, si elle est définie dans n'importe quel fichier, alors ce Vous ne verrez pas cet air. Mais je l'ai mis dans le code juste pour que vous n'ayez pas à faire face à ces erreurs. Donc, et il est prêt à utiliser UTC, ce qui pour notre script est Ah, c'est bon. Les dates n'étaient pas vraiment affichées n'importe où à ce stade, nous les utilisons uniquement pour les délais d'expiration, pour notre réinitialisation de mot de passe et pour notre connexion automatique. Donc, notre fonctionnalité se souvenir de moi. Donc, ce n'est pas quelque chose qui a une quelconque importance en termes d'affichage. Droit ? C' est ainsi que nous avons changé notre dossier de conflit. Et puis nous avons changé notre classe de base de données juste un peu. Fondamentalement, celui que nous changeons cet utilisateur execs existe Méthode. Je veux couvrir cela parce que c'est en fait une bonne leçon juste pour aller à la
mise à jour des fonctions ou des méthodes. Donc, si vous vous souvenez, avant cela n'a accepté qu'un seul paramètre et que ce paramètre a été défini par défaut sur nom d'utilisateur Eh bien, nous pouvons. Ce serait bien de pouvoir vérifier si l'utilisateur existe par plus que l'utilisateur que je d
ou le nom d'utilisateur être en mesure de le vérifier par quoi que ce soit. L' e-mail et en particulier, utile dans ce que nous faisons avec notre, hum, ce que nous faisons avec notre réinitialisation de mot de passe parce que nous allons travailler avec l'e-mail . Donc, il est agréable de pouvoir vérifier l'utilisateur par e-mail. C' est donc ce que ce changement nous permet de faire. Donc, si vous vous souvenez, avant qu'il ait un paramètre et vous seriez ah ah mis. Essentiellement quoi ? Vous quelle est la valeur du nom d'utilisateur afin que vous transmettiez le nom d'utilisateur que vous vouliez vérifier pour voir s'il existe. Donc ce que j'ai fait, c'est que je suis parti. Ce premier paramètre a toujours besoin de la même chose. Mais j'ai ajouté un deuxième champ appelé Wear Field, et je l'ai par défaut au nom d'utilisateur. Ce que cela fait, c'est que tout autre endroit où j'ai utilisé l'utilisateur existe déjà, et c'était pour la façon dont il a été construit à l'ancienne. Ils sont tous encore en marche, et c'est important parce que nous ne le faisons pas nécessairement. Il n'est pas nécessairement facile de revenir à travers une mise à jour toutes les instances où nous avons appelé l'utilisateur existe. Et donc j'ai mis à jour la fonction afin qu'elle soit rétrocompatible avec les façons dont nous l'avons déjà utilisée dans notre code, car ce premier paramètre est toujours la même chose. Et puis parce que celui-ci est a une valeur par défaut. Si le paramètre n'est pas que cette seconde amorces ne soit pas passée, il va juste utiliser ce nom d'utilisateur ici. Par défaut, il accepte un nom d'utilisateur ah et utilise le nom d'utilisateur pour Field Field pour
vérifier si l'utilisateur existe. Cependant,
maintenant, nous pouvons passer quelque chose d'autre que nous pourrions mettre dans l'adresse e-mail et le champ d'usure être réglé sur e-mail. Et maintenant, il va sélectionner tous les utilisateurs. Notre sélection tous des utilisateurs. Où l'email Parce que c'est ce que nous avons dit est le champ où Ah est égal et c'est notre place. Le référencement du support est le détenteur de place et finalement notre valeur d'usure. Donc, où l'e-mail est égal à cette adresse e-mail ou s'il s'agit de la valeur par défaut où ce nom d'utilisateur égal, où le nom d'utilisateur est égal à tous les noms d'utilisateur transmis, à droite. Donc c'est une mise à jour que nous avons faite à notre classe de base de données là-bas, et maintenant nous allons en quelque sorte vers ce qui reste ici. Nous avons donc trois nouvelles pages. Nous avons perdu le mot de passe point PHP réinitialiser point PHP et réinitialiser le point de processus PHP. Donc, la page du mot de passe perdu est l'endroit où nous en sommes réellement quand quelqu'un veut demander et dire qu'il a perdu son mot de passe et demande une réinitialisation par e-mail. C' est cette page. Donc, cette page, en termes de ce qu'elle
est, est en fait assez simple. C' est ah, c'est un formulaire. Donc, nous avons notre formulaire ici qui se soumet à lui-même, et le seul champ accepte est l'adresse e-mail. Donc nous revenons ici, nous allons réinitialiser le mot de passe. C' est un formulaire avec un champ et il sauf l'adresse e-mail. Et puis si c'est pour Miss soumis, ça va passer les informations à Los Password. D' accord ? Et je vais en quelque sorte du grand aperçu conceptuel de ce que nous avons fait, et ensuite nous allons plonger dans les détails. Mais il va le passer à cette dernière méthode de mot de passe perdu dans notre classe de script de connexion et le traiter et je vais vous montrer ce que nous faisons avec ça dans une seconde. La page suivante est la page de réinitialisation réelle. C' est donc ce que les pages vont aller lorsqu'elles cliquent sur le lien dans l'e-mail. Et donc celui-ci est un peu plus impliqué. La première chose que nous devons faire est que vous remarquez que là où nous avons notre inclusion ici, et nous sommes un peu différent de ce genre de forme, où nous avons tous nos trucs d'inclusion ici. Toute notre logique PHP ici, non ? C' est un peu séparé proprement. Celui-ci est un peu différent parce que si c'est le
cas, s'ils essaient de visiter cette page directement et qu'ils n'ont pas les
paramètres de requête appropriés dans l'URL. Ensuite, nous devons afficher un message aérien ici qui dit qu'il y avait un problème et donc c'est un peu ennuyé mélangé ensemble. Mais ce que nous faisons en fin de compte, c'est que nous vérifions si ces paramètres de requête existent. Il y a donc un sélecteur et un validateur. Et dans la méthode du mot de passe perdu ici, quel est l'endroit où nous créons et envoyons réellement l'e-mail. Nous mettons ces paramètres dans l'U. R. L. Donc, le lien dans l'e-mail aura déjà ces paramètres. Donc, fondamentalement, cela aide à traiter avec quiconque essaie d'y aller directement et qui flotte autour. Ils ont besoin d'avoir les
bons paramètres de requête. Donc nous avons vérifié si ces paramètres de carrière existent, et puis nous avons vérifié pour voir s'ils sont Hexi Decimal parce que vous verrez à nouveau quand nous aurons méthode de mot de passe perdu
orteil, nous pouvons nous créer, um, nous créons fondamentalement une nonce ou nous créons un jeton, et nous avons converti en hexi décimal. Et donc quand nous le sommes, quand quelqu'un clique sur ce lien, les paramètres de requête devraient tous les deux être hexi décimal, et donc nous pouvons vérifier s'ils sont hexi décimal. Cela nous aide essentiellement à faire face à n'importe quoi. Ou quelqu'un pourrait essayer de visiter cette page et définir le sélecteur égal à un script Java aléatoire ou à une chaîne SQL ou quelque chose comme ça. Il ne va pas valider en tant qu'hexi décimal. Et donc, ces vérifications échoueront. Ok, donc c'est juste un peu de filtrage d'entrée juste ici. Donc on va vérifier s'ils sont hexi décimal. S' ils ne sont pas Hexi Decimal, alors on va jeter cet air. Et s'ils n'existent pas, cela jettera aussi sur l'air, d'ailleurs. Donc, um, ça vérifie à la fois s'il existe, et si c'est Hexi décimal et si ça ne répond pas à ces deux conditions, alors on va jeter là, se rencontrer, rencontrer ces deux conditions. Ensuite, nous créons deux champs cachés ici où nous allons mettre dans le sélecteur et le validateur. Cela devra valider le jeton lorsque ah, ce formulaire est soumis. Et puis le mot de passe ici, que ah, la personne, le nouveau mot de passe que la personne veut définir. D' accord. Donc, ils vont soumettre ce formulaire, puis le script de traitement pour cela vérifiera et verra si les jetons qu'ils ont transmis sont valides. Ok, donc c'est ce que ce formulaire fait ici. Et puis il passe cette information pour réinitialiser le point de processus PHP. Maintenant, la raison, et vous remarquez la plupart des autres formulaires qu'ils se soumettent à eux-mêmes. La raison pour laquelle j'ai cette soumission à un script PHP différent est deux fois un pour vous montrer comment faire cela donne à nouveau. Et c'est ce qu'ils veulent clarifier avec tout ça. J' écris ce code comme aide à la formation principalement, et c'est pourquoi je mets toujours en garde les gens sur l'utilisation de cela en production. Cela signifie vraiment plus pour vous orteils apprendre de lui que pour vous de l'utiliser. Et je ne le paie pas vraiment. Nécessairement concentré trop dur pour s'assurer que tout est cohérent. Je peux faire quelque chose d'une façon dans une zone et d'une autre dans une autre zone pour que je puisse vous
montrer les deux choses. Donc encore une fois, c'est la formation primaire, mais un donc je peux vous le montrer. Mais être si vous commencez à essayer de mélanger dans les variables get et et à vérifier pour celles-ci et ensuite avoir aussi vérifié la variable post, il obtient un peu une sorte de obtient un peu fou Ah, et compliqué. Et je pense inutilement. Donc nous faisons juste que je reçois des vérifications ici, et ensuite nous allons le passer pour réinitialiser le point de processus PHP. Et c'est là que nous pouvons gérer tout notre poste chez nous. Donc ça aide à séparer ces deux choses. Donc, si nous venons ici pour réinitialiser le point de processus PHP, vous pourriez voir maintenant cela ressemble à plus normal. Nous vérifions si c'est un post post données a été soumis, et si oui, nous allons traiter. Nous allons l'envoyer pour réinitialiser le mot de passe. Si aucun statut de publication n'a été soumis à cette page, il n'y a aucune raison qu'ils soient sur cette page de processus de réinitialisation à moins qu'ils ne proviennent de ce formulaire. Donc, s'ils visitent ça directement, il n'y a rien que nous puissions faire pour eux. Et c'est pourquoi nous n'avons pas d'autre bloquer tout de suite si post à elle a été soumis, et nous jetons juste une erreur. Donc il n'y a pas d'autre raison pour qu'ils soient sur cette page. Alors nous exécutons cette méthode Ah, réinitialiser le mot de passe entrera dans les détails de cela. Nous définissons le statut en conséquence ici et puis ici, nous affichons essentiellement l'état des données. Soit ils reçoivent ce message aérien, ils reçoivent un message aérien généré par Réinitialiser le mot de passe, soit ils reçoivent un message de réussite généré par réinitialisation du mot de passe. Et on l'affiche juste ici. Très bien, donc c'est une sorte de vue d'ensemble. Maintenant, nous allons dans sont la classe de connexion réelle. Et donc encore une fois, nous avons perdu le mot de passe ici. Ah, c'est l'une de nos principales méthodes et nous avons réinitialisé le mot de passe ici. Donc, ce sont deux méthodes principales que nous avons besoin orteil. Regardez à travers. Alors regardons à travers le mot de passe de perte d'abord. Bon, donc si on vient ici, il y a réinitialisation du mot de passe, et maintenant on a beaucoup perdu le mot de passe. Donc avec un mot de passe perdu, la plus grande chose avec ces jetons est que nous devons juste nous assurer qu'ils sont
sécurisés Lee cryptographiques afin qu'ils ne soient pas vraiment,
vraiment facile pirater les orteils maintenant. Évidemment, si quelqu'un les reçoit directement à partir de l'email de la personne, ils pourront les utiliser. Mais nous voulons qu'on y arrive. Il est donc difficile pour les pirates d'essayer d'aller à un formulaire de réinitialisation et d'essayer les
deviner. Et c'est donc ce que la plupart de ce code va être. Mais pour notre méthode de mot de passe perdu, il prend le post hors de cela a été soumis à nouveau. Rappelez-vous que Post Data est, ah, va être simplement l'adresse e-mail ici. C' est tout ce qui est soumis. Ah, et donc nous allons prendre les données que nous allons vérifier pour s'assurer que le courrier électronique a été envoyé . Sinon, on va jeter à l'air. Ensuite, nous allons vérifier notre base de données pour voir si cet utilisateur existe. Et c'est que nous faisons partie de l'endroit où nous utilisions l'utilisateur existe, et nous vérifions par e-mail. C' est pourquoi nous avons mis à jour cette méthode basée sur le prélèvement de données. Si l'utilisateur n'existe pas, alors nous allons lancer l'antenne parce que nous ne pouvons pas réinitialiser un mot de passe pour un e-mail ou un utilisateur qui n'existe pas. Si c'est le cas, on va continuer ici. Et la première chose que nous faisons est de créer notre sélecteur. Nous allons utiliser des octets aléatoires sa longueur de huit, et nous sommes en train d'être hexi décimal. Donc nous créons ah, hexi décimal. Fondamentalement, chaîne ici que nous allons utiliser est notre sélecteur et parce que c'est aléatoire chaque fois que cette méthode s'exécute, ce sera quelque chose de différent. Maintenant, nous allons le stocker pour que c'est comme ça que nous correspondions à tout. Mais c'est important qu'il n'ait pas la même chose créée et que la façon dont les
octets aléatoires fonctionnent, vous savez, cela crée quelque chose qui est cryptographique Lee sécurisé à ces fins. On fait la même chose pour le jeton, sauf qu'on en crée un qui est plus long. Ah, et on ne fait pas Ah, l'hexagone de Binda ici. Bien que nous y arriverons dans une seconde. Donc, cela crée notre qui crée essentiellement sont deux jetons dont nous avons besoin. Et comme je l'ai déjà dit, c'est un peu comme une clé publique et privée. Bien que dans notre cas, vous allez les envoyer tous les deux. Ah, tous les deux à l'utilisateur. Mais avoir ces deux clés différentes aide à résoudre les problèmes de timing et rend plus difficile pour quelqu'un d'essayer de venir et de deviner cela maintenant ils ont une supposition, aussi, et de le faire bien et c'est beaucoup plus, beaucoup plus longtemps que l'autre et ainsi de suite. Donc, une fois que nous avons ces deux jetons, alors nous devons créer une règle que nous allons envoyer à l'utilisateur pour réinitialiser leurs mots de passe. Donc nous utilisons le sprint. La moitié que nous avons sont deux espaces réservés. Le pourcentage s est ici nos pages réinitialiser point PHP. Donc, encore une fois, c'était cette page de réinitialisation ici que nous venons de regarder. C' est celui sur lequel ils vont atterrir quand ils cliquent sur le lien dans l'e-mail. Donc c'est là que nous passons. Rappelez-vous que j'ai dit dans notre fichier de conflit, nous avons spécifié notre u R l pour où ce script est installé. Donc, voici où nous utilisons ça. C' est de l'ABS. Vous êtes l Donc cela va faire ceci de sorte que lorsque vous mettez à jour ce fichier de conflit et ce
lien qu' il a envoyé, il sera envoyé au bon endroit et il ira à réinitialiser point PHP. Ensuite, nous allons utiliser la requête de construction HT ht TB. C' est essentiellement construire nos paramètres de requête pour nous. Et donc, nous passons dans notre sélecteur que nous avions créé ici. Nous avons passé notre validateur et nous l'avons fait passer à Hex pour créer un hexi décimal ici et passer notre jeton. Maintenant, il est important de le savoir parce que ces deux finissent par traverser Been to Hex, mais vous remarquerez ici, il y a quelque chose que je veux vous montrer. Lorsque nous insérons cela dans la base de données utilisaient le jeton, qui est ici qui n'a pas été à l'hexadécimal exécuter à travers. Donc, ce que nous soumettons dans la base de données n'est pas exécuté à travers été à Hex, mais a traversé un hachage, donc nous le hacher. Mais quand nous lui envoyons un e-mail, nous le faisons passer. J' ai été à diable. Donc, fondamentalement, ce qui va à l'e-mail est envoyé à travers été à hex. Mais ce qui se passe dans la base de données est en cours de hachage, donc la valeur envoyée à l'adresse e-mail et la valeur stockée dans la base de données sont en fait différentes. Ok, donc encore une fois, c'est important à comprendre. Donc vous ne voulez pas que vous voulez vous assurer que votre ah, vous êtes une chose que j'ai été tenté de faire était juste mis à Hex ici dit jeton égal à être à hexadécimal octets aléatoires. Mais ça ne marcherait pas à cause de ce qu'on fait ici. Nous utilisons le jeton directement. Ok, donc juste quelque chose à garder à l'esprit qui viendra un peu plus tard ici. Alors que cela essentiellement tout cela. Ce qu'il fait, c'est qu'il construit rul avec notre domaine, un point de réinitialisation PHP et ensuite nos paramètres de requête que nous avons besoin de définir sur sélecteur et notre validateur. Donc, cela nous donne notre u r l. prochaine chose que nous avons besoin est que nous avons besoin de notre expiration pour cela. Donc on fait le nouveau jour, l' heure
de la date. Maintenant, nous faisons un intervalle de jour, ce qui ajoute une heure à cela, fondamentalement. Donc, ce jeton est est actif pendant une heure. Bien sûr, vous pouvez changer ça si vous voulez, , vous pouvez venir ici et changer le nombre d'heures pendant lesquelles vous voulez que ça soit actif, mais je ne le mettrais pas trop. Et je dirais dans la plupart des cas, si quelqu'un réinitialise son mot de passe, il le fait probablement là et là. Donc, une heure a probablement du sens. D' accord, donc une fois qu'on a ça, on a tout ce dont on a besoin. La prochaine chose que nous allons faire est avant de créer de nouveaux jetons allaient tous ceux qui se trouvent déjà là dedans. Donc, si quelqu'un sélectionne réinitialiser le mot de passe et que vous savez qu'ils n'y parviennent pas pendant deux heures ,
puis ils essaient de cliquer sur le lien. Ils vont voir une erreur lorsqu'ils essaieront de réinitialiser leurs mots de passe afin qu'ils disparaissent et ils le réinitialisent à nouveau. Ils vont créer un nouveau mot de passe de réinitialisation. Et ce que nous voulons faire, c'est quand ils font ça, nous voulons revenir en arrière et tout ce qu'ils ont dans la base de données pour nous assurer que nous
gardons ça nettoyé. Nous n'avons pas tous ces jetons de jetons qui courent là-bas, donc supprimez-les. Et puis ce que nous allons faire, c'est d'abord insérer les données dans notre base de données
que vous êtes la table que nous avons créée. Et on va insérer l'email. Le sélecteur que nous allons orteil hacher le jeton et l'insérer. Et puis nous sommes pour les expires. Ont juste inséré la date au format UNIX. Donc, un horodatage UNIX vous pouvez faire l'heure de la date. Mais dans ce cas particulier encore, il n'y a pas d'affichage des dates. J' ai juste l'impression que c'est plus facile de travailler, à mon avis ici. Mais je l'ai fait avec l'ancien A avec la fonctionnalité souvenir de moi je vous ai montré comment le faire avec heure de date
régulière. Donc, vous pouvez absolument le faire aussi. Mais je l'ai juste fait. Vous faites l'horodatage suivant sur celui-ci pour vous montrer comment cela fonctionnerait. Bon, donc ce qu'on finit avec quand on fait ça, c'est qu'on finit avec un, ah, un arbre Nen dans notre mot de passe. Les données de réinitialisation sont une table de réinitialisation de mot de passe qui a le jeton et tout pour cet utilisateur particulier par leur e-mail. Il est haché et comme quand il expire. Donc, cela nous met en place pour être en mesure de gérer quand ils cliquent sur le lien et soumettent nos formulaires . La dernière chose
que nous allons faire alors, bien sûr, c'est que nous allons envoyer l'e-mail. Nous allons donc vérifier que cela a été inséré dans la base de données parce qu'il n'est pas logique d'envoyer l'e-mail si nous n'avons pas réellement stocké dans la base de données parce qu'ils ne pourront pas utiliser le lien dans l'e-mail. Donc, la première chose que nous allons définir notre destinataire qui est deux va juste définir les deux égaux pour utiliser votre email l'objet de votre lien de réinitialisation de mot de passe, vous pouvez changer tout cela si vous voulez . Le message indique que nous avons reçu un mot de passe. Réinitialiser les demandes liées. Ton mot de passe est un coup. Euh, etcetera, etcetera. Voici le lien de réinitialisation de votre mot de passe. Et puis voici où nous passons dans la fuite. Et nous le faisons. Ah ! Ah, une balise de brouillon. Nous passons l'URL ici, et nous affichons aussi simplement le Vous êtes tous nus ici. Tu pourrais peut-être changer ça ici. Mais je suis un fan de l'affichage des filles brut juste parce que certains programmes de messagerie, le clink pourrait ne pas être cliquable eux. J' ai du texte basé, et donc si vous affichez le lien brut, ils peuvent simplement le copier s'ils en ont besoin et le coller. Donc ah, c'est ce que nous avons ici. Et puis nous avons cette pensée. Et donc tout cela est juste de créer ce message qui va être envoyé dans notre email. Vous pouvez modifier ceci en conséquence. Nos en-têtes nous avons notre de ce est où nous avons le nom d'administrateur et l'e-mail d'administrateur. Nous avons notre réponse à régler sur admin Uh, oups. En fait, avoir un type de là e-mail. Donc, nous avons ce paramétré sur email admin, et ensuite nous avons notre type de contenu défini sur HTML essentiellement parce que nous utilisons ces
balises de paragraphe donc il va le faire pour qu'il montre comment nous attendions à apparaître. Et là, nous allons envoyer l'e-mail et donc nous allons bien exécuter cette fonction masculine. Et puis si cette fonction masculine fonctionne correctement, si elle est envoyée, on va vérifier si elle est envoyée. Nous allons détruire la session s'ils en ont une, n'importe quelle session dans laquelle ils sont. Et la raison pour laquelle est fondamentalement ce que dit les cheveux communs. S' ils réinitialisent leur mot de passe, cela signifie
qu'il pat la session en cours, le mot de passe avec lequel leur journal gagne est sur le point d'être invalide. Donc nous allons détruire cette session et le forcer à se connecter. Donc je pense que c'est important parce que vous ne voulez pas avoir de nous-mêmes là-bas en termes d' être connectés comme un seul par un mot de passe. Mais ils ont juste changé leur mot de passe qui pourrait devenir un peu bizarre. Ils sont donc nous allons juste détruire la session et les faire reconnecter, et ensuite nous allons retourner un statut d'un ou vrai et notre message ici et puis vous savez, si un de ces trucs échoue en cours de route, Il va passer à ce message d'état de faux avec ce message ici. Et nous ne fournissons pas trop d'informations ici car il s'agit d'une réinitialisation de mot de passe. Donc nous ne voulons vraiment pas fournir
trop d' informations à quelqu'un qui pourrait essayer de pirater ça. Donc, nous gardons ces messages aériens assez vagues ici. Donc, si nous revenons en arrière et regardons cela lorsque nous soumettons ce formulaire pour le mot de passe Los Word, il va prendre l'adresse e-mail va vérifier si cet utilisateur existe. Si cet utilisateur existe, va créer un Siri va créer une série de jetons de réinitialisation dans notre orteil de table. Gérer cela, puis il va envoyer un e-mail à l'utilisateur avec le lien dont ils ont besoin. Cela a les jetons appropriés pour qu'ils puissent cliquer, puis aller à la page de réinitialisation et réinitialiser leurs mots de passe. C' est ce que tout ça fait. D' accord. Ensuite, est
alors les mots de passe de réinitialisation réels. Donc encore une fois, ah ,
eh bien, nous n'avons pas le lien ici, mais c'est la page ici où ils ont en fait leur sélecteur dans le validateur du comte. Nous le passons dans des champs cachés et nous traitons réellement la réinitialisation du mot de passe. Donc, si nous regardons cela, nous recevons nos données de poste ici, et nous sommes encore une fois des champs obligatoires faisaient sont des champs obligatoires. Vérifiez si ej il sélecteur, validateur et le mot de passe Parce que nous avons besoin de tous les trois. Et sinon, nous passons dans un air et vous remarquerez ici que j'ai ajouté quelque chose que vous pouvez envisager ajouter Quand vous avez quelque chose comme ça où vous voulez vraiment savoir où il y avait un air Si l'utilisateur quelqu'un vous contacter via le support dit, Hey, Je ne peux pas réinitialiser mon mot de passe tous ces airs parce que nous n'essayons pas de fournir trop d'informations à quelqu'un qui pourrait essayer de pirater cela. Tous ces airs air le même que nous utilisons le développeur peut vouloir savoir. Eh bien, à
quel moment est-ce que ça a échoué ? Donc tu vois, je veracode 123 et 4, donc si quelqu'un dit,
Hey, Hey, je ne peux pas réinitialiser mon mot de passe, tu pourrais dire, Hey, quel était le code aérien qu'il a montré quand vous avez eu un problème. C' était un WRKO. C' était le code de l'air 3. Et maintenant, vous êtes développeur. Non, c'est ici que vous avez eu une sorte de problème donc je pourrais être important pour le dépannage. Et tu pourrais le faire. Peut-être seulement pour la production. Ou tu pourrais laisser ça vivre pour Ah, je veux dire pour le développement. Ou vous pouvez le laisser en direct quand vous continuez, votre vie est terminée sur votre serveur de production. Bon, donc si tous les champs sont là et soumis dans le formulaire, on va les extraire. Donc, encore une fois, extract transforme les clés de celle de ce tableau en variables et définit la valeur de cette variable à la valeur de cette clé. Donc, fondamentalement, ce que nous finissons ici avec quand nous extrayons, c'est que nous avons nos données de post ensemble pour le mot de
passe du validateur de sélecteur . Donc, les sélecteurs définis sur n'importe quelle valeur le sélecteur est évalué, les leaders définissent celui d'un validateur est etcetera. Il est juste un peu plus facile de travailler avec nous. Nous passons par ici. D' accord, alors la prochaine chose qu'on fera une fois qu'on aura, c'est qu'on va vérifier. Nous allons interroger notre table de réinitialisation de mot de passe et voir si nous avons cela. Si le sélecteur qui a été transmis existe dans notre table de réinitialisation, donc nous n'en avons peut-être pas ici, nous n'en avons pas ici, mais c'est là que nous allons stocker ces données. Et donc nous allons vérifier ceci pour voir si nous en avons un qui correspond à ce qui a été soumis via notre formulaire, qui vient de la page précédente, qui vient de ah, qui vient finalement de l'e-mail. Bon, donc on va vérifier et voir si ce sélecteur existe et s'il n'a pas expiré. Donc, si l'heure définie dans le bloc d'expiration est supérieure ou égale à l'heure maintenant. Donc, le temps renvoie un horodatage UNIX de l'heure actuelle et nous avons inséré dans notre base de données un horodatage
UNIX de la date à laquelle il expire. Donc, nous comparons fondamentalement le temps maintenant par rapport à l'heure d'expiration et voyons si maintenant, si le délai d'expiration est encore plus grand que le temps maintenant, cela signifie
que le jeton est toujours valide. Donc, nous allons sélectionner et voir si nous en trouvons un. Si on ne le fait pa
6. Les prochaines étapes: Je suis honnête, il n'y en a plus. Donc online.com, si peu de ménage pour finir ce cours. Si vous ne l'avez pas encore fait, oubliez pas de vous diriger vers la zone de classe. Il y a une section de cours pour
certains, quelques étapes pour vous de marcher à travers pour ce cours. Assurez-vous donc de vous diriger en ce sens que c'est sous la discussion dans l'onglet Projets que vous verrez sur le cours. Aussi, si vous allez à mon profil, assurez-vous de me donner un suivi sur mon profil ici afin que vous soyez averti lorsque je sortirai de nouveaux cours. Et j'ai aussi une sorte de cours
hebdomadaire de style podcast appelé Let's Talk freelance. Donc, si vous voulez avoir une sorte d'accès à formation
continue sur le freelance, les affaires en ligne et ainsi de suite. Assurez-vous de vérifier ça. Parlons cours de freelance aussi. Et enfin, j'ai une lettre d'information quotidienne sur mon site Web à John Morris online.com. Si vous allez là-bas, vous pouvez vous inscrire à cette liste de diffusion. Vous serez également mis dans ma propre application mobile, ou vous aurez accès à plus de 78 heures de contenu
gratuit au moment de cet enregistrement lié à la freelance et ainsi de suite. Donc, si cela vous intéresse, BD sûr de vérifier cela aussi. Encore une fois, c'est John Morris online.com. D'accord. Merci d'avoir pris le cours. Si ça vous a plu, je vous apprécie pour vous. Laissez-moi un avis et nous vous verrons dans le prochain cours.