Insertion des éléments du formulaire dans la base de donnée
Résolu/Fermé
KAFCISCO
Messages postés
15
Date d'inscription
samedi 24 janvier 2015
Statut
Membre
Dernière intervention
20 mai 2015
-
20 mai 2015 à 11:51
kafcisco - 5 juin 2015 à 09:23
kafcisco - 5 juin 2015 à 09:23
A voir également:
- Formulaire insertion données mysql php pdo
- Formulaire de réclamation facebook - Guide
- Insertion liste déroulante excel - Guide
- Mysql download - Télécharger - Bases de données
- Easy php - Télécharger - Divers Web & Internet
- Insertion sommaire word - Guide
2 réponses
CptRomaiin
Messages postés
315
Date d'inscription
mercredi 23 octobre 2013
Statut
Membre
Dernière intervention
28 avril 2016
58
Modifié par CptRomaiin le 20/05/2015 à 12:59
Modifié par CptRomaiin le 20/05/2015 à 12:59
Salut,
Ta façon de faire n'est pas correct et présente plusieurs problèmes :
- à l'avant dernière ligne tu attribues "value..." à la variable $sql, ce qui créé évidement une erreur lorsque tu la soumets à mysql_query
- Tu créé une grosse faille de sécurité par injection SQL en insérant directement les variables de ton formulaire dans ta requête
- mysql_query est obsolète et ne doit plus être utilisé (il sera supprimé de PHP sous peu)
Pour résoudre tout ces problèmes tu devrais utiliser PDO de cette manière :
PDO échappe automatiquement les valeurs des paramètres, il n'y a donc pas de risque d'injection SQL.
Un peu de lecture :
https://www.php.net/manual/fr/ref.pdo-mysql.php
http://openclassrooms.com/courses/les-transactions-avec-mysql-et-pdo
Ta façon de faire n'est pas correct et présente plusieurs problèmes :
- à l'avant dernière ligne tu attribues "value..." à la variable $sql, ce qui créé évidement une erreur lorsque tu la soumets à mysql_query
- Tu créé une grosse faille de sécurité par injection SQL en insérant directement les variables de ton formulaire dans ta requête
- mysql_query est obsolète et ne doit plus être utilisé (il sera supprimé de PHP sous peu)
Pour résoudre tout ces problèmes tu devrais utiliser PDO de cette manière :
$db = new PDO('mysql:host=localhost;dbname=database', 'user', 'password'); $insert = $db->prepare('INSERT INTO inscrit (pseudo, adresse) VALUES (:pseudo, :adresse)'); $insert->execute(array('pseudo' => $_post['pseudo'], 'adresse' => $_post['adresse']));
PDO échappe automatiquement les valeurs des paramètres, il n'y a donc pas de risque d'injection SQL.
Un peu de lecture :
https://www.php.net/manual/fr/ref.pdo-mysql.php
http://openclassrooms.com/courses/les-transactions-avec-mysql-et-pdo
KAFCISCO
Messages postés
15
Date d'inscription
samedi 24 janvier 2015
Statut
Membre
Dernière intervention
20 mai 2015
20 mai 2015 à 19:02
20 mai 2015 à 19:02
Merci, CptRomaiin de vouloir m'aider les éléments que tu m'apportés sont intéressants, mais je l'avais dit j'ai fait trois scripts dont tu connais le premier et les deux autres sont:
- connexion:
<?php
$host = "localhost"; /*127.0.0.1 */;
$login = ""; /*root*/;
$password = "";
$base = ""; /*membre*/;
function connexion()
{
global $host, $login, $password, $base;
$db = mysql_connect($host, $login, $password);
mysql_select_db($base,$db);
}
?>
et celui du formulaire
- formulaire:
<html>
<header>
<title>
FICHE D'INSCRIPTION
</title>
<h1>
<marquee>
FAITES VOTRE INSCRIPTION EN 30 SECONDS
</marquee>
</h1>
</header>
<body>
<form action="ajout.php" method="post">
<input type="text" name="pseudo">
PSEUDO
</input></br></br>
<input type="text" name="adresse">
ADRESSE
</input></br></br>
<input type="submit" value="ENREGISTRER"/>
</form>
</body>
</html>
Alors comment dois-je réussir avec les éléments que tu m'a donné?
MERCI
- connexion:
<?php
$host = "localhost"; /*127.0.0.1 */;
$login = ""; /*root*/;
$password = "";
$base = ""; /*membre*/;
function connexion()
{
global $host, $login, $password, $base;
$db = mysql_connect($host, $login, $password);
mysql_select_db($base,$db);
}
?>
et celui du formulaire
- formulaire:
<html>
<header>
<title>
FICHE D'INSCRIPTION
</title>
<h1>
<marquee>
FAITES VOTRE INSCRIPTION EN 30 SECONDS
</marquee>
</h1>
</header>
<body>
<form action="ajout.php" method="post">
<input type="text" name="pseudo">
PSEUDO
</input></br></br>
<input type="text" name="adresse">
ADRESSE
</input></br></br>
<input type="submit" value="ENREGISTRER"/>
</form>
</body>
</html>
Alors comment dois-je réussir avec les éléments que tu m'a donné?
MERCI
CptRomaiin
Messages postés
315
Date d'inscription
mercredi 23 octobre 2013
Statut
Membre
Dernière intervention
28 avril 2016
58
26 mai 2015 à 14:34
26 mai 2015 à 14:34
Et bien il suffit d'organiser le code de cette manière :
Le formulaire reste inchangé.
La page connexion.php :
La page ajout.php :
Le formulaire reste inchangé.
La page connexion.php :
$host = "localhost"; $login = "root"; $password = ""; $base = "membre"; $db = new PDO('mysql:host=' . $host . ';dbname=' . $base, $login, $password);
La page ajout.php :
include('connexion.php'); $insert = $db->prepare('INSERT INTO inscrit (pseudo, adresse) VALUES (:pseudo, :adresse)'); $insert->execute(array('pseudo' => $_post['pseudo'], 'adresse' => $_post['adresse']));
kafcisco
>
CptRomaiin
Messages postés
315
Date d'inscription
mercredi 23 octobre 2013
Statut
Membre
Dernière intervention
28 avril 2016
5 juin 2015 à 09:23
5 juin 2015 à 09:23
merci CptRomaiin, vos conseils m'ont été d'une grande utilités, merci encore de m'avoir donner la solution.