Connexions modernes et sécurisées aux bases de données avec PHP

Table des matières
S'il y a quelque chose qui peut endommager une application, c'est lorsque nous n'utilisons pas les ressources adéquates pour la rendre plus rapide et plus sûre, il existe de nombreuses façons d'améliorer la vitesse et la sécurité des applications, cela peut être en utilisant de meilleurs modèles de développement, appliquer une plus grande sécurité sur les serveurs, etc.
Cependant, il y a un point où souvent nous ne nous arrêtons pas pour réfléchir et c'est si l'outil que la langue nous donne est le meilleur pour le travail que nous faisons. Cela arrive souvent dans PHP Malgré le fait que depuis de nombreuses années, il y a eu une alerte pour ne pas utiliser la fonction mysql_connect() établir des liens avec Base de données, de nombreux développeurs semblent ne pas se rendre compte de la grosse erreur qu'ils commettent en l'utilisant.
PHP a un support natif pour un grand nombre de moteurs Base de données qui existent sur le marché, cependant son intégration avec MySQL c'est presque un point de départ obligatoire pour la plupart des utilisateurs.
mysql_connect()À partir de la version 5.5 de PHP fonction classique mysql_connect() est en état obsolète, c'est-à-dire qu'il est obsolète et qu'il est fortement déconseillé de l'utiliser car il ne sera pas inclus dans les futures versions du langage.
L'alternative pour faire la connexion passe par deux éléments, le premier est d'utiliser la même structure de langage pour faire des connexions ou d'utiliser la nouvelle bibliothèque pour se connecter avec MySQL. Voici peut-être la première question, pourquoi simplement penser à MySQL? Bon la réponse est simple, c'est un début, c'est la chose la plus simple et la plus utile que l'on puisse expliquer dans un premier temps, si on connaît cette base on peut extrapoler à d'autres moteurs et pilotes.
La première alternative de connexion à Base de données est d'utiliser le propre objet de données du langage appelé Objet de données PHP ou son abréviation AOP. Ce n'est rien de plus qu'une grande extension écrite dans la langue C qui nous permet d'établir des connexions avec différents types de moteurs Base de données et qu'il a des méthodes standard qui nous donnent la possibilité d'écrire des applications multiplateformes, c'est-à-dire que nous n'avons pas à changer la syntaxe si nous changeons le moteur de base de données.
Au début, nous avons dit que nous allions nous concentrer sur MySQL, cependant si nous établissons une connexion via AOP ce que nous faisons, nous pouvons l'appliquer à d'autres moteurs. Pour cela, il suffit d'activer ou d'intégrer les pilotes desdits moteurs et de les activer dans le fichier php.ini du serveur.
Pour se connecter à un Base de données il suffit d'établir le lien en utilisant la méthode appropriée pour cela, en AOP la connexion est réalisée avec trois paramètres de base, le nom du serveur de base de données, le nom d'utilisateur et son mot de passe.
Le seul paramètre de ces trois qui nécessite une explication est celui du serveur de base de données, dans le passé, nous devions sélectionner le Base de données Grâce à une fonction spécifique après avoir établi la connexion, dans ce cas nous le ferons dans la même chaîne, donc notre chaîne de nom de serveur ressemblerait à ceci :
mysql : hôte = nom d'hôte; dbname = dbname

On voit que l'on spécifie initialement le moteur, dans ce cas mysql alors avec host on va vous dire quel est le serveur, ici ca peut etre un IP ou alors hôte local si le serveur est local, enfin avec nom de base de données on passe le nom de la base de données à laquelle on veut se connecter. Nous allons observer dans l'image suivante comment un code doit se connecter en utilisant AOP:

AGRANDIR

Puisque nous connaissons l'étape initiale qui consiste à se connecter, nous devons maintenant apprendre comment exécuter des requêtes, normalement dans le passé nous exécutions directement la requête avec ses paramètres, cette pratique n'est pas du tout sûre car elle nous rend enclin à attaques du type Injection SQL, AOP nous permet d'utiliser ce qu'on appelle Déclarations préparées ce qui n'est rien de plus que l'exécution de la requête de manière paramétrée, de sorte que la bibliothèque elle-même effectue un travail de débogage et est moins sujette aux attaques. Voyons ensuite comment exécuter une requête simple puis son équivalent avec Déclaration préparée.
Dans cette requête simple, nous supposerons que nous avons une table dans notre Base de données appel Auteur qui reçoit un code auteur puis son nom, étant bien entendu démonstratif ce n'est pas un exemple de bonne table, on s'intéresse seulement à savoir comment fonctionne la connexion à partir de AOP.
Dans l'image, nous voyons que nous appelons une méthode appelée mettre en doute () à partir de l'objet créé avec la chaîne de connexion PDO, alors nous écrivons notre requête sans trop de problème :

AGRANDIR

Le problème est que nous recevons les valeurs directement, il n'y a donc aucun moyen d'améliorer et de réutiliser cela, à la place si nous faisons un Déclaration préparée, nous verrons que d'abord nous indiquons quelle est la requête à exécuter, puis avec une autre méthode nous la rendons effective et lui passons les valeurs nécessaires. Cela met en jeu le moteur de débogage des paramètres. AOP offrant ainsi un niveau de protection supplémentaire. Voyons dans l'image suivante à quoi ressemblerait l'exemple précédent en utilisant Déclarations préparées à présent.

AGRANDIR

À première vue, cela peut sembler un peu complexe et pas optimal, cependant si nous analysons, nous voyons que nous établissons d'abord la requête à exécuter, puis nous créons un tableau avec les paramètres que notre requête recevra, dans le cas de l'exemple que nous recevons le code de l'auteur et son nom, enfin nous exécutons la requête et lui passons le tableau de paramètres.
Si nous voulons consulter une fois que nous avons déjà inséré des valeurs dans notre Base de données c'est très simple, il suffit de le faire avec une requête SÉLECTIONNER, cela nous permettra d'apporter les enregistrements, dans le passé nous dépendions de fonctions telles que mysql_fetch_array () ou alors mysql_fetch_assoc() qui une fois consommé nous a laissé incapable de gérer à nouveau ses résultats.
Avec AOP Nous allons obtenir les données directement à partir de l'objet, nous les aurons donc toujours disponibles lors de l'exécution, voyons dans l'exemple suivant comment cela se ferait :

Nous voyons comment nous faisons initialement un Déclaration préparée, on fait une requête simple dans ce cas puis avec une boucle tandis que () nous obtiendrons chacun des enregistrements et ferons leur impression, si nous remarquons que nous ne nous référons pas à MySQL n'importe où dans notre code, donc si nous modifions la chaîne de connexion et utilisons un autre moteur qui a une table et un Base de données du même nom et de la même structure, nous pourrons obtenir vos données sans avoir à modifier notre code.
Quoi MySQL est le moteur de base de données le plus populaire à intégrer avec PHP, il y a aussi une alternative et c'est MySQLi qui n'est rien de plus qu'une interface orientée objet. Son mode de fonctionnement est très similaire à celui de AOPCependant, ce qui change, c'est que ce n'est que pour ce moteur de base de données populaire, donc une conversion multiplateforme ne serait pas possible.
Sa chaîne de connexion est un peu moins complexe puisqu'elle divise le nom du serveur dans l'hôte et la Base de données à utiliser en deux paramètres différents, en plus du nom et du mot de passe de l'utilisateur, voyons à quoi cela ressemble :
$ objConex = new mysqli (Nom d'hôte, utilisateur, mot de passe, DatabaseName);

Voyons dans l'exemple suivant comment nous établissons une connexion en utilisant MySQLi et comment nous pouvons effectuer une simple insertion de données :

AGRANDIR

On remarque qu'il y a une similitude avec AOP en ayant une méthode mettre en doute () aussi, mais cela ne fonctionnera que pour MySQL.
Maintenant, nous allons recevoir et parcourir les données que nous pouvons obtenir à partir d'une requête, pour cela nous allons utiliser la même méthode mettre en doute () puis la méthode fetch_assoc () pour obtenir les résultats :

La chose la plus intéressante que nous avons remarquée est que nous utilisons la méthode Fermer (), ce qu'il fait est de fermer la connexion en cours et de nettoyer le tampon de manière à optimiser l'utilisation des ressources du serveur.
ImportantNous devons garder à l'esprit que si nous avons un système fait dans une ancienne version de PHP et nous ne migrerons pas vers de nouvelles versions, peut-être changer les chaînes de connexion en Base de données et les méthodes de requête peuvent ne pas être une bonne idée pour le travail qu'elle représente. Cependant, si nous voulons créer de nouvelles applications et de nouveaux systèmes, il est préférable de commencer avec une base solide en utilisant ces nouvelles bibliothèques avec un support dans les futures versions de PHP.
Avec cela, nous terminons ce tutoriel, nous avons vu que les nouvelles alternatives sont beaucoup plus propres et plus sûres, et leur facilité d'utilisation les rend adaptées à l'époque actuelle.Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave