Introduction à PHP et MySQL | Dave Hollingworth | Skillshare

Vitesse de lecture


1.0x


  • 0.5x
  • 0.75x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Introduction à PHP et MySQL

teacher avatar Dave Hollingworth, IT Trainer

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Introduction

      2:12

    • 2.

      Paramétrer votre environnement de développement : installer les logiciels recommandés

      1:24

    • 3.

      Créer un dossier HTML et le visualiser dans le navigateur

      2:17

    • 4.

      Ajouter un formulaire avec une entrée de texte simple et une étiquette associée

      3:10

    • 5.

      Ajouter différents types de commandes pour saisir du texte

      2:49

    • 6.

      Ajouter une feuille de style CSS pour ajouter facilement du formatage au formulaire

      1:30

    • 7.

      Ajouter une commande pour sélectionner une valeur dans une liste déroulante

      1:35

    • 8.

      Ajouter des commandes pour sélectionner une valeur parmi une gamme d’options

      3:25

    • 9.

      Ajouter une commande pour choisir entre deux options mutuellement exclusives

      1:06

    • 10.

      Ajouter un button et des attributs pour envoyer les données du formulaire au serveur

      2:28

    • 11.

      Ajoutez un dossier pour traiter les données du formulaire soumis et modifiez la façon dont il est envoyé

      2:50

    • 12.

      Modifier les valeurs envoyées depuis les entrées Sélect, Radio et Case à cocher

      3:10

    • 13.

      Éviter les erreurs si une valeur ne fait pas partie du formulaire

      2:17

    • 14.

      Appliquer un filtre aux valeurs du formulaire, en validant le type de données et la plage

      3:32

    • 15.

      Filtrer l’entrée de case et filtrer les valeurs en un tableau

      3:45

    • 16.

      Valider les données du formulaire et produire un message de validation si elles sont invalides

      4:58

    • 17.

      Valider le formulaire en utilisant la validation côté client dans le navigateur

      3:22

    • 18.

      Créer une base de données pour stocker les données du formulaire

      1:48

    • 19.

      Créer un tableau dans la base de données pour stocker les enregistrements de tickets

      1:28

    • 20.

      Se brancher à la base de données depuis PHP

      3:21

    • 21.

      Insérer un nouvel enregistrement dans la base de données depuis PHP

      4:36

    • 22.

      Échapper manuellement les valeurs de chaîne pour éviter une attaque par injection SQL

      3:47

    • 23.

      Utiliser un état préparé pour insérer un nouveau document

      4:23

    • 24.

      Utilisez le motif post-redirect-get pour éviter les soumissions de formulaires en double

      3:53

    • 25.

      Votre projet de cours : créer un formulaire et enregistrer les données du formulaire dans une base de données

      1:22

    • 26.

      Conclusion

      1:02

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

243

apprenants

--

projet

À propos de ce cours

Obtenir des données à partir d’un formulaire dans un navigateur Web dans une base de données sur le serveur est une compétence clé pour tout développeur web. Dans ce cours, vous apprendrez à créer un formulaire en HTML, à valider les données en PHP et à les enregistrer dans une base de données MySQL.

En bref, des leçons spécifiques, vous apprendrez à :

  • Comment créer un formulaire en HTML
  • Différents types de commandes d’entrée pour différents types de données
  • Comment valider les données de formulaire en PHP
  • Différentes techniques pour enregistrer les données dans une base de données MySQL
  • Comment faire tout cela en toute sécurité et en toute sécurité.

Ce cours s’adresse aux débutants et en développement Web qui doivent apprendre l’une des compétences fondamentales pour créer un site Web : obtenir les données d’un visiteur de votre site Web dans une base de données sur le serveur.

Dans le projet de cours, vous allez créer votre propre formulaire en HTML, traiter les données de ce formulaire en PHP et les enregistrer dans une base de données MySQL.

Les bases du HTML, de PHP et de SQL sont recommandées, mais tout le code présenté dans les vidéos est expliqué dans son intégralité, ainsi que des liens vers des documents pertinents si nécessaire.

De plus, tout le code source présenté dans les vidéos est disponible en téléchargement. Si vous avez besoin d’aide directement, posez-vous une question dans la section discussion.

Rencontrez votre enseignant·e

Teacher Profile Image

Dave Hollingworth

IT Trainer

Enseignant·e

Hi, I'm Dave Hollingworth. I'm an IT trainer and web application developer. I've been writing code and teaching IT for over twenty years.

I've developed enterprise-level applications on platforms ranging from mainframes to mobiles: from my first web application, a quotes system created for a major insurance company back in 1999 - the first of its type in the sector - to interactive learning management systems for online language learning.

I've taught courses ranging from basic use of email to advanced web application development, both online and in-person.

I'm passionate about technology, and love teaching it! I believe it's possible to explain even the most complex subjects in a simple, straightforward way that doesn't confuse the student.

I look forward to ... Voir le profil complet

Compétences associées

