Probleme d'insertion sur une table

Ce forum vous servira à trouver de l'aide uniquement en ce qui concerne le développement d'un de vos MODs, ou l'adaptation d'un MOD phpBB2 pour phpBB3.

Modérateur: Equipe

Probleme d'insertion sur une table

Messagepar mars_94 » 30 Mai 2009 à 23:32

Bonsoir à toutes et tous,

Voilà, j'ai un petit probleme avec un petit (tres petit) mod que j'aimerais installer sur mon forum.
cela consiste à remplir un formulaire qui remplirait une table nommé phpbb3_bonplan.

J'ai créé 2 fichiers, un s'appelant essai.php à la racine de mon site et un autre se nommant
essai.html se trouvant dans le répertoire template de mon style.

Le probleme vient du fait que la requête SQL se lance au chargement de la page alors
que j'aimerais qu'elle se lance qu'une fois les champs remplis par un membre et après
un clic sur le bouton "envoyer".

De plus, la requête se lançant, celle crée une erreur m'indiquant que je ne peux pas
enregistrer des valeurs NULL dans la base(compréhensible vu que les champs sont vides).

Si quelqu'un pouvait me donner un début de solution ou m'indiquer ce que j'ai oublié,
je l'en remercie d'avance.

SITE : http://cbf600.fr/essai.php
Dernière édition par mars_94 le 01 Juin 2009 à 13:34, édité 1 fois.
carpe diem est ma devise
Avatar de l’utilisateur
mars_94
Posteur néophyte
Posteur néophyte
 
Messages: 49
Inscription: 11 Jan 2007 à 11:22
Localisation: entre mathay(fr) et le locle (ch)

Re: Probleme d'insertion sur une table

Messagepar Morgyanne » 31 Mai 2009 à 09:28

Salut,

un lien vers le MOD en question.
P.S. Modifie aussi ton titre pour y inclure le nom du MOD.

@+
Morgyanne :)
Demande de support par MP = Poubelle
Avatar de l’utilisateur
Morgyanne
Administrateur
Administrateur
 
Messages: 31255
Inscription: 21 Mar 2005 à 12:28
Localisation: Juste derrière toi...

Re: Probleme d'insertion sur une table

Messagepar mars_94 » 31 Mai 2009 à 10:20

Quand je parlais de MOD, en fait je parle de celui que je suis en train
de développer. Il n'y a donc pas de lien. Juste le code dont je vous fais part.
carpe diem est ma devise
Avatar de l’utilisateur
mars_94
Posteur néophyte
Posteur néophyte
 
Messages: 49
Inscription: 11 Jan 2007 à 11:22
Localisation: entre mathay(fr) et le locle (ch)

Re: Probleme d'insertion sur une table

Messagepar Théonaute » 31 Mai 2009 à 14:43

Bonjour,

Dans ce cas, ce n'est pas un support pour un MOD indépendant à notre base de données, mais de l'aide au développement.
Merci de faire attention où vous postez.

Votre sujet a été déplacé par un membre de l'équipe.
Forum d'origine : MODs phpBB3 ‹ MODs indépendants de la base

Bien à vous, :wink:
Théonaute | Retraité de l'équipe des MODs
Citation :
<?php while(!($succeed = try())) ?>
Désolé, je ne fais plus de support pour phpBB et tous mes MODs ont été arrêtés.
Avatar de l’utilisateur
Théonaute
Dieu des floodeurs
Dieu des floodeurs
 
Messages: 5702
Inscription: 22 Jan 2006 à 15:45
Localisation: Montréal

Re: Probleme d'insertion sur une table

Messagepar Dr DLP » 31 Mai 2009 à 15:52

En remplaçant:
Code: Tout sélectionner
   $sql = 'INSERT INTO phpbb3_bonplan' . $db->sql_build_array('INSERT', array(
      'type'      => $type,
      'nom'      => $nom,
      'pays'      => $pays,
      'adresse'   => $adresse,
      'code'      => $code,
      'ville'      => $ville,
      'tel'      => $tel,
      'internet'   => $internet,
      'propose'   => $propose,
      'com'      => $com,
      )
   );
   $db->sql_query($sql);

par
Code: Tout sélectionner
if(isset($_POST['nom']))
{
   $sql = 'INSERT INTO phpbb3_bonplan' . $db->sql_build_array('INSERT', array(
      'type'      => $type,
      'nom'      => $nom,
      'pays'      => $pays,
      'adresse'   => $adresse,
      'code'      => $code,
      'ville'      => $ville,
      'tel'      => $tel,
      'internet'   => $internet,
      'propose'   => $propose,
      'com'      => $com,
      )
   );
   $db->sql_query($sql);
}

Par exemple.

Accessoirement, je te déconseille fortement de te servir des valeurs superglobales pour les intégrer directement dans ta requête, ça doit être la faille de sécurité numéro 1 en PHP.
Par exemple, il te faudrait
Code: Tout sélectionner
$adresse = isset($_POST['adresse']) ? htmlspecialchars($_POST['adresse']) : '';

Avant ta requête, en utilisant htmlspecialchars() pour le texte, intval() pour les valeurs numériques.
Avatar de l’utilisateur
Dr DLP
Floodeur universel
Floodeur universel
 
Messages: 8411
Inscription: 05 Mar 2003 à 22:49
Localisation: Var ( 83 )

Re: Probleme d'insertion sur une table

Messagepar mars_94 » 01 Juin 2009 à 11:06

Merci à toi pour ce code qui fonctionne à merveille.
J'avais une petite erreur dans le mien :
ancien code
Code: Tout sélectionner
    if(isset($_POST['nom']))
    {
       $sql = 'INSERT INTO phpbb3_bonplan' . $db->sql_build_array('INSERT', array(
          'type'      => $type,
          'nom'      => $nom,
          ......
          'com'      => $com,
          )
       );
       $db->sql_query($sql);
    }

nouveau code
Code: Tout sélectionner
    if(isset($_POST['nom']))
    {
       $sql = 'INSERT INTO phpbb3_bonplan' . $db->sql_build_array('INSERT', array(
          'type'      => $_POST['type'],
..........
          'com'      => $_POST['com'],
          )
       );
       $db->sql_query($sql);
    }   


Ton conseil concernant les valeurs superglobales
Code: Tout sélectionner
    $adresse = isset($_POST['adresse']) ? htmlspecialchars($_POST['adresse']) : '';

deviendrait il maintenant :
Code: Tout sélectionner
    $_POST['adresse'] = isset($_POST['adresse']) ? htmlspecialchars($_POST['adresse']) : '';


Encore merci pour ton aide précieuse.
carpe diem est ma devise
Avatar de l’utilisateur
mars_94
Posteur néophyte
Posteur néophyte
 
Messages: 49
Inscription: 11 Jan 2007 à 11:22
Localisation: entre mathay(fr) et le locle (ch)

Re: Probleme d'insertion sur une table

Messagepar Dr DLP » 01 Juin 2009 à 12:47

Nan.
Je t'explique le truc:
Imagine que dans le champ type un type écrive par exemple:
Code: Tout sélectionner
'', 'pass' => 'bouglou',

Il modifiera ainsi ta requête SQL, avec des conséquences plus ou moins graves.
Pour chaque valeur qui va être passé par ta requête SQL tu dois te demander si une telle injection est possible, et si oui, l'empêcher.
Htmlspecialchars() transforme les caractères spéciaux (comme les ' ou les ") en code HTML, les rendant ininterprétable dans par exemple, une requêtre SQL, en effet l'exemple plus haut devient:
Code: Tout sélectionner
&#039&#039, &#039pass&#039 => &#039bouglou&#039,

Plus d'explications.

$_POST['x'] est dite superglobale car elle est disponible partout dans ton script PHP, y compris dans les fonctions, et elle a la particularité de définir automatiquement $x = $_POST['x'];
Il faut se méfier comme de la peste de ces variables, elles sont une source monumentale de failles de sécurités, ton but est de t'en débarasser le plus vite possible dans ton code, si possible au tout début, en récupérant et en traitant la valeur.

Ainsi pour faire propre, à la place de
Code: Tout sélectionner
if(isset($_POST['nom']))

Tu dois avoir:
Code: Tout sélectionner
$nom = isset($_POST['nom']) ? htmlspecialchars($_POST['nom'], ENT_QUOTES) : '';
if($nom != '')


A toi de voir fonction des risques tu es prêt à courir, je ne peux que te conseiller de prendre cette habitude néanmoins :)
Avatar de l’utilisateur
Dr DLP
Floodeur universel
Floodeur universel
 
Messages: 8411
Inscription: 05 Mar 2003 à 22:49
Localisation: Var ( 83 )

Re: Probleme d'insertion sur une table

Messagepar mars_94 » 01 Juin 2009 à 13:33

Merci à toi pour toutes ces explications très détaillées
et très compréhensibles pour le néophyte que je suis.

Concernant ma requête sur ce topic, je la considère
comme règlée au vue de mon script qui fonctionne
parfaitement maintenant. Je reviendrai toutefois
donner des résultats quand au code vis à vis des
superglobales et et de ce que j'ai pu faire.

Un grand merci à Dr DLP de qui j'ai beaucoup appris.
carpe diem est ma devise
Avatar de l’utilisateur
mars_94
Posteur néophyte
Posteur néophyte
 
Messages: 49
Inscription: 11 Jan 2007 à 11:22
Localisation: entre mathay(fr) et le locle (ch)


Retourner vers Aide au développement

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

Partenaires : phpBBHacks.com • phpBB-Seo.com • EzCom-fr.com • phpBB3 Styles • phpBB podpora • phpBB Portugal    Liens : Net Avenir • PromoBenef • Ticket Gagnant