Publié par Fabrice le 29 mars 2023 - Temps de lecture estimé : 5 minutes
Catégories :
Webmastering
- Étiquettes :
IA
MySQL
PHP
Seconde partie consacrée à ChatGPT : la création d'un formulaire en PHP et MySQL.
Pour cette seconde partie, j'ai demandé à ChatGPT de créer un formulaire avec 3 champs (nom, e-mail et mot de passe) et le code PHP correspondant pour injecter les données dans une base MySQL.
Le prompt
Create a HTML form with following fields : name, email and password and a PHP script to store information into a MySQL table with sanitize and validate input
Dans le premier cas, le code fourni comportait des failles de sécurité, en ce sens ou les données injectées ne sont pas vérifiées. Mais, point important, ChatGPT a rajouté un message d'avertissement demandant de vérifier et nettoyer les données.
J'ai donc rajouté un nouveau prompt :
could you remade PHP code with satinize input to prevent SQL injection
Le code HTML
<form method="post" action="submit.php">
<label for="name">Name:</label>
<input type="text" name="name" id="name" required>
<br>
<label for="email">Email:</label>
<input type="email" name="email" id="email" required>
<br>
<label for="password">Password:</label>
<input type="password" name="password" id="password" required>
<br>
<input type="submit" value="Submit">
</form>
Le code est ultra-basique, mais il y a l'essentielle sans mise en forme, sauf, peut-être, autocomplete
.
Le code PHP
<?php
// Set up database connection
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database_name";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Sanitize and validate form data
$name = filter_var($_POST["name"], FILTER_SANITIZE_STRING);
$email = filter_var($_POST["email"], FILTER_SANITIZE_EMAIL);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
die("Invalid email format");
}
$password = password_hash($_POST["password"], PASSWORD_DEFAULT);
// Insert data into MySQL table
$stmt = $conn->prepare("INSERT INTO users (name, email, password) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $name, $email, $password);
if ($stmt->execute() === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $stmt->error;
}
$stmt->close();
$conn->close();
?>
Le code ci-dessus est le second avec la demande vérification des données. Eh bien ce n'est finalement pas si mal, et il fonctionne ! On notera l'utilisation des filtres de validation et de nettoyage propre à PHP. ChatGPT pourrait donc servir à créer des Snippets, permettant aux développeurs de travailler plus rapidement !