Développement Langages de programmation PHP
Level: All Levels

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Introduction: Un site Web peut être utilisé pour afficher simplement certaines informations à un visiteur, comme un magazine, un nouveau site ou Wikipédia. Toutefois, si vous souhaitez obtenir des données du visiteur, comme un commentaire, un terme de recherche ou une affectation par batterie de serveurs, par exemple, vous avez besoin d'une batterie de serveurs. Farm permet à l'utilisateur du site de vous envoyer des données. Une fois que vous disposez de ces données sur le serveur Web , vous enregistrerez probablement ces données dans une base de données. Savoir comment les données transmettent l'utilisateur à votre base de données est une compétence essentielle pour notre développeur Web. À la fin de cette classe, vous saurez comment créer une batterie de serveurs en HTML. Comment traiter les données de cette batterie de serveurs sur le serveur Web en PHP, en s' assurant qu'elles sont valides. Et comment enregistrer ces données en toute sécurité dans une base de données MySQL. Cela utilise les meilleures pratiques et les normes de l'industrie pour le code. Bonjour, je suis Dave qui porte de la valeur. J'écris des applications Web depuis 1998 et j'enseigne le développement Web en ligne depuis 2012. Ce cours s'adresse aux débutants au développement Web qui ont besoin d'acquérir une des compétences fondamentales lors de la création d'un site Web. Récupérer les données d'un visiteur votre site Web dans une base de données sur le serveur. Dans le projet de classe, vous allez créer votre propre batterie de serveurs en HTML, traiter les données de cette batterie en PHP et les enregistrer dans une base de données MySQL. connaissances de base en HTML, PHP et SQL sont recommandées. Mais j'explique tout le code que j'utilise ainsi que des liens vers la documentation pertinente si nécessaire, où vous pouvez obtenir plus de détails. En outre, tout le code source affiché dans les vidéos est disponible au téléchargement. De plus, si vous avez besoin d'aide de ma part directement, vous pouvez poser une question dans la section discussion. Sans plus tarder. Commençons. 2. Configurer votre environnement de développement : Installez un logiciel recommandé: Pour tirer le meilleur parti de la classe, je vous recommande de suivre le cours en écrivant et en exécutant vous-même le code affiché dans les vidéos. Pour ce faire, vous devez installer un serveur Web, PHP et un serveur de base de données. J'utiliserai le serveur Web Apache avec PHP et le serveur de base de données MariaDB. Mariadb est entièrement compatible avec MySQL. Tous ces éléments sont entièrement gratuits à télécharger et à utiliser. Vous pouvez les installer séparément. Mais le moyen le plus simple consiste à installer un package comprenant un serveur Web, PHP, un serveur de base et éventuellement PHP, mon administrateur pour administrer la base de données. Pour Windows et Linux, je recommande l'installation de x AMP. Il suffit de sélectionner le téléchargement approprié pour votre système d'exploitation ici sur le site officiel et de suivre les instructions d'installation. Pour Mac, je recommande MAMP. De même, il suffit de télécharger le programme d'installation MAMP depuis le site officiel ici et de suivre les instructions. Notez que MAMP est la version gratuite et que MAMP Pro est la version payante. La version gratuite de MAMP est cependant plus que suffisante pour répondre aux exigences de cette classe. 3. Créer un fichier HTML et le voir dans le navigateur: Commençons par créer un fichier HTML qui finira par contenir une batterie de serveurs. Il s'agit du dossier racine de mon serveur Web. Si vous utilisez l'un des packages que j'ai recommandés précédemment, comme XML MAMP, le dossier par défaut pour Windows, Mac ou Linux est affiché ici. Bien que vous puissiez le modifier un autre dossier ou utiliser un sous-dossier si vous préférez. Créons ici un nouveau fichier appelé Farm dot HTML. Cela va contenir le code HTML de la batterie de serveurs. Par exemple, créons une batterie de serveurs que vous pourriez avoir pour soumettre un ticket d'assistance. Avant de créer la batterie de serveurs, ajoutons simplement le code HTML de base dont nous avons besoin pour créer un document HTML. Nous commençons par le type de document, qui indique au navigateur que le code suivant sera HTML valide. Nous en avons besoin car cela affecte la façon dont le navigateur va interpréter ce code. Ensuite, nous ajouterons une balise HTML, qui est la balise conteneur pour le reste du code HTML. À l'intérieur, nous ajouterons une étiquette de tête et une étiquette de titre à l'intérieur . Ce titre est celui affiché dans la barre de titre de l' onglet du navigateur. Nous allons placer le support comme titre de la page. Également à l'intérieur de l'étiquette principale, nous ajouterons une balise Meta spécifiant les jeux de caractères de ce document en UTF-8. Cela nous permettra d'utiliser sans problème des caractères provenant d'alphabets non anglais. Après l'étiquette de tête, nous ajouterons une étiquette corporelle. Le code HTML à l'intérieur est ce qui sera affiché dans la fenêtre principale du navigateur. Pour l'instant, il suffit d'ajouter un en-tête de niveau 1 contenant le texte. Soumettez un ticket. Jetons un coup d'œil à cela dans le navigateur. Si je spécifie ce nom de fichier à l'adresse de l'hôte local, nous voyons le contenu de ce fichier. Le titre de l'onglet provient des éléments du titre. Et dans le corps du document, nous avons juste l'élément d'en-tête. 4. Ajouter un formulaire avec un numéro de texte simple et une étiquette associée: Ensuite, ajoutons un contrôle d'entrée unique à la page. D'abord à l'intérieur du corps, ajoutons un élément de ferme. Ensuite, cela ajoutera un élément d'entrée, tous les deux sans attributs. Pour l'instant. Le navigateur. Ceci montre une simple saisie de texte dans laquelle nous pouvons entrer du texte. Ce type de saisie de texte simple est le type par défaut. Si nous ne spécifions pas de type. Si nous ajoutons l'attribut type à l' élément d'entrée et que nous spécifions du texte comme valeur, nous voyons la même chose dans le navigateur. Lorsque j'utilise des entrées de texte comme celle-ci, je préfère spécifier le type même s' il s'agit de la valeur par défaut, car il existe de nombreux types d'entrées disponibles, que nous verrons bientôt. Ensuite, ajoutons une étiquette à cette entrée pour que l'utilisateur sache ce qu'il faut taper. Commençons par écrire simplement du texte avant l'élément de saisie. Dans le navigateur. Nous voyons ce texte avant les entrées, et ce n'est que du texte. C'est très bien, mais nous pouvons améliorer cela. Entourons ce texte d' un élément d'étiquette. Cela n'affectera pas l'apparence des textes étiquetés, mais cela affecte son fonctionnement. Nous associons cette étiquette à une entrée en ajoutant d' abord un attribut ID à l'entrée. Je vais le donner à la valeur du nom. Notez que la valeur de cet attribut doit être unique dans le document HTML. Ensuite, nous ajoutons quatre attributs à l'étiquette, spécifiant la valeur comme ID de l'entrée. Nous voulons associer cette étiquette au navigateur. Nous voyons que rien n' a changé visuellement. Cependant, si je clique sur le texte de l'étiquette, le focus d'entrée est placé sur la saisie de texte et nous pouvons commencer à taper. De plus, association d'une étiquette à une entrée comme celle-ci rend la ferme plus accessible aux visiteurs qui utilisent des technologies d'assistance telles que les lecteurs d'écran, verront plus tard d' une autre façon que le fait de pouvoir cliquer sur Labels comme celui-ci pour activer une entrée rend la batterie de serveurs plus facile à utiliser. Chaque batterie de serveurs en entrée a donc besoin ses propres éléments d'étiquette associés que la batterie soit plus facile à utiliser. En outre, notez que cet élément d'entrée possède deux attributs. Comme vous le savez, vous pouvez spécifier des attributs dans n'importe quel autre. Toutefois, comme l'attribut type affecte le type de l' entrée affichée, je préfère toujours placer l'attribut type en premier pour les éléments en entrée. Comme cela le rend plus clair, si vous avez une ferme avec plusieurs entrées. 5. Ajouter des différents types de commandes pour entrer du texte: Jusqu'à présent, dans notre ferme, nous avons une saisie de texte unique. Ensuite, ajoutons d'autres entrées pour ajouter du texte. Plusieurs types d'entrées sont disponibles ici. Nous examinerons plusieurs autres non textuels plus tard. Nous avons déjà utilisé une entrée de texte, mais il y en a d'autres qui se ressemblent exactement. Par exemple, queue, numéro et e-mail. Elles ressemblent à celles d'une entrée de texte normale, mais ont des fonctionnalités différentes. Ajoutons une autre entrée à la batterie de serveurs. Cette fois, un type d'e-mail est entré par l'utilisateur pour saisir son adresse e-mail. Avec le nom, l'entrée ajoute un élément d'étiquette associé, le liant à l' entrée en faisant correspondre l' attribut for à l'attribut ID d' entrée. Le navigateur. Il y a le contrôle d'entrée. Et si nous cliquons sur l'étiquette, le focus d'entrée est placé dans le contrôle. L'entrée ressemble une entrée de texte normale et se comporte de la même manière. La différence réside dans l' affichage de la batterie de serveurs sur un appareil mobile avec un clavier à l'écran, une entrée de texte normale utilise le clavier par défaut. Cependant, le clavier des entrées d'e-mail sera légèrement différent. Par exemple, le signe at est disponible et également sur certains appareils, une clé qui ajoute automatiquement s.com à tout ce que vous tapez. C'est similaire pour un numéro ou une entrée téléphonique. Le clavier change pour faciliter l'insertion du type de données attendu dans cette entrée particulière. Un autre avantage de ces textes, tels que les types d'entrée, est que nous pouvons valider le contenu des entrées dans le navigateur avant l'envoi de la batterie de serveurs. Nous examinerons cela plus tard. Vous avez peut-être remarqué que ces types de saisie de textes n'autorisent qu' une seule ligne de texte. Pour ajouter une entrée de texte qui autorise plusieurs lignes de texte, nous utilisons un élément de zone de texte. Ajoutons un à la batterie de serveurs que l'utilisateur utilisera pour ajouter une description de ses tickets. Comme pour les autres entrées, nous ajouterons également une étiquette associée. Notez qu'il ne s'agit pas d' un élément de saisie comportant un type de zone de texte. Il s'agit d'éléments de zone de texte. Et contrairement à un élément d'entrée, vous devez avoir les balises d'ouverture et de fermeture. Dans le navigateur. La zone de texte est affichée avec plusieurs lignes. Vous pouvez également appuyer sur Entrée lorsque vous saisissez ce contrôle pour ajouter une nouvelle ligne. 6. Ajouter une feuille de style CSS pour ajouter facilement un formage au formulaire: Avant d'examiner d'autres types d'entrées, ajoutons un peu de style à cette ferme qu'il soit plus facile de voir ce qui se passe. style avec CSS dépasse le cadre de cette classe. Mais deux façons rapides d'ajouter des styles lors du développement d'une batterie de serveurs consiste à utiliser un framework CSS existant. Certains d'entre eux, comme Bootstrap, par exemple, exigent que vous ajoutiez des éléments de conteneur et des classes à vos éléments HTML pour que les styles soient appliqués. Cependant, un mode de style encore plus rapide de la batterie, afin que vous puissiez vous concentrer sur la fonctionnalité consiste à utiliser du CSS sans classe. Beaucoup d'entre eux sont disponibles, et vous pouvez les utiliser simplement en incluant le fichier CSS dans le code HTML. Dans ce cours, nous allons utiliser le CSS de l'eau. Vous pouvez télécharger le CSS et le diffuser localement. Je vais inclure la feuille de style directement à partir d'un CDN, c'est ce que nous allons faire. Nous copierons cette ligne de code et la collerons à l'intérieur de l'élément tête de notre code HTML. Maintenant, dans le navigateur, la batterie de serveurs a un style agréable sans que nous ayons à ajouter de classes, y compris la mise en évidence lorsque le contrôle d'entrée est mis au point. 7. Ajouter un contrôle pour sélectionner une valeur dans une liste d'accueil: Avec les contrôles de texte, l'utilisateur peut saisir n'importe quelle valeur souhaitée. Ajoutons un contrôle dans lequel l'utilisateur peut choisir parmi une liste de valeurs prédéfinie. Pour obtenir une liste de valeurs, nous utilisons un élément de sélection. Chaque option de la liste est un élément d'option. Ajoutons trois options pour la priorité du ticket, basse, normale et élevée. Avant de voir cela, ajoutons une étiquette associée. Le navigateur. L'élément de sélection s'affiche sous forme de liste déroulante dans laquelle vous pouvez choisir l'une des options fournies. Si je recharge la page, maintenez la touche Maj gauche enfoncée sur le clavier pour réinitialiser la batterie de serveurs. Notez que lorsque la page est chargée pour la première fois, la première option est sélectionnée par défaut. Vous pouvez modifier cette valeur par défaut en ajoutant l'attribut sélectionné à l'option appropriée. Par exemple, ajoutons-le à l'option normale. Maintenant dans le navigateur. La deuxième option est sélectionnée par défaut. Par conséquent, si cela n'est pas modifié, il s' agit de la valeur qui sera envoyée lors de l'envoi du formulaire. Vous pouvez avoir autant d'options que vous le souhaitez dans la liste de sélection, car la liste apparaîtra avec barres de défilement si elle est trop longue pour l'écran. 8. Ajouter des commandes pour sélectionner une valeur à partir d'une gamme d'options: Avec le contrôle de sélection, la liste des options s'affiche uniquement dans une liste déroulante lorsque vous cliquez sur le contrôle. Cela vous permet d'avoir beaucoup d' éléments dans cette liste si nécessaire. Par exemple, une liste de pays. Si vous disposez d'un petit nombre d' options et que vous souhaitez qu'elles soient toujours visibles dans la batterie de serveurs. Une alternative à cela consiste à utiliser des boutons radio. Le bouton radio est un élément d'entrée avec le type radio. Pour ajouter une étiquette à cela. Au lieu de l'ajouter en tant qu'élément distinct, placons l'entrée à l'intérieur de l'étiquette. Utilise ce contrôle pour spécifier la catégorie du ticket. Ajoutons donc une étiquette avec le texte de la faute. Il s'agit d'une autre façon d' associer une étiquette à un contrôle. L'avantage de cela est que vous n'avez pas besoin d'un attribut ID sur le contrôle et de quatre attributs sur l'étiquette. Ajoutons une autre entrée radio juste après celle-ci avec une étiquette de suggestion. Le navigateur. Il y a les deux boutons radio. Et pour les sélectionner, vous pouvez cliquer sur le bouton radio lui-même ou sur le texte. Notez cependant qu'une fois qu'ils sont sélectionnés, vous ne pouvez pas les désélectionner. Pour en faire un groupe de contrôles dans lequel vous ne pouvez en sélectionner qu'un. Nous ajoutons l'attribut name aux deux éléments en entrée, spécifiant la même valeur pour chacun d'eux. Maintenant, dans le navigateur, lorsque nous sélectionnons une option, les autres sont sélectionnées. Dans un groupe de boutons radio comme celui-ci, une seule option peut être sélectionnée à la fois. Si je recharge la page, notez qu'aucune option n'est sélectionnée par défaut. Pour sélectionner une option par défaut, nous ajoutons l'attribut coché à l' un des éléments en entrée. Maintenant, lorsque la batterie de serveurs est affichée pour la première fois, cette option est déjà sélectionnée. Pour ajouter une étiquette à ce groupe de contrôles. Nous ne pouvons pas utiliser d' éléments d'étiquette car nous en utilisons un pour chaque option. Au lieu de cela, nous les enfermons dans un ensemble de champs. Ajoutez ensuite un élément de légende juste après la balise d'ouverture du jeu de champs contenant le texte que nous voulons afficher comme légende pour ce groupe de contrôles. Le navigateur. Cela entoure les contrôles d'une ligne avec le texte de l' élément de légende affiché en haut. Enfin, par défaut, les entrées radio sont affichées en ligne, dans ce cas étant affichées horizontalement l'une à côté de l'autre. Pour afficher chacun sur une ligne distincte. Une façon simple de le faire consiste à ajouter un élément de saut de ligne entre eux. Désormais, dans le navigateur, les options sont affichées verticalement. Avec une liste de sélection. Vous pouvez avoir autant d' options que vous le souhaitez, mais les boutons radio conviennent mieux à un nombre limité d' options car elles sont toujours visibles sur la batterie de serveurs. 9. Ajouter un contrôle pour choisir de deux options exclusives: Ensuite, ajoutons un contrôle de case à cocher qui nous permet de choisir entre deux options mutuellement exclusives. En d'autres termes, oui ou non, activé ou désactivé et ainsi de suite. La case à cocher est un élément d'entrée avec un type de case à cocher. Pour ajouter une étiquette à cela, faites-le de la même manière qu'avec les boutons radio et en qu'avec les boutons radio fermant les entrées et le texte étiqueté à l'intérieur d'un élément d'étiquette. Ajoutons une case à cocher que l'utilisateur doit sélectionner pour accepter certaines conditions générales. Le navigateur. Il y a la case à cocher. Nous pouvons le cocher et le décocher en cliquant sur la case elle-même, sur le texte de l'étiquette. Vous pouvez avoir autant de cases à cocher sur une ferme que vous le souhaitez. Et vous pouvez les placer à l'intérieur d'un ensemble de champs comme nous l'avons fait avec les commandes radio. Si vous en avez besoin. Plusieurs cases à cocher peuvent être utilisées pour une valeur dans laquelle vous pouvez sélectionner plusieurs options. 10. Ajouter un bouton et des attributs pour envoyer les données du formulaire au serveur: Nous pouvons maintenant saisir des données dans la batterie de serveurs. Nous avons besoin d'un moyen d'envoyer ces données au serveur Web. Commençons par ajouter un bouton à la fin de la ferme. Ajoute un élément de bouton dont le contenu entre les balises d'ouverture et de fermeture est celui affiché sur le bouton. Je vais juste laisser un texte de base, mais vous pouvez ajouter d'autres balises ici si vous le souhaitez. Je vais également mettre un élément de saut de ligne avant cela pour que le bouton soit sur une nouvelle ligne. Dans le navigateur. Il y a le bouton. Si j'appuie dessus, que l'on appelle l' envoi de la ferme, la batterie est réaffichée. Ce qui s'est passé, c'est que le formulaire a été soumis à lui-même. En d'autres termes, une demande a été envoyée à la même URL que la batterie de serveurs avec les données de la batterie attachées à la demande. Ce qui a changé, c'est l'URL dans la barre d'adresse du navigateur. La chaîne de requête a été ajoutée avec une paire de catégories de valeur de clé égale à. Si nous examinons les différentes entrées, notez que les seuls avec des attributs de nom sont les boutons radio de catégorie. Seules les entrées possédant un attribut name auront leur valeur lorsque le formulaire est envoyé. Pour le démontrer, ajoutons un attribut name à la première entrée avec une valeur de nom. Si nous rechargeons la batterie de serveurs , puis la soumettons à nouveau. La chaîne de requête contient maintenant une valeur supplémentaire pour le nom. Si je saisis une valeur dans l'entrée de nom et que je l'envoie, cette valeur est incluse dans la chaîne de requête. Faisons de même pour les autres entrées. Ajout d'attributs de nom à la case à cocher e-mail, description, priorité et conditions générales. Maintenant, si nous soumettons la batterie de serveurs, nous voyons les valeurs dans la chaîne de requête pour tous les champs. Si je saisis une valeur pour l'un d'entre eux , cette valeur est celle qui est envoyée. 11. Ajouter un fichier pour traiter les données de formulaire soumis, et modifier la manière dont elle e: Actuellement, lorsque nous soumettons la batterie de serveurs, une demande est envoyée sur la même page et les données de la batterie sont envoyées dans la chaîne de requête URL. Il s'agit de la valeur par défaut et peut être utilisée si vous ajoutez du code avant le code HTML pour traiter les données. Cependant, traitera les données de la batterie de serveurs dans un autre fichier. abord, ajoutons un nouveau fichier appelé process farm dot PHP. De retour à la ferme. Pour que cette batterie de serveurs envoie des données à ce nouveau fichier, nous ajoutons un attribut d'action à la balise de formulaire contenant l' URL à l'emplacement souhaité. Comme ce fichier se trouve dans le même dossier, nous pouvons simplement mettre le nom du fichier, le nouveau fichier. Ajoutons la balise d'ouverture PHP. Les données de la chaîne de requête sont disponibles dans le chat super global. Nous allons juste imprimer ça. Maintenant, si je saisis des données dans le formulaire et que je les soumets, le script PHP de batterie de processus est demandé avec les données toujours dans la chaîne de requête. Dans le corps de la réponse, nous voyons le contenu de la matrice GET. Chaque clé de tableau provient de l'attribut name de chaque entrée dans le code HTML, et sa valeur correspond à celle qui a été saisie dans la batterie de serveurs. Le fait d'avoir les données dans la chaîne de requête comme celle-ci est correct si le formulaire est un moteur de recherche , par exemple, car c'est le type d' URL que vous pouvez partager notre signet. Si vous souhaitez faire quelque chose avec ces données, exemple les enregistrer dans une base de données, nous ne voulons pas qu'elles figurent dans l'URL. Cela est dû au fait que la quantité de données peut être transmise dans l'URL est limitée . De plus, c'est un risque pour la sécurité. Il peut y avoir des données sensibles ici, et ces URL sont enregistrées dans l'historique des URL du navigateur. Les données de la batterie de serveurs peuvent facilement être visualisées par toute personne ayant accès au navigateur. Nous enverrons plutôt ces données à l'aide de la méthode post. Pour ce faire, nous ajoutons un attribut de méthode à la balise de batterie avec la valeur post. Vous pouvez spécifier « get here », qui est la valeur par défaut que nous avons utilisée jusqu'à présent. Maintenant, lorsque les données sont envoyées au script, elles seront disponibles dans le post super global. Nous allons plutôt imprimer ça. Maintenant, lorsque nous saisissons des données et que nous les soumettons, nous voyons toujours les mêmes données dans le corps de réponse. Mais maintenant, les valeurs ne sont pas affichées dans la chaîne de requête. 12. Modifiez les valeurs envoyées dans les entrées sélectionnées de l'option sélectionnée, de la rad: Jetons un coup d'œil aux valeurs envoyées à partir de la ferme. La priorité est un contrôle de sélection affiché sous forme de liste déroulante. La valeur envoyée lorsque la batterie de serveurs est soumise correspond au texte de l'option sélectionnée. Vous pouvez le faire si vous le souhaitez. Mais il est courant de donner à chaque option une valeur différente à l'aide de l'attribut value. Assignons à chaque option une valeur numérique comprise entre un et trois. Maintenant, lorsque nous soumettons le formulaire, la valeur envoyée correspond à la valeur contenue dans l'attribut de valeur pour l'option sélectionnée. Cela est utile si vous souhaitez stocker une valeur différente de celle d'une étiquette de texte pour nos champs comme celui-ci. Il est également utile, par exemple, si vous affichez votre contenu dans plusieurs langues. Les textes étiquetés peuvent donc être différents, mais les valeurs sous-jacentes sont les mêmes. Jetons également un coup d'œil à la catégorie des commandes radio. Peu importe celui que je choisis. La valeur envoyée correspond toujours à la chaîne activée. En effet, il s'agit la valeur par défaut des entrées de type radio, pour que les boutons radio envoient une valeur différente en fonction de celle sélectionnée. Nous devons donner à chacun une valeur à l'aide de l'attribut value. Ces valeurs peuvent être ce que vous voulez. Ils n'ont pas besoin de faire correspondre le texte comme nous venons de le faire ci-dessus avec le contrôle de sélection. Au lieu de nombres, cette fois, je vais utiliser des chaînes simples. Maintenant, lorsque nous choisissons le bouton radio, c'est la valeur qui est soumise. Examinons ensuite la case à cocher. Si je ne le vérifie pas, aucune valeur n'est soumise pour ce contrôle. Si je le vérifie, alors la valeur correspond à la chaîne. Vous pouvez ajouter une valeur à cela la même manière que pour d'autres entrées, en ajoutant des attributs de valeur. Ajoutons une valeur d'un. Maintenant, si je coche la case et que je soumets la batterie de serveurs, c'est la valeur qui est envoyée. Si vous voulez uniquement savoir si la case est cochée ou non , la valeur par défaut est suffisante. Pour nos besoins, nous allons le supprimer. Si vous avez plusieurs cases à cocher et que vous voulez savoir lesquelles sont cochées, vous pouvez attribuer à chacune une valeur distincte. 13. Éviter les erreurs si une valeur n'est pas partie des données du formulaire: Maintenant, nous avons les valeurs que nous voulons venir de la ferme. Nous pouvons obtenir les valeurs spécifiques des scripts PHP pour être éventuellement insérées dans une base de données. Comme nous l'avons vu, les valeurs de la batterie de serveurs seront dans le tableau post. Au lieu d' imprimer l'ensemble du tableau, attribuons la valeur de l'entrée de nom à une variable, puis imprimons cela. Si je saisis une valeur pour le nom et envoie, c'est la valeur. Voyons ce qui se passe si je change cet indice par une valeur qui ne fait pas partie de la batterie de serveurs. Par exemple, le nom de famille. Maintenant, si je soumets la batterie de serveurs, nous obtenons une erreur Reiki non définie. Même si nous n' obtiendrons pas cette erreur. Si une entrée portant ce nom fait partie de la batterie de serveurs, nous devons toujours vérifier si ces valeurs existent dans la post-enquête ou non avant d'essayer de les utiliser. C'est parce que la ferme pourrait facilement être contournée. Nous en verrons un exemple plus tard. Une façon de vérifier cela serait d'utiliser une fonction telle qu'un Reiki existe avec l' opérateur ternaire pour définir la variable name afin de savoir si la valeur n'est pas dans le tableau. Un autre moyen plus court serait d'utiliser l'opérateur de coalesce nul, qui fait la même chose. Une autre alternative consiste à utiliser la fonction d'entrée de filtre. Cette fonction obtiendra une valeur de l'entrée spécifiée et renvoie simplement NULL si elle n'est pas présente. Appelons cette fonction spécifiant que nous voulons obtenir la valeur des entrées de publication, le nom de la valeur que nous voulons obtenir. Essayons d'abord avec un nom qui ne fait pas partie du nom de famille de la ferme. Lorsque nous soumettons la ferme. Maintenant, nous obtenons une valeur nulle au lieu d'une erreur. Si nous changeons cette valeur par nom, qui fait partie de la batterie, nous obtenons la valeur des entrées. 14. Appliquer un filtre pour les valeurs du formulaire, valider le type et la plage de données: En plus de renvoyer la valeur de l'entrée et de simplement renvoyer la valeur NULL si elle n'est pas présente. La fonction d'entrée de filtre permet d'appliquer un filtre à la valeur. Cela signifie que loin de l'entrée du courrier électronique, par exemple, nous pouvons appliquer un filtre pour valider que la valeur est une adresse e-mail valide. Appelons à nouveau la fonction d'entrée de filtre, cette fois pour l' entrée de courrier électronique de la batterie de serveurs. Le troisième argument spécifiera le filtre d' e-mail de validation. Au lieu d' imprimer la variable de nom, nous imprimerons plutôt la variable e-mail. Si je soumets le formulaire avec une adresse e-mail vide, nous devions faux. Si je soumets une adresse e-mail valide, nous obtenons cette valeur sous forme de chaîne. Si je saisis une adresse e-mail non valide , le navigateur valide le champ et demande une adresse e-mail valide sans que le formulaire ne soit envoyé. Nous examinerons prochainement la validation côté client dans le navigateur. Mais pour l'instant, il suffit de désactiver cela en ajoutant l'attribut novalidate à l'élément de formulaire dans le code HTML. Maintenant, si je saisis une adresse e-mail non valide et que je soumets la batterie, nous obtenons la valeur booléenne false. Une fois encore. Nous recevons l'adresse e-mail sous forme de chaîne uniquement si elle est valide. Sinon, nous devions faux. Certains filtres offrent des options permettant d'effectuer une validation supplémentaire. Par exemple, le filtre de validation des entiers. En plus de valider qu' une valeur est un entier valide, nous pouvons spécifier une plage de valeurs. Une valeur qui est un entier valide, mais en dehors de cette plage renvoie false. La valeur du champ de priorité de notre batterie de serveurs est un entier de 12 ou trois. Ajoutons un autre appel à la fonction d'entrée de filtre pour le champ de priorité, spécifiant le filtre de validation entier. Dans l'argument suivant, nous spécifions les options pour ce filtre qui spécifiera au moins un et trois maximum. Ensuite, au lieu d' imprimer la variable e-mail, imprimera la variable de priorité que nous venons d'ajouter. Lorsque je soumets la batterie de serveurs avec la valeur par défaut de notre priorité, nous obtenons une valeur entière de deux. Pour les autres priorités, nous obtenons la valeur entière équivalente. Notez que toutes les valeurs provenant de la batterie seront des chaînes, mais cette fonction convertira ces deux entiers s'ils sont valides. Testez la validation de la plage. Passons temporairement le maximum à deux. Maintenant, si nous soumettons la batterie de serveurs avec une valeur de priorité correspondant à trois, nous obtenons une valeur booléenne false. La valeur sera toujours un entier valide, mais elle ne se situe pas dans la plage que nous avons spécifiée. Revenons à trois pour qu'il accepte toutes les valeurs de la liste. 15. Filtrer l'entrée de la boîte à cocher et éventuellement filtrer les valeurs dans un tableau: Examinons ensuite la valeur de la case à cocher. Comme nous l'avons vu plus tôt. La case à cocher n'est pas cochée. Aucune valeur n'est soumise. Si elle est cochée, la valeur par défaut est la chaîne activée. Appelons à nouveau la fonction d'entrée du filtre pour obtenir cette valeur. Comme tout ce que nous voulons savoir, c' est s'il est vérifié ou non. En d'autres termes, la valeur ne nous intéresse pas. Pour cela. Nous utiliserons le filtre de validation booléen. Cette option renvoie true si la case est cochée. Ensuite, au lieu d' imprimer la variable de priorité, imprimera les termes 1 à la place. Si nous soumettons le formulaire sans cocher la case , nous obtenons non. Si nous cochons la case, nous obtenons la valeur booléenne true. Nous recevons maintenant des valeurs filtrées pour la plupart des entrées de la batterie de serveurs. La seule personne manque la description et la catégorie. Ajoutons des appels à la fonction d'entrée de filtre pour la description. Et une catégorie plus éloignée, ne spécifiant aucun filtre car il s'agit de chaînes, tout comme le nom. Nous avons maintenant une variable pour chaque champ de batterie qui contient les données qui se trouvaient dans ce champ lorsque la batterie a été soumise, prête à être traitée ultérieurement. s'agit d'une façon de le faire avec plusieurs appels à la fonction d'entrée de filtre. Il existe une autre façon de le faire en utilisant la fonction de tableau d'entrée de filtre. Cela vous permet de filtrer plusieurs entrées de batterie à la fois et d'obtenir un tableau des données filtrées au lieu de variables distinctes. Appelons le filtre dans fonction d'onde portrait filtrant les post-données de la batterie de serveurs. Pour le deuxième argument, nous transmettons un tableau contenant un élément pour chaque champ de batterie que nous voulons filtrer. Si nous ne spécifions pas de type de filtre, nous pouvons définir la valeur Null sur l'indicateur de filtre par défaut. Pour les entrées où nous spécifions un filtre, nous définissons la valeur des éléments du tableau sur la constante de filtre. Et si le filtre comporte des options telles que le champ de priorité, nous transmettons un tableau définissant les valeurs comme celle-ci. Cela renvoie un tableau de données pour les valeurs de batterie spécifiées. Si nous imprimons cela au lieu de la variable de termes. Lorsque nous soumettons la batterie de serveurs, nous obtenons un tableau contenant les valeurs filtrées de la batterie de serveurs. Les filtres ont été appliqués comme pour les variables individuelles. Mais maintenant, nous avons une variable matricielle contenant toutes les valeurs au lieu d'une variable pour chaque valeur d'entreprise. C'est à vous de choisir la méthode que vous utilisez lors du filtrage des données d'entrée. Si vous préférez des variables individuelles ou un tableau. 16. Valider les données du formulaire et produire un message de validation si invalide: Maintenant que nous disposons des données de la batterie de serveurs, nous pouvons les valider. Je vais travailler avec un ensemble de données, mais vous pouvez travailler avec des variables individuelles si vous le préférez. Je commenterai ces variables dans le code source téléchargeable. Nous voulons valider ces valeurs avant d'essayer de les enregistrer la base de données afin que dans la base de données afin que les données de la base de données soient toujours valides. Commençons par valider le nom. Si une valeur a été entrée dans le champ Nom de la batterie, elle est considérée comme valide. Si le champ a été laissé vide, il s'agit d'une chaîne vide. Si la valeur ne fait pas partie des données de la batterie, la fonction de filtre ci-dessus renvoie la valeur NULL ou une chaîne vide ou NULL ne sont pas valides. Nous pourrions comparer la valeur de cette valeur à une chaîne vide et nulle à l'aide d'un opérateur de comparaison. Mais la fonction vide retournera true. Si c'est l'un de ces deux. Si la valeur est vide, elle n'est pas valide. Pour que ça reste simple. S'il n'est pas valide, il quittera le script en utilisant l' impression de colorants sur un message approprié. est peu probable que cette validation soit observée de toute façon, si nous avons une validation côté client dans le navigateur, qui s'ajoutera prochainement. Essayons ça. Si je soumets une batterie de serveurs sans rien mettre dans le champ Nom , nous recevons le message indiquant que le nom est requis. Si je saisis une valeur , le tableau de valeurs est imprimé comme avant. Faisons de même pour le champ e-mail. Si ce n'est pas présent, ce sera non. S'il ne s'agit pas d'un e-mail valide, il sera faux. Sinon, il s' agira de la valeur de chaîne. La fonction vide renvoie également true. Si la valeur est fausse, nous pouvons simplement l'utiliser encore et encore pour quitter le script avec un message approprié. Maintenant, si je soumets la batterie de serveurs avec un nom valide mais une adresse e-mail vide, nous recevons le message de validation des e-mails. Si je saisis une valeur dans le champ e-mail, mais que ce n'est pas un e-mail valide. Ensuite, nous recevons le même message. Si je saisis un e-mail valide, nous recevons les données. la même manière, nous pouvons valider la description, la priorité et la catégorie. La catégorie. En plus de valider sa présence, nous pouvons également valider sa valeur. La catégorie sera une chaîne qui provient des valeurs des boutons radio, une erreur ou d'une suggestion. Juste au cas où la ferme serait contournée. Nous devons vérifier que la valeur est l'une des chaînes. Le moyen le plus simple consiste à utiliser la fonction tableau interne, vérifiant si la valeur de la batterie de serveurs est l'une de ces valeurs. Si ce n'est pas le cas, nous quitterons le script avec un message. Pour tester cela, supprimons temporairement l' élément d'erreur de la baie. Maintenant, si nous soumettons la batterie de serveurs avec la catégorie par défaut sélectionnée, nous obtenons le message de catégorie non valide. Si nous sélectionnons l'autre catégorie, elle réussit la validation et nous voyons les données. Maintenant, nous avons testé que cela fonctionne. Nous pouvons ajouter à nouveau la catégorie de défauts. Enfin, nous pouvons vérifier que la case a été cochée. Le filtre définit la valeur des termes sur booléen true s' il est vérifié. Sinon, ce sera non. Nous allons vérifier avec ça. Et si ce n'est pas vrai, arrêtera le script et génère un message. Si je soumets la batterie de serveurs sans cocher la case, nous recevons le message. Si je le vérifie, la validation passe et nous pouvons voir les données valides imprimées. 17. Valider le formulaire en utilisant la validation côté client dans le navigateur: Nous validons actuellement les données sur le serveur et imprimons les messages de validation si nécessaire. Nous pouvons cependant empêcher une demande au serveur, en validant d'abord la batterie de serveurs dans le navigateur. Cela est également plus convivial car il permet à l'utilisateur de corriger la batterie de serveurs aux endroits où les données ne sont pas valides avant qu'elles ne soient envoyées. Plus tôt. À la ferme. Nous avons ajouté l'attribut novalidate à la batterie de serveurs pour désactiver temporairement la validation. Nous pouvons supprimer cela maintenant. Ajoutons ensuite l'attribut requis aux champs obligatoires. Nom, e-mail, description et termes. En tant que priorité plus éloignée de la liste de sélection. Et les boutons radio de la catégorie ont des valeurs par défaut. Nous n'avons pas besoin d'y ajouter l'attribut requis. Le navigateur. Maintenant, si nous essayons de soumettre une batterie de serveurs vide, nous recevons un message de validation pour chaque champ requis vide. Quelle est la taille du message de validation à côté de chaque champ. Et l'accent est mis sur le terrain qui doit être modifié. Pour ce qui est de l'adresse e-mail, c'est un type de saisie d'e-mail. Nous accédons également au message de validation si la valeur n'est pas une adresse e-mail valide. Pour la case à cocher. marquer cela comme requis, l'utilisateur vérifier cela avant que la batterie de serveurs puisse être soumise. Si je le vérifie, nous pourrons soumettre la ferme et nous verrons les données imprimées. Maintenant, vous pensez peut-être que si nous validons dans le navigateur, nous n'avons pas besoin de valider dans le script PHP sur le serveur. Nous ajoutons la validation dans le navigateur car elle rend l'expérience utilisateur beaucoup plus agréable et réduit le nombre de demandes que nous adressons au serveur. Cependant, il peut être facilement contourné. Une façon de le faire, par exemple, consiste à envoyer une demande de publication au script PHP de la batterie de processus à l'aide de curl. Curl est un outil en ligne de commande permettant d'effectuer des requêtes HTTP. Utilisons donc curl en spécifiant la méthode de requête comme post. Et nous ajouterons quelques valeurs étrangères que nous ajouterons ainsi. Nous enverrons cette demande au processus partir du script PHP sur notre serveur. Nous obtenons la description de la réponse requise. Il s'agit du message provenant de la validation côté serveur car nous avons envoyé une valeur pour le nom et l'e-mail, mais pas une description plus détaillée. Il existe d'autres façons de manipuler la batterie utilisant les outils de développement dans le navigateur, par exemple. Fondamentalement, la validation côté client est recommandée. Mais la validation côté serveur est essentielle même si l' utilisateur ne le voit jamais, car les données sont déjà valides au moment de l'envoi du formulaire. code qui traite les données de batterie de serveurs doit toujours valider ces données sur le serveur. 18. Créer une base de données pour stocker les données à partir du formulaire: Nous avons maintenant les données de la batterie de serveurs et elles ont été validées. Nous pouvons insérer ces données dans une base de données sur le serveur. Je le ferai dans le serveur de base de données MariaDB que j'ai installé localement, qui, à toutes fins utiles, est identique à la commande MySQL affichée est valide pour l'un ou l'autre SGBD. Vous aurez une configuration similaire si vous avez installé le logiciel suggéré au début de la classe. Bien que n'hésitez pas à utiliser n'importe quelle base de données relationnelle que vous aimez. Je vais le faire sur la ligne de commande. Mais si vous préférez, vous pouvez utiliser le GAVI de votre choix, comme PHP, mon administrateur ou MySQL Workbench. Commençons par vous connecter au serveur de base de données sur la ligne de commande à l'aide du compte racine. Ensuite, nous allons créer une nouvelle base de données, que j'appellerai simplement support dB. Ensuite, nous créerons un utilisateur uniquement pour accéder à cette base de données. Nous n'avons donc pas à le faire en utilisant le compte racine. L'utilisateur dispose de privilèges complets sur toutes les tables de la nouvelle base de données appelée utilisateur DB de support utilisateur. Il se trouve sur le serveur hôte local. Et nous allons attribuer un mot de passe aléatoire. Vous devez prendre note de ce mot de passe lorsque nous nous connectons à la base de données plus tard à partir de PHP. Pour vérifier que cela fonctionne, nous pouvons quitter la console et nous reconnecter à l'aide de l'utilisateur et du mot de passe que nous venons de créer. Ensuite, nous pouvons sélectionner la base de données avec les États-Unis. Et cela le sélectionne sans problème. 19. Créer un tableau dans la base de données pour stocker les enregistrements: Nous pouvons maintenant ajouter une table à la base de données pour stocker les données de ticket. Créons une table appelée ticket avec les colonnes suivantes. Une colonne d'ID qui est un entier ne peut pas être nulle. Et nous allons définir cette option sur l' incrémentation automatique pour attribuer automatiquement des valeurs. Ensuite, une colonne de nom , qui est un varchar de 128 caractères inconnu. Ensuite, une colonne pour l'e-mail, qui est également un bon de 128 caractères qui ne peut pas être nul. Ensuite, une colonne de description, qui est du texte et ne peut pas non plus être nulle. Colonne suivante, priorité supplémentaire, qui est un entier non nul. Et enfin une colonne appelée catégorie, qui est un caractère var de 32 caractères, qui est également compté non. Avant de fermer les parenthèses, la colonne ID deviendra la clé primaire. Allons courir ça. Cela s'est produit sans erreur. Jetons un coup d'œil à la table que nous venons de créer. Et c'est là. Comme mentionné précédemment. Vous pouvez le faire dans une interface graphique comme PHP, mon administrateur, si vous préférez créer ce SQL, cette table sera disponible dans le code source téléchargeable des classes. 20. Connectez à la base de données de PHP: Nous avons maintenant la base de données et la table que nous pouvons connecter à la base de données depuis PHP. Nous n'avons plus besoin d' imprimer les données de la batterie de serveurs. Nous pouvons supprimer cette ligne du script de batterie de processus. Commençons par créer des variables pour contenir les détails de connexion du serveur de base de données. L'hôte est identique à celui du serveur Web localhost. Le nom de la base de données que nous venons de créer est support DB. Et nous allons créer deux autres variables pour le nom d'utilisateur et le mot de passe que nous venons créer pour vous connecter à la base de données. Nous appelons la fonction MySQL I connect, en transmettant l'hôte, le nom d'utilisateur, le mot de passe et le nom de la base de données. Ces variables doivent être dans cet ordre, et c'est une erreur courante de les placer dans le mauvais ordre. Si vous préférez, vous pouvez utiliser des arguments nommés en préfixant chaque valeur avec le nom de l'argument. Si vous faites cela, peu importe dans quel ordre ils se trouvent. Cela renvoie un objet qui représente la connexion à la base de données. Nous allons donc attribuer cela à une variable. Avant de pouvoir utiliser cette connexion à la base de données, nous devons nous assurer que nous sommes connectés, d'accord. La fonction numéro d'erreur MySQL connect renvoie un code d'erreur des tentatives de connexion les plus récentes. S'il n'y a pas eu d'erreur, ce rendement 00 équivaut à un milliard de faux. Nous pouvons vérifier cela en utilisant simplement ceci comme condition pour une déclaration if. Si une erreur de connexion s'est produite, nous arrêterons le script comme ci-dessus et imprimerons un message. Nous pouvons obtenir une description de l'erreur en appelant MySQL connect notre fonction. Si aucune erreur n'est survenue. Pour l'instant, imprimons un message indiquant que la connexion a réussi. Essayons ça. Si je saisis des données valides dans le formulaire et que je les soumets, nous recevons le message de connexion réussie. Voyons ce qui se passe si l'un des détails de connexion est erroné. Par exemple, modifions le mot de passe. Maintenant, si je soumets le formulaire, nous recevons le message d'erreur de connexion spécifiquement refusé. C'est ce qui se produit si les informations d'identification sont incorrectes. Rechangeons ça. Les détails sont à nouveau corrects. Une fois que nous sommes connectés, nous pouvons utiliser cette connexion pour effectuer des requêtes de base de données, comme nous le verrons prochainement. Une fois que nous l'avons terminé, nous pouvons éventuellement nous déconnecter de la base de l'aide de la fonction MySQL lie close, en transmettant la connexion à la base de données en argument. Cette étape est entièrement facultative, car lorsque nous arrivons à la fin de la demande, la connexion à la base de données est automatiquement fermée de toute façon. Vous pouvez cependant l'inclure si vous préférez. 21. Insert un nouveau enregistrement dans la base de données à partir de PHP: Une fois que nous sommes connectés à la base de données, nous pouvons insérer un nouvel enregistrement. Pour insérer un nouvel enregistrement, utilisez une instruction SQL insert. Ici, dans la base de données. Si nous examinons la structure de la table de tickets que nous avons créée, nous pouvons constater que la colonne ID est un champ d'incrémentation automatique Nous n'avons donc pas besoin de fournir une valeur pour cela. La valeur sera attribuée automatiquement. Toutes les autres colonnes n'autorisent pas les valeurs NULL. Nous devons fournir des valeurs non nulles. Père. Lorsque nous insérons un nouvel enregistrement, insérons un nouvel enregistrement directement ici pour voir le code SQL dont nous avons besoin. Comme avant. Vous pouvez le faire dans une interface graphique comme PHP, mon administrateur, si vous préférez. Commençons par sélectionner toutes les lignes de la table des billets. Et nous pouvons voir que la table est actuellement vide. Insérez un enregistrement. Nous utilisons l'instruction insert into en spécifiant le nom de la table, qui est ticket. Entre parenthèses, une liste des colonnes dans lesquelles nous allons insérer des valeurs. Comme je viens de le mentionner, nous n'avons pas besoin de spécifier la colonne ID car une valeur sera attribuée automatiquement. Ensuite, nous ajoutons le mot-clé valeurs, suivi d'une liste des valeurs que nous voulons insérer entre parenthèses. Je vais juste mettre quelques exemples de valeurs. Notez que les valeurs de chaîne doivent être placées entre guillemets simples et que les valeurs numériques comme la colonne de priorité ne le font pas. Lorsque nous exécutons cela, nous recevons un message indiquant que c'était correct et qu'un enregistrement a été inséré. Et si nous sélectionnons à nouveau toutes les lignes, nous voyons l'enregistrement dans la table, y compris la valeur attribuée automatiquement à la colonne ID. Maintenant, nous pouvons faire la même chose à partir de PHP. Tout d'abord, supprimons ces deux dernières lignes. Créons ensuite une variable qui contiendra le SQL. La première partie de l'instruction insert dans laquelle nous spécifions les colonnes et le mot-clé valeurs. Nous devons maintenant inclure les valeurs de la batterie de serveurs qui se trouvent dans le tableau de données. Il existe plusieurs façons de créer la chaîne SQL. Par exemple, l' interpolation de variables, concaténation de chaînes, etc. Allons-y avec la concaténation de chaînes. Nous allons concaténer chaque valeur avec la suivante, les séparant par des virgules. À la fin, nous fermerons les parenthèses. N'oublions pas que nous devons entourer les valeurs de chaînes de guillemets simples. Nous ajouterons cela aux valeurs de chaîne, qui sont toutes à l' exception de la priorité. Avant d'exécuter cela, imprimons la chaîne SQL pour voir ce qu'elle contient. Si je soumets des données valides, il y a la chaîne SQL. Au lieu de l'imprimer, lançons ça. Pour exécuter ce SQL, nous utiliserons la fonction de requête MySQL, en transmettant l'objet de connexion et la chaîne SQL comme arguments. Si cela échoue, il renvoie la valeur booléenne false. Alors, vérifions ça. Et s'il échoue, nous arrêterons le script avec un message. Nous pouvons obtenir une description du message d'erreur à l'aide la fonction d'erreur MySQL qui transmet l'objet connexion. S'il réussit, pour l'instant, nous allons simplement imprimer un message. Essayons ça. Si je soumets des données valides, nous recevons le message d'enregistrement enregistré. La table de tickets de la base de données. Il y a le nouvel enregistrement que nous venons d'insérer. Les données de cet enregistrement dans la table de base de données proviennent de la batterie de serveurs du navigateur. Je ne démontrerai pas ce qui se passe lorsque cela échoue pour l'instant. Comme nous allons le couvrir sous peu. Cependant, il y a un très gros problème de sécurité avec ce code, que nous examinerons dans la vidéo suivante. 22. Éviter les valeurs de chaîne de manière manuelle pour éviter une attaque à l'injection: Nous venons de voir comment cela fonctionne. Si je saisis simplement des valeurs simples dans la batterie de serveurs, un nouvel enregistrement est inséré dans la base de données. Cependant, voyons ce qui se passe si je saisis une valeur contenant une seule guillemets. Par exemple, un nom de famille comme O'Connor. Lorsque je soumets la batterie de serveurs, on nous dit qu'il y a une erreur dans SQL. Imprimons temporairement la chaîne SQL complète pour voir ce qu'elle contient. Maintenant, lorsque nous exécutons le code, il y a la chaîne SQL. Le problème est ici. Lorsque nous construisons la chaîne SQL, nous entourons chaque valeur de chaîne de guillemets simples. Cependant, comme cette valeur inclut des guillemets simples, la base de données se termine ici. Après la chaîne, il attend une virgule et la valeur suivante. Cependant, le reste du nom est là à la place. Rendre ce SQL non valide. Au mieux, tout ce qui arrivera avec cela , c'est que le SQL n'est pas valide. L'utilisateur verra un message d'erreur et l'enregistrement. Que serait-il inséré ? Au pire, cela pourrait être utilisé pour injecter du code SQL dans la chaîne SQL, connue sous le nom d'attaque par injection SQL. Un attaquant peut insérer du code SQL dans les entrées de formulaire, commençant par un simple guillemets qui pourrait supprimer certaines valeurs ou même récupérer le mot de passe administrateur de la base de données. Pour éviter cela, nous devons échapper aux guillemets simples dans valeurs de chaîne en les préfixant par une barre oblique inverse. Vous pouvez le faire manuellement en utilisant la fonction de remplacement de chaîne par exemple. Mais il y a une meilleure solution. La fonction de chaîne d'échappement réelle MySQL échappe à tous les caractères spéciaux à utiliser dans une instruction SQL. En outre, en tenant compte du paramètre de configuration de la connexion à la base de données. Appelons cette fonction pour chaque valeur que nous insérons dans le SQL, en transmettant l'objet de connexion comme premier argument à chaque fois. Bien que la priorité ne soit pas une chaîne, je l'appellerai aussi loin que cette valeur. Juste pour être sûr que nous n'insérons pas de valeur non fiable dans le SQL sans y échapper. Maintenant, si nous soumettons la batterie de serveurs, nous pouvons dire que le devis unique a été échappé en étant préfixé par une barre oblique inverse. Supprimons la ligne où nous imprimons le SQL. Actualisez la page dans le navigateur. Nous recevons maintenant le message enregistré dans la base de données. Il y a l'enregistrement que nous venons insérer contenant la valeur de guillemets unique. Notez qu'il n'est pas échappé dans la base de données. Il s'agit de la valeur telle qu'elle a été saisie dans la ferme. Notez également que lorsque nous obtenons une erreur de base de données, il est plus courant d'avoir une page d'erreur bien formatée que le message d'erreur comme celui-ci. Et dans une application de production, c'est quelque chose qu'il ferait. Cependant, pour les besoins de ce cours, nous allons simplement garder les choses simples, comme ça. 23. Utilisez une déclaration préparée pour insérer un nouveau dossier: Nous venons d'apprendre une façon d'éviter les attaques par injection SQL. Et c'est pour échapper à tous les caractères spéciaux dans des valeurs non fiables lorsque nous créons le SQL. Cependant, le problème lié à la création d'une chaîne SQL comme celle-ci est qu'elle conduit à code difficile à comprendre et donc difficile à déboguer et à maintenir. Il est également très facile d'oublier d'échapper à une nouvelle valeur si nous ajoutons une nouvelle colonne, par exemple. Une autre façon de le faire qui évite toujours attaques par injection SQL consiste à utiliser une instruction préparée. Commençons par modifier le SQL. Supprimera tous ces codes là où nous insérons les valeurs manuellement. Et au lieu de cela, pour chaque valeur, nous allons simplement mettre un point d'interrogation. C'est ce qu'on appelle un espace réservé. Notez que nous n'avons pas besoin de mettre guillemets autour des valeurs de chaîne, juste un point d'interrogation où la valeur ira. Nous n'allons pas exécuter cela avec la méthode de requête MySQL. Nous pouvons également supprimer cela. Au lieu de cela, nous appelons la fonction d'init de l' instruction MySQL, en transmettant la connexion comme argument pour créer des objets d'instruction préparés. Ensuite, nous appelons la fonction d' instruction MySQL par paire, en transmettant cet objet et la chaîne SQL. Cela renvoie une valeur de succès booléenne. Voyons si c'est faux. Et si c'est le cas, arrêtera le script d'impression du message d'erreur comme ci-dessus. C'est à ce stade que toute erreur de syntaxe dans SQL sera détectée. Ensuite, nous connectons des valeurs aux espaces réservés individuels de la chaîne SQL, appelée liaison. Pour ce faire, nous appelons la fonction de paramètre bind de l'instruction MySQL. Lorsque nous lions des valeurs aux espaces réservés, nous spécifions un type pour chaque variable à l'aide d'une chaîne de caractères individuels, où chaque caractère correspond à l'une des variables. Les personnages que nous pouvons utiliser. Ai pour les valeurs entières, les quatre valeurs doubles, comme pour les chaînes et B pour les blobs. Appelons la fonction qui transmet la variable d'instruction comme premier paramètre. Le deuxième paramètre est la chaîne de types. Donc, dans ce cas, il s'agirait d'un S pour le nom car il s'agit d'une chaîne, suivi d'un autre s pour l'e-mail, un autre pour la description. Un œil pour la priorité car il s'agit d'un entier. Et enfin, un autre S pour la catégorie. Le reste des paramètres correspond aux valeurs de ces variables. Le nom, l'e-mail, la description, la priorité et la catégorie de la baie de données. Le nombre de paramètres doit correspondre au nombre de caractères de la chaîne. Sinon, une exception sera lancée. Une fois que nous avons fait cela. Pour l'exécuter, nous appelons la fonction d' exécution des instructions MySQL qui transmet l'objet d'instruction en tant qu'argument. Notez que contrairement aux précédents, il n'est pas possible d'obtenir le code SQL qui sera généré et de l' imprimer dans le code PHP. En effet, la liaison des variables se produit sur le serveur de base de données et non sur le serveur Web. Essayons ça. Si j'inclue des valeurs dans la batterie de serveurs contenant des guillemets simples. Lorsque je soumets la batterie de serveurs, nous voyons le message d'enregistrement enregistré dans la base de données. Le nouvel enregistrement contient les valeurs de la batterie de serveurs. Il est légèrement plus complexe d'exécuter une instruction SQL à l'aide d'une instruction préparée. Mais le SQL lui-même est beaucoup plus clair et donc beaucoup moins sujet aux erreurs pouvant être causées par concaténation de chaînes, comme nous l'avons vu. 24. Utilisez le motif Post-Redirect-Get pour éviter les soumissions de formulaires: Jusqu'à présent, nous avons inséré plusieurs enregistrements, que nous pouvons voir ici dans la base de données. Pour cette vidéo, je vais vider la table à l'aide des instructions tronquées pour qu' il soit plus facile de voir ce qui se passe. Avec une table vide. Saisissons des données dans la batterie de serveurs et insérons un nouvel enregistrement. Pour le moment, nous voyons le message enregistré dans la base de données. Il y a le nouveau record. Cependant, sans revenir à la batterie de serveurs, si j'actualise la page dans le navigateur, nous recevons d' abord un message nous demandant de confirmer la nouvelle soumission de la batterie de serveurs. Cela est dû au fait que ce qui est affiché dans le navigateur est le résultat d'une demande de publication. Et si nous les actualisons, ces données seront envoyées à nouveau. Nous le confirmons. Nous voyons à nouveau le message enregistré dans l'enregistrement. La base de données. Il existe maintenant deux enregistrements contenant les données de la batterie de serveurs. Chaque fois que nous actualiserons cette page, un nouvel enregistrement sera inséré. Si vous venez de faire quelque chose comme acheter quelque chose ou envoyer un message, vous ne voulez pas que cela se répète facilement. La façon standard d'éviter cela consiste à utiliser le modèle post-redirection get après une demande de publication réussie. Au lieu de répondre au contenu à afficher, le navigateur est immédiatement redirigé vers une autre page. Commençons par ajouter une autre page vers laquelle nous pouvons rediriger. Ajoutons un nouveau fichier appelé Success Dot HTML. Le formulaire, copions la première partie du code HTML vers l'élément d'en-tête et y compris puis collez-le dans le nouveau fichier. Au lieu d'une batterie de serveurs, il suffit d'ajouter un élément de paragraphe contenant le texte. Merci. Et le corps de fermeture et les balises HTML. Les scripts de batterie de processus. Au lieu d' imprimer ce message, nous avons inséré avec succès un nouvel enregistrement. Ici, redirigera vers une autre page. Pour ce faire, nous envoyons un en-tête de localisation contenant l'URL vers laquelle nous sommes en train de rediriger. Nous allons également définir le code d'état de la réponse sur 303, ce qui indique que nous sommes en train de rediriger vers une page de confirmation. Pour envoyer l'en-tête, nous appelons la fonction d'en-tête, en transmettant une chaîne contenant un emplacement, un deux-points et un espace. Ensuite, l'URL vers laquelle nous sommes en train de rediriger, qui dans ce cas n'est que le point HTML relatif de succès de l'URL. Pour définir le code de réponse, nous utiliserons des arguments nommés afin d'éviter d'avoir à définir d'autres arguments requis dans cet appel de fonction, le définissant à 303. C'est la fin de ce script, mais c'est généralement une bonne pratique après redirection de quitter le script immédiatement après. Nous allons donc inclure un appel de sortie. Essayons ça. Maintenant, avec des données différentes dans la batterie de serveurs. Si nous le soumettons, nous sommes redirigés vers la page de réussite. Maintenant, si je rafraîchis la page, aucun message ne nous demandait de confirmer la soumission de la pharmacie dans la base de données. Un seul enregistrement a été inséré. 25. Projet de votre cours : Créer un formulaire et enregistrer les données du formulaire dans une base d: Maintenant, c'est à ton tour. Votre projet pour cette classe consiste à créer une batterie de serveurs pour capturer certaines données et enregistrer ces données dans une base de données. Commencez par concevoir une batterie de serveurs qui capture les données dont vous avez besoin. Par exemple, un formulaire d'inscription, une ferme d'artistes, etc. Utilisez les types d'entrée pertinents pour chaque élément de données. Ensuite, créez un script PHP pour traiter les données de la batterie de serveurs envoyées, en vous assurant que toutes les données sont valides. Créez ensuite une base de données avec une table pour stocker les données de la batterie de serveurs. Utilisez différents types de colonnes pour stocker chaque élément de données si nécessaire. Une fois que vous disposez de la table de base de données, vous pouvez écrire le code SQL et PHP pour insérer un enregistrement dans cette table. Enfin, redirigez vers une page de succès. Une fois qu'un enregistrement a été inséré avec succès. Vous pouvez utiliser ces sites Web de documentation comme référence pour le code HTML, SQL et PHP que vous écrivez. De plus, le code affiché dans la classe est disponible en téléchargement. Si vous avez besoin d'aide, vous pouvez poser une question dans la section discussion en classe ci-dessous. J'ai hâte de voir vos projets. 26. Conclu: Félicitations, vous avez terminé le cours. Dans cette classe, vous avez appris tout ce que vous devez savoir pour créer une batterie de serveurs en HTML contenant des entrées pour différents types de données, comment valider ces données en PHP et comment les enregistrer devez savoir pour créer une batterie de serveurs en HTML contenant des entrées pour différents types de données, comment valider ces données en PHP et comment les enregistrer. dans une base de données sur le serveur. C'est l'une des compétences clés de tout développeur d'applications Web. Si vous débutez ou si vous êtes un développeur expérimenté qui cherche à étendre ses compétences, vous venez d'apprendre quelques techniques importantes pour cette fonctionnalité très demandée. N'oubliez pas de publier vos projets dans la galerie de projets de la classe. J'ai hâte de les voir. Enfin. Je voulais juste vous remercier d' avoir suivi ce cours. J'espère que ça vous a plu. Si c'est le cas, veuillez envisager de laisser un avis. De plus, s'il y a un sujet que vous souhaitez que je aborde, n' hésitez pas à me le faire savoir. Je vous verrai dans le prochain cours.