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.