Besoin d aide pour sécuriser mon site
Résolu/Fermé
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
-
Modifié le 18 mai 2021 à 08:07
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 - 19 mai 2021 à 20:07
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 - 19 mai 2021 à 20:07
A voir également:
- Besoin d aide pour sécuriser mon site
- Site de telechargement - Accueil - Outils
- Site pour vendre des objets d'occasion - Guide
- Site comme coco - Accueil - Réseaux sociaux
- Site inaccessible - Guide
- Quel site remplace coco - Accueil - Réseaux sociaux
23 réponses
yg_be
Messages postés
23352
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2024
Ambassadeur
1 554
18 mai 2021 à 08:19
18 mai 2021 à 08:19
bonjour,
tu dois en effet te protéger des injections en utilisant des requêtes préparées, sans jamais combiner autrement une syntaxe SQL et des données reçues.
tu dois en effet te protéger des injections en utilisant des requêtes préparées, sans jamais combiner autrement une syntaxe SQL et des données reçues.
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
18 mai 2021 à 08:56
18 mai 2021 à 08:56
merci yg_be pour la reponse
voici donc une première requête préparée pour une variable name
voici donc une première requête préparée pour une variable name
$connexion = mysqli_connect("localhost", "u43rle", "Ssa2", "u4346erle") ; if (!$connexion) { printf("Impossible de se connecter à localhost. Code d'erreur : %d\n", mysqli_connect_errno()); exit(); } if(!empty($_POST["send"])) { mysqli_query($connexion, "CREATE TEMPORARY TABLE contact LIKE name"); $name = $_POST["name"]; /* Cette requête échoue car nous n'avons pas échappé $city */ if (!mysqli_query($connexion, "INSERT into contact (Name) VALUES ('$name')")) { printf("Erreur : %s\n", mysqli_sqlstate($connexion)); } $name = mysqli_real_escape_string($connexion, $name); /* Cette requête, par contre, réussira car nous avons échappé $city */ if (mysqli_query($connexion, "INSERT into contact (Name) VALUES ('$name')")) { printf("%d ligne insérée.\n", mysqli_affected_rows($connexion)); } mysqli_close($connexion);
yg_be
Messages postés
23352
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2024
1 554
18 mai 2021 à 09:09
18 mai 2021 à 09:09
de toute évidence, tu n'as pas utilisé la technique de requête préparée.
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
18 mai 2021 à 09:43
18 mai 2021 à 09:43
merci pour l aide
je pense avoir compris la requête de préparation
distric
je pense avoir compris la requête de préparation
distric
$connexion = mysqli_connect("localhost", "u434perle", "S02", "u43erle") ; if (!$connexion) { printf("Impossible de se connecter à localhost. Code d'erreur : %d\n", mysqli_connect_errno()); exit(); } $name = $_POST["name"]; /* Crée une requête préparée */ if ($stmt = $mysqli->prepare("SELECT contact FROM name WHERE Name=?")) { /* Lecture des marqueurs */ $stmt->bind_param("s", $name); /* Exécution de la requête */ $stmt->execute(); /* Lecture des variables résultantes */ $stmt->bind_result($contact); /* Récupération des valeurs */ $stmt->fetch(); printf("%s est dans le contact de %s\n", $name, $contact); /* Fermeture du traitement */ $stmt->close(); } /* Fermeture de la connexion */ $mysqli->close();
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
18 mai 2021 à 10:06
18 mai 2021 à 10:06
Ben oui
C'est la même chose que ce que tu as demandé hier soir...
https://forums.commentcamarche.net/forum/affich-37217652-question-sur-les-requetes-preparee-en-mysqli#p37217658
C'est la même chose que ce que tu as demandé hier soir...
https://forums.commentcamarche.net/forum/affich-37217652-question-sur-les-requetes-preparee-en-mysqli#p37217658
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
>
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
18 mai 2021 à 10:36
18 mai 2021 à 10:36
oui jordane
mais le sujet a été clôturé
donc je veux être sur avant d appliquer sur toutes mes pages
merci de votre aide a vous deux
mais le sujet a été clôturé
donc je veux être sur avant d appliquer sur toutes mes pages
merci de votre aide a vous deux
Pierrecastor
Messages postés
41467
Date d'inscription
mercredi 5 novembre 2003
Statut
Modérateur
Dernière intervention
30 mai 2024
4 143
>
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
18 mai 2021 à 17:22
18 mai 2021 à 17:22
Salut,
Un topic passé en résolu n'est pas clôturé, on peut tout à fait continuer à poser des questions dessus.
Un topic passé en résolu n'est pas clôturé, on peut tout à fait continuer à poser des questions dessus.
yg_be
Messages postés
23352
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2024
1 554
18 mai 2021 à 10:07
18 mai 2021 à 10:07
c'est en effet un bon exemple d'utilisation de requête préparée.
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
Modifié le 18 mai 2021 à 10:32
Modifié le 18 mai 2021 à 10:32
par contre il y a un paramètre que je pense que j ai pas bien compris et donc ma requête après lecture devrait être mauvaise
select je pense que cela doit être le nom de la base
FROM doit etre le nom de la table
et where le titre de la colonne dans la table
personnellement
j utilise toujours * entre SELECT et FROM
($stmt = $mysqli->prepare("SELECT contact FROM name WHERE Name=?"))
select je pense que cela doit être le nom de la base
FROM doit etre le nom de la table
et where le titre de la colonne dans la table
personnellement
j utilise toujours * entre SELECT et FROM
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
18 mai 2021 à 10:45
18 mai 2021 à 10:45
Le fait d'utiliser les requêtes préparées .. ça ne change rien aux requêtes à proprement parler
C'est juste au niveau des "variables" qui, au lieu de les mettre directement en PHP dans la requête .. sont remplacés par des "?"
et pour chaque "?", il faut faire un BIND de la variable correspondante
C'est juste au niveau des "variables" qui, au lieu de les mettre directement en PHP dans la requête .. sont remplacés par des "?"
$sql = " SELECT cequetuveux FROM tatable WHERE unchamp=? OR unautrechamp=? "; $sql = " UPDATE tatable SET unchamp=? , unautrechamp=? WHERE id= ? "; $sql = " INSERT INTO tatable ( unchamp, unautrechamp) VALUES(?,?) ";
et pour chaque "?", il faut faire un BIND de la variable correspondante
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
18 mai 2021 à 11:52
18 mai 2021 à 11:52
ah ok jordane
merci pour l aide
mais de toute façon l hiver prochain je compte m y mettre dans le php de façon plus approfondie
car cela m intéresse
j ai encore une question avec le select
quand tu dis que je peux mettre ce que je veux
je pourrais écrire "azerty "c est pas logique car je sélectionne quelque chose
merci pour l aide
mais de toute façon l hiver prochain je compte m y mettre dans le php de façon plus approfondie
car cela m intéresse
j ai encore une question avec le select
quand tu dis que je peux mettre ce que je veux
je pourrais écrire "azerty "c est pas logique car je sélectionne quelque chose
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
18 mai 2021 à 12:26
18 mai 2021 à 12:26
Tu mets soit le signe etoile ce qui signifie que tu veux tous les champs, soit tu désignes le ou les champs que tu veux remonter dans ta requête SELECT.
C'est le b a-ba du langage SQL...
C'est le b a-ba du langage SQL...
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
18 mai 2021 à 16:19
18 mai 2021 à 16:19
merci jordane
bon je vais regarder a cela
j ai toujours eu un peu dur avec cette fameuse Etoile
si je reprends l exemple de php
je suis retourne voir sur classroom pour cet exemple de requête
bon je peux comprendre celle ci
« Sélectionner tous les champs de la table jeux_video lorsque le champ Possesseur est égal à Patrick »
de ce cote c est simple a comprendre
mais alors cela je ne comprends pas
ca veux quand même bien dire
sélectionner le champ processeur de la table jeux vidéo et recherche ce qu il y a dans ce champ
bon je vais regarder a cela
j ai toujours eu un peu dur avec cette fameuse Etoile
si je reprends l exemple de php
($stmt = mysqli_prepare($link, "SELECT District FROM City WHERE Name=?"))
je suis retourne voir sur classroom pour cet exemple de requête
bon je peux comprendre celle ci
SELECT * FROM jeux_video WHERE possesseur='Patrick'
« Sélectionner tous les champs de la table jeux_video lorsque le champ Possesseur est égal à Patrick »
de ce cote c est simple a comprendre
mais alors cela je ne comprends pas
SELECT prossesseur FROM jeux_video WHERE possesseur=?'
ca veux quand même bien dire
sélectionner le champ processeur de la table jeux vidéo et recherche ce qu il y a dans ce champ
yg_be
Messages postés
23352
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2024
1 554
18 mai 2021 à 16:31
18 mai 2021 à 16:31
ton exemple PHP est incomplet.
prends plutôt ceci comme exemple:
la deuxième instruction lie la requête préparée avec le contenu de la variable $name, ce qui produit, si $name contient"NewYork", une requête SQL correcte:
prends plutôt ceci comme exemple:
$mysqli->prepare("SELECT contact FROM name WHERE Name=?")) { $stmt->bind_param("s", $name); $stmt->execute();
SELECT contact FROM name WHERE Name=?n'est pas la requête SQL utilisée
la deuxième instruction lie la requête préparée avec le contenu de la variable $name, ce qui produit, si $name contient"NewYork", une requête SQL correcte:
SELECT contact FROM name WHERE Name="NewYork"
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
18 mai 2021 à 16:31
18 mai 2021 à 16:31
Je ne comprends pas ce qui te bloques...
Déjà..
Veut dire.. retourner la valeur du champ "prossesseur" lorsque le possesseur vaut une valeur...
Je ne sais pas si tu as fais une faute de frappe et que dans les deux cas tu voulais utiliser le mot "processeur" .. ou si tu as bien deux noms de champs différents... "prossesseur" et "possesseur"
Si c'est une faute de frappe et que c'est deux fois le même nom de champs.. c'est débile....
ça revient à demander de quelle couleur est le cheval blanc d'henry IV ...
Bref ... reprenons un exemple avec une table ayant 3 champs ; (champ1, champ2 , autrechamp )
Retourner les champs 1 et 2 de ma table 'matable'
quand autrechamp = la valeur cherchée
Par contre .. j'insiste ....
Ca n'a rien à voir avec le langage PHP ..... là .. c'est une question concernant le fonctionnement du langage de requêtage SQL ...
Il serait bien de ne pas mélanger tout et n'importe quoi dans tes questions sur le forum !
Déjà..
SELECT prossesseur FROM jeux_video WHERE possesseur=?'
Veut dire.. retourner la valeur du champ "prossesseur" lorsque le possesseur vaut une valeur...
Je ne sais pas si tu as fais une faute de frappe et que dans les deux cas tu voulais utiliser le mot "processeur" .. ou si tu as bien deux noms de champs différents... "prossesseur" et "possesseur"
Si c'est une faute de frappe et que c'est deux fois le même nom de champs.. c'est débile....
ça revient à demander de quelle couleur est le cheval blanc d'henry IV ...
Bref ... reprenons un exemple avec une table ayant 3 champs ; (champ1, champ2 , autrechamp )
SELECT champ1,champ2 FROM matable WHERE autrechamp = ?
Retourner les champs 1 et 2 de ma table 'matable'
quand autrechamp = la valeur cherchée
Par contre .. j'insiste ....
Ca n'a rien à voir avec le langage PHP ..... là .. c'est une question concernant le fonctionnement du langage de requêtage SQL ...
Il serait bien de ne pas mélanger tout et n'importe quoi dans tes questions sur le forum !
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
18 mai 2021 à 17:10
18 mai 2021 à 17:10
merci jordane
et merci pour votre patience a tout les deux
mais des fois a un certain âge cela a du mal a entrer
merci aussi pour ces explications et l exemple a présent cela est un peu plus clair
pour te répondre oui cela été une faute de frappe
si je te dis que je cherche depuis midi pour comprendre une telle requête
cette fois ci je pense avoir compris ce genre de requête
oui en effet tu as raison j ai mélange les deux choses
mais des fois y a des exemples de php qui ne sont pas clair du tout
voici donc la requête préparée
j espère que cela est bon
il y a encore cette ligne que je ne comprends pas
es ce que je dois remplacer les deux variables par toutes mes variables
et merci pour votre patience a tout les deux
mais des fois a un certain âge cela a du mal a entrer
merci aussi pour ces explications et l exemple a présent cela est un peu plus clair
pour te répondre oui cela été une faute de frappe
si je te dis que je cherche depuis midi pour comprendre une telle requête
SELECT prossesseur FROM jeux_video WHERE prossesseur=?'
cette fois ci je pense avoir compris ce genre de requête
oui en effet tu as raison j ai mélange les deux choses
mais des fois y a des exemples de php qui ne sont pas clair du tout
voici donc la requête préparée
j espère que cela est bon
error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); if(!empty($_POST["send"])) { $connexion = mysqli_connect("localhost", "u4erle", "Ssa02", "u434rle") ; if (!$connexion) { printf("Impossible de se connecter à localhost. Code d'erreur : %d\n", mysqli_connect_errno()); exit(); } $name = $_POST["name"]; $email = $_POST["email"]; //$subject = $_POST["subject"]; $messager = $_POST["messager"]; $drone = $_POST["drone"]; $drone1 = $_POST["drone1"]; $drone3 = $_POST["drone3"]; $drone4 = $_POST["drone4"]; $drone5 = $_POST["drone5"]; $result = mysqli_query($connexion, "INSERT INTO contact (name, email, message,Avez_vous_deja_perler,seriez_vous_pret_a_sauter_le_pas,Trouvez_vous_des_perles_facilement,Connaissez_vous_des_perleurs,Que_penses_tu_de_mon_blog) VALUES ('" . $name. "', '" . $email. "','" . $messager. "' ,'" . $drone. "' ,'" . $drone1. "' ,'" . $drone3. "' ,'" . $drone4. "' ,'" . $drone5. "' )");{ $stmt->bind_param("s", $name); $stmt->execute(); $stmt->bind_param("s", email); $stmt->execute(); $stmt->bind_param("s", $messager); $stmt->execute(); $stmt->bind_param("s", $drone); $stmt->execute(); $stmt->bind_param("s", $drone1); $stmt->execute(); $stmt->bind_param("s", $drone3); $stmt->execute(); $stmt->bind_param("s", $drone4); $stmt->execute(); $stmt->bind_param("s", $drone5); $stmt->execute(); mysqli_stmt_close($stmt); } if($result){ $db_msg = "Vos informations de contact sont enregistrées avec succés."; $type_db_msg = "success"; }else{ $db_msg = "Erreur lors de la tentative d'enregistrement de contact."; $type_db_msg = "error"; } }
il y a encore cette ligne que je ne comprends pas
/* Récupération des valeurs */ mysqli_stmt_fetch($stmt); printf("%s est dans le district de %s\n", $city, $district);
es ce que je dois remplacer les deux variables par toutes mes variables
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
18 mai 2021 à 17:13
18 mai 2021 à 17:13
Non
Là ça n'a rien à voir avec les requête préparées....
Oubli ces deux lignes de code...
Là ça n'a rien à voir avec les requête préparées....
Oubli ces deux lignes de code...
yg_be
Messages postés
23352
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2024
1 554
18 mai 2021 à 18:19
18 mai 2021 à 18:19
où est le prepare?
relis ma remarque en #3.
relis ma remarque en #3.
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
>
yg_be
Messages postés
23352
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2024
18 mai 2021 à 19:58
18 mai 2021 à 19:58
merci yg_be
je l vais oublie celui la
je l vais oublie celui la
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
18 mai 2021 à 17:30
18 mai 2021 à 17:30
merci jordane
donc pour le reste tout est bon dans mon code ?
sauf la détection des erreurs dans la requête
donc pour le reste tout est bon dans mon code ?
sauf la détection des erreurs dans la requête
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
18 mai 2021 à 19:59
18 mai 2021 à 19:59
voila donc j ai tout refais avec les idées bien claires et après une bonne sieste
$mysqli= new mysqli("localhost", "u43rle", "Ss02", "u434rle") ; if (mysqli_connect_errno()) { printf("Échec de la connexion : %s\n", mysqli_connect_error()); exit(); } if ($stmt = $mysqli->prepare( "INSERT INTO contact (name, email, message,Avez_vous_deja_perler,seriez_vous_pret_a_sauter_le_pas,Trouvez_vous_des_perles_facilement,Connaissez_vous_des_perleurs,Que_penses_tu_de_mon_blog) VALUES ('" . $name. "', '" . $email. "','" . $messager. "' ,'" . $drone. "' ,'" . $drone1. "' ,'" . $drone3. "' ,'" . $drone4. "' ,'" . $drone5. "' )");{ $name = $_POST["name"]; $email = $_POST["email"]; //$subject = $_POST["subject"]; $messager = $_POST["messager"]; $drone = $_POST["drone"]; $drone1 = $_POST["drone1"]; $drone3 = $_POST["drone3"]; $drone4 = $_POST["drone4"]; $drone5 = $_POST["drone5"]; $stmt->bind_param("s", $name); $stmt->execute(); $stmt->bind_param("s", email); $stmt->execute(); $stmt->bind_param("s", $messager); $stmt->execute(); $stmt->bind_param("s", $drone); $stmt->execute(); $stmt->bind_param("s", $drone1); $stmt->execute(); $stmt->bind_param("s", $drone3); $stmt->execute(); $stmt->bind_param("s", $drone4); $stmt->execute(); $stmt->bind_param("s", $drone5); $stmt->execute(); mysqli_stmt_close($stmt); } if($result){ $db_msg = "Vos informations de contact sont enregistrées avec succés."; $type_db_msg = "success"; }else{ $db_msg = "Erreur lors de la tentative d'enregistrement de contact."; $type_db_msg = "error"; }
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
18 mai 2021 à 20:02
18 mai 2021 à 20:02
Ton prépare ne sert à rien si tu y mets directement les variable PHP...
Il faut utiliser les points d'interrogation si tu veux ensuite faire du bind...
Il faut utiliser les points d'interrogation si tu veux ensuite faire du bind...
yg_be
Messages postés
23352
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2024
1 554
18 mai 2021 à 20:05
18 mai 2021 à 20:05
je ne peux que tu suggérer de faire une plus longue sieste.
prends le temps d'étudier, de comprendre, et de tester.
je ne pense pas te rendre service en te permettant d'avancer sans comprendre.
prends le temps d'étudier, de comprendre, et de tester.
je ne pense pas te rendre service en te permettant d'avancer sans comprendre.
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
Modifié le 19 mai 2021 à 08:10
Modifié le 19 mai 2021 à 08:10
bonjour a tous
merci pour les réponses , la patience de jordane et yg_be
hier soir j ai cherche après des tutos et j ai fini par en trouver un qui me semble bien expliquer
cette requête
voici le lien
http://sdz.tdct.org/sdz/maitrisez-mysqli-sans-poo.html
voici donc la mienne
merci pour les réponses , la patience de jordane et yg_be
hier soir j ai cherche après des tutos et j ai fini par en trouver un qui me semble bien expliquer
cette requête
voici le lien
http://sdz.tdct.org/sdz/maitrisez-mysqli-sans-poo.html
voici donc la mienne
$name = $_POST["name"]; $email = $_POST["email"]; //$subject = $_POST["subject"]; $messager = $_POST["messager"]; $drone = $_POST["drone"]; $drone1 = $_POST["drone1"]; $drone3 = $_POST["drone3"]; $drone4 = $_POST["drone4"]; $drone5 = $_POST["drone5"]; $bdd = mysqli_connect("localhost", "u4eperle", "S2202", "u434600rle"); /* Vérification de la connexion */ if (mysqli_connect_errno()) { printf("Échec de la connexion : %s\n", mysqli_connect_error()); exit(); } $req_pre = mysqli_prepare($bdd, "INSERT INTO contact (name, email, message,Avez_vous_deja_perler,seriez_vous_pret_a_sauter_le_pas,Trouvez_vous_des_perles_facilement,Connaissez_vous_des_perleurs,Que_penses_tu_de_mon_blog) VALUES(?, ?, ?, ?, ?, ?, ?, ?)"); mysqli_stmt_bind_param($req_pre, "ssssssss", $name, $email, $messager, $drone, $drone1, $drone3, $drone4, $drone5 ); mysqli_stmt_execute($req_pre); if($req_pre){ $db_msg = "Vos informations de contact sont enregistrées avec succès."; $type_db_msg = "success"; }else{ $db_msg = "Erreur lors de la tentative d'enregistrement de contact."; $type_db_msg = "error"; }
yg_be
Messages postés
23352
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2024
1 554
19 mai 2021 à 09:07
19 mai 2021 à 09:07
tu te rapproches.
reste à modifier le code pour vérifier si la ligne 21 fait bien son boulot.
idem pour la ligne 22.
le test en ligne 24 n'a guère de sens.
reste à modifier le code pour vérifier si la ligne 21 fait bien son boulot.
idem pour la ligne 22.
le test en ligne 24 n'a guère de sens.
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
Modifié le 19 mai 2021 à 09:16
Modifié le 19 mai 2021 à 09:16
merci pour la reponse yg_be
je suppose en m inspirant ce ceci comme exemple
je suppose en m inspirant ce ceci comme exemple
<?php mysqli_stmt_bind_result($req_pre, $donnees['pseudo'], $donnees['age'], $donnees['email']); while(mysqli_stmt_fetch($req_pre)) { echo $donnees['pseudo'] . ", " . $donnees['age'] . " ans, " . $donnees['email']; } ?>
yg_be
Messages postés
23352
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2024
1 554
19 mai 2021 à 09:27
19 mai 2021 à 09:27
tu choisis tes exemples les yeux fermés?
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
19 mai 2021 à 09:28
19 mai 2021 à 09:28
mais non j ai regarder sur le tuto
<?php // include de la connexion SQL. $req_pre = mysqli_prepare($bdd, 'SELECT * FROM membres WHERE age = ? LIMIT 0, ?'); mysqli_stmt_bind_param($req_pre, "ii", $age, $nombre_resultat); mysqli_stmt_execute($req_pre); mysqli_stmt_bind_result($req_pre, $donnees['pseudo'], $donnees['age'], $donnees['email']); while(mysqli_stmt_fetch($req_pre)) { echo $donnees['pseudo'] . ", " . $donnees['age'] . " ans, " . $donnees['email']; } ?>
yg_be
Messages postés
23352
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2024
1 554
19 mai 2021 à 10:11
19 mai 2021 à 10:11
il est préférable de choisir un exemple en adéquation avec la situation.
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
Modifié le 19 mai 2021 à 10:55
Modifié le 19 mai 2021 à 10:55
merci pour l aide
je pense avoir trouve
je pense avoir trouve
$name = $_POST["name"]; $email = $_POST["email"]; //$subject = $_POST["subject"]; $messager = $_POST["messager"]; $drone = $_POST["drone"]; $drone1 = $_POST["drone1"]; $drone3 = $_POST["drone3"]; $drone4 = $_POST["drone4"]; $drone5 = $_POST["drone5"]; $bdd = mysqli_connect("localhost", "u43le", "S02", "u4rle"); /* Vérification de la connexion */ if (mysqli_connect_errno()) { printf("Échec de la connexion : %s\n", mysqli_connect_error()); exit(); } $req_pre = mysqli_prepare($bdd, "INSERT INTO contact (name, email, message,Avez_vous_deja_perler,seriez_vous_pret_a_sauter_le_pas,Trouvez_vous_des_perles_facilement,Connaissez_vous_des_perleurs,Que_penses_tu_de_mon_blog) VALUES(?, ?, ?, ?, ?, ?, ?, ?)"); mysqli_stmt_bind_param($req_pre, "ssssssss", $name, $email, $messager, $drone, $drone1, $drone3, $drone4, $drone5 ); mysqli_stmt_execute($req_pre); //Binding values in result to variables mysqli_stmt_bind_result($stmt, $name, $email, $messager, $drone, $drone1, $drone3, $drone4, $drone5 ); while (mysqli_stmt_fetch($stmt)) { print("Id: ".$name."\n"); print("fname: ".$email."\n"); print("lname: ".$messager."\n"); print("pob: ".$drone."\n"); print("country: ".$drone1."\n"); print("country: ".$drone3."\n"); print("country: ".$drone4."\n"); print("country: ".$drone5."\n"); print("\n"); } //Closing the statement mysqli_stmt_close($stmt); //Closing the connection mysqli_close($bdd);
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
19 mai 2021 à 11:24
19 mai 2021 à 11:24
Comprends tu à quoi servent ses lignes de code :
????
Si la réponse est oui... alors pourquoi les mettre ici ???
Si la réponse est non... ben essaies de comprendre.... et tu verras qu'elles n'ont pas leur place dans ce code.
//Binding values in result to variables mysqli_stmt_bind_result($stmt, $name, $email, $messager, $drone, $drone1, $drone3, $drone4, $drone5 ); while (mysqli_stmt_fetch($stmt)) { print("Id: ".$name."\n"); print("fname: ".$email."\n"); print("lname: ".$messager."\n"); print("pob: ".$drone."\n"); print("country: ".$drone1."\n"); print("country: ".$drone3."\n"); print("country: ".$drone4."\n"); print("country: ".$drone5."\n"); print("\n"); }
????
Si la réponse est oui... alors pourquoi les mettre ici ???
Si la réponse est non... ben essaies de comprendre.... et tu verras qu'elles n'ont pas leur place dans ce code.
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
19 mai 2021 à 11:32
19 mai 2021 à 11:32
bonjour Jordane
merci pour la réponse
ben je suppose que cela retourne un résultat et les affiches
pourtant c est bien ce que l exemple dans php fait
si cela n est pas la manière de vérifier les lignes 21 et 22
alors je ne sais pas
c est que tous les exemples que je trouve sont mauvais
merci pour la réponse
ben je suppose que cela retourne un résultat et les affiches
pourtant c est bien ce que l exemple dans php fait
/* Récupération des valeurs */ mysqli_stmt_fetch($stmt); printf("%s est dans le district de %s\n", $city, $district);
si cela n est pas la manière de vérifier les lignes 21 et 22
alors je ne sais pas
c est que tous les exemples que je trouve sont mauvais
Pierrecastor
Messages postés
41467
Date d'inscription
mercredi 5 novembre 2003
Statut
Modérateur
Dernière intervention
30 mai 2024
4 143
19 mai 2021 à 11:41
19 mai 2021 à 11:41
Salut,
Je me permet juste un avis perso. Apprendre à coder en collant des bouts de codes pris à droite et à gauche sans savoir de qu'on fait exactement n'est pas une bonne méthode. Mieux vaut prendre un tuto ou un cours ou l'on part de zéro et on tape sois même le code dans des exercices de plus en plus complexe.
Je me permet juste un avis perso. Apprendre à coder en collant des bouts de codes pris à droite et à gauche sans savoir de qu'on fait exactement n'est pas une bonne méthode. Mieux vaut prendre un tuto ou un cours ou l'on part de zéro et on tape sois même le code dans des exercices de plus en plus complexe.
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
19 mai 2021 à 11:41
19 mai 2021 à 11:41
Est-ce qu'une requête insert retourne quelque chose... ?
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
19 mai 2021 à 11:54
19 mai 2021 à 11:54
non cela ne retourne rien puisque on entre les données dans la table
mais une fois insérée elles existent
tu vas me dire que pour les lires il faut faire une requête
donc oui ces lignes ne servent a rien
donc du coup comment vérifier que les lignes de contrôle ont bien fonctionner ??
dans tous les tutos que je suis allé voir
personne ne les vérifie
mais une fois insérée elles existent
tu vas me dire que pour les lires il faut faire une requête
donc oui ces lignes ne servent a rien
donc du coup comment vérifier que les lignes de contrôle ont bien fonctionner ??
dans tous les tutos que je suis allé voir
personne ne les vérifie
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
Modifié le 19 mai 2021 à 12:08
Modifié le 19 mai 2021 à 12:08
Tu veux contrôler quoi ?
Si ta requête insert ne retourne pas d'erreur c'est qu'elle a fonctionnée...
Et pour savoir si ta requête a retourné une erreur ou non il faut regarder si il y a une erreur via
Tu trouveras des exemples sur internet sans trop de difficultés.
À toi de les lire et d'essayer de les comprendre avant de les utiliser
Si ta requête insert ne retourne pas d'erreur c'est qu'elle a fonctionnée...
Et pour savoir si ta requête a retourné une erreur ou non il faut regarder si il y a une erreur via
mysqli_stmt_error($stmt);
Tu trouveras des exemples sur internet sans trop de difficultés.
À toi de les lire et d'essayer de les comprendre avant de les utiliser
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
19 mai 2021 à 12:36
19 mai 2021 à 12:36
merci jordane pour la reponse
je veux contrôler si tout c est bien passe avec la variable $stmt
en effet une fois que l on a le code il est tres facile de trouver des exemples
donc dans mon cas je ne dois juste faire qu une seule vérification que la variable n'a trouve aucune erreur lors de l insertion des données dans la table
donc la logique devrait que je dois ajouter ceci après l execute
de telle façon a afficher les erreurs si il y a une erreur
je veux contrôler si tout c est bien passe avec la variable $stmt
en effet une fois que l on a le code il est tres facile de trouver des exemples
donc dans mon cas je ne dois juste faire qu une seule vérification que la variable n'a trouve aucune erreur lors de l insertion des données dans la table
donc la logique devrait que je dois ajouter ceci après l execute
de telle façon a afficher les erreurs si il y a une erreur
printf("Erreur : %s.\n", mysqli_stmt_error($stmt)); /* Ferme la commande */ mysqli_stmt_close($stmt); } /* Ferme la connexion */ mysqli_close($bdd);
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
19 mai 2021 à 13:10
19 mai 2021 à 13:10
voila j ai enfin réussi et j ai corriger des erreurs
et tout ce passe bien
tout est parti dans al base de donnee
si c est cela
c est vrai qu une fois que cela a été fais une fois
que tout est compréhensible et que quand on relis la documentation de php
tout es clair
et tout ce passe bien
tout est parti dans al base de donnee
si c est cela
c est vrai qu une fois que cela a été fais une fois
que tout est compréhensible et que quand on relis la documentation de php
tout es clair
$name = $_POST["name"]; $email = $_POST["email"]; //$subject = $_POST["subject"]; $messager = $_POST["messager"]; $drone = $_POST["drone"]; $drone1 = $_POST["drone1"]; $drone3 = $_POST["drone3"]; $drone4 = $_POST["drone4"]; $drone5 = $_POST["drone5"]; $bdd = mysqli_connect("localhost", "u45_pecheperle", "Ssa02", "u434erle"); /* Vérification de la connexion */ if (mysqli_connect_errno()) { printf("Échec de la connexion : %s\n", mysqli_connect_error()); exit(); } $req_pre = mysqli_prepare($bdd, "INSERT INTO contact (name, email, message,Avez_vous_deja_perler,seriez_vous_pret_a_sauter_le_pas,Trouvez_vous_des_perles_facilement,Connaissez_vous_des_perleurs,Que_penses_tu_de_mon_blog) VALUES(?, ?, ?, ?, ?, ?, ?, ?)"); mysqli_stmt_bind_param($req_pre, "ssssssss", $name, $email, $messager, $drone, $drone1, $drone3, $drone4, $drone5 ); mysqli_stmt_execute($req_pre); printf("Erreur : %s.\n", mysqli_stmt_error($req_pre)); /* Ferme la commande */ mysqli_stmt_close($req_pre); /* Ferme la connexion */ mysqli_close($bdd);
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
19 mai 2021 à 17:19
19 mai 2021 à 17:19
du coup j ai fait des tests et tout passe bien je n ai aucune erreur
avant de pouvoir l appliquer sur ton mon site
je souhaiterais savoir si cela est ok a present
avant de pouvoir l appliquer sur ton mon site
je souhaiterais savoir si cela est ok a present
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
19 mai 2021 à 17:32
19 mai 2021 à 17:32
Tu as du code en double
Dans l'idéal, il faut placer le code de connexion à la bdd ans un fichier à part et l'inclure dans les pages dans lesquelles tu en as besoin au lieu de recopier ces lignes de code à chaque fois.
Et il serait bien de récupérer "proprement" les variables AVANT de les utiliser.
Pour rappel :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
/* Ferme la commande */ mysqli_stmt_close($req_pre); /* Ferme la connexion */ mysqli_close($bdd);
Dans l'idéal, il faut placer le code de connexion à la bdd ans un fichier à part et l'inclure dans les pages dans lesquelles tu en as besoin au lieu de recopier ces lignes de code à chaque fois.
Et il serait bien de récupérer "proprement" les variables AVANT de les utiliser.
Pour rappel :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
19 mai 2021 à 17:46
19 mai 2021 à 17:46
merci jordane pour ce complément d information
c'est vrai que la connexion devrait ne pas ce trouvez la
je vais devenir un champion a la longe mdrrrr
alors pour ce qui est du code en double
voici un extrait de php
donc on fait comment ?
c'est vrai que la connexion devrait ne pas ce trouvez la
je vais devenir un champion a la longe mdrrrr
alors pour ce qui est du code en double
voici un extrait de php
/* Ferme la commande */ mysqli_stmt_close($stmt); /* Ferme la connexion */ mysqli_close($link);
donc on fait comment ?
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
19 mai 2021 à 17:59
19 mai 2021 à 17:59
au temps pour moi;
j'ai lu un peu vite.
Il est vrai que je ne ferme jamais la connexion à la bdd ( en même temps je n'utilise pas mysqli mais PDO )
Donc, oui, tu peux laisser
j'ai lu un peu vite.
Il est vrai que je ne ferme jamais la connexion à la bdd ( en même temps je n'utilise pas mysqli mais PDO )
Donc, oui, tu peux laisser
flexi2202
Messages postés
3801
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
21 octobre 2024
187
19 mai 2021 à 18:09
19 mai 2021 à 18:09
parfait merci jordane
tu vois que j apprends
très doucement mais ...
je suppose que l on blind que les champs ou l utilisateur sait entrer des données
pour des boutons radios , des checbox pas de blinder ?
faut il faire autre chose pour sécuriser sa connexion , sa base de donnée ?
son site en général ??
tu vois que j apprends
très doucement mais ...
je suppose que l on blind que les champs ou l utilisateur sait entrer des données
pour des boutons radios , des checbox pas de blinder ?
faut il faire autre chose pour sécuriser sa connexion , sa base de donnée ?
son site en général ??
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
19 mai 2021 à 18:12
19 mai 2021 à 18:12
Il faut binder à chaque fois que les données proviennent de $_POST, $_GET, $_SESSION
que ça soit pour des requête de type INSERT, UPDATE, DELETE ou SELECT (dans le where )
que ça soit pour des requête de type INSERT, UPDATE, DELETE ou SELECT (dans le where )
yg_be
Messages postés
23352
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2024
1 554
>
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
19 mai 2021 à 18:41
19 mai 2021 à 18:41
Il me semble prudent de binder toutes les variables, même celles qui semblent protégées de toute influence malveillante.
Le programme peut évoluer, ou ne pas toujours se comporter comme le programmeur l'imagine.
Autres précautions:
- ne pas afficher les messages d'erreurs techniques, de PHP ou autres: cela peut donner des indices aux pirates: n'afficher que des messages neutres. Cela inclut donc de ne pas afficher, en dehors des tests, les erreurs de syntaxe PHP que Jordane te recommandait d'afficher quand tu testais.
- en cas de vérification de mot de passe, ne jamais préciser si l'erreur vient du nom d'utilisateur ou du mot de passe, cela aide à deviner une combinaison correcte.
- utiliser les variables de session pour mémoriser des informations sensibles entre les pages, jamais un formulaire, un lien ou un cookie, tout cela étant facile à pirater.
Le programme peut évoluer, ou ne pas toujours se comporter comme le programmeur l'imagine.
Autres précautions:
- ne pas afficher les messages d'erreurs techniques, de PHP ou autres: cela peut donner des indices aux pirates: n'afficher que des messages neutres. Cela inclut donc de ne pas afficher, en dehors des tests, les erreurs de syntaxe PHP que Jordane te recommandait d'afficher quand tu testais.
- en cas de vérification de mot de passe, ne jamais préciser si l'erreur vient du nom d'utilisateur ou du mot de passe, cela aide à deviner une combinaison correcte.
- utiliser les variables de session pour mémoriser des informations sensibles entre les pages, jamais un formulaire, un lien ou un cookie, tout cela étant facile à pirater.