Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1133 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Envoi données formulaire vers BDD ne fonctionne pas...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Envoi données formulaire vers BDD ne fonctionne pas...

n°1400376
loulipo
Posté le 04-07-2006 à 15:49:05  profilanswer
 

Bonjour,
 
Voilà mon problème : J'ai un formulaire qui permet aux utilisateurs de créer leur propre page sur notre site. En gros chacun a 10 pages qu'il peut alimenter où non par le biais d'un formulaire. Les données sont ensuite envoyées dans une base de données MySQL et les pages sont ainsi modifées automatiquement sur le site. Or je me suis aperçu tout d'un coup que cela ne fonctionnait plus... Je vous joins le code...peut-être allez vous pouvoir m'aider... Merci d'avance...
 

Code :
  1. <?php
  2. if ($action != "update" ) {
  3. include '../../../php/dbconnect.inc.php';
  4. $table='assosDepartementales';
  5. if ($new != "yes" ) {
  6.  $titreNum = "titre".$numPage;
  7.  $pageNum = "page".$numPage;
  8.  $sql = "SELECT $titreNum, $pageNum FROM $table WHERE departement='$numDep' AND ADouGL='AD'";
  9.  $req = mysql_query($sql) or die("<p>Erreur : votre page n'a pas pu être affichée. Contactez <a href='webmaster@planning-familial.org'>webmaster@planning-familial.org</a></p>" );
  10.  mysql_close();
  11.  while ($data = mysql_fetch_array($req)) {
  12.   $titre = stripslashes(htmlspecialchars($data[$titreNum]));
  13.   $texte = stripslashes(htmlVersAccolades($data[$pageNum]));
  14.  }
  15. }
  16. echo '
  17. <script type="text/javascript" src="../spip_barre.js"></script>
  18. <form method="post" action="?numPage='.$numPage.'&action=update" name="formulaire">
  19.  <h6>titre de la page '.$numPage.'</h6>
  20.  <input type="text" name="titre" size="40" maxlength="60" value="'.$titre.'"/>
  21.  <h6>texte de la page '.$numPage.'</h6>
  22.  <p>
  23.  <a href="javascript:barre_raccourci(\'{{\',\'}}\',document.formulaire.texte)" class=\'intertitre\' title="Transformer en intertitre">intertitre</a>
  24.  <a href="javascript:barre_raccourci(\'{\',\'}\',document.formulaire.texte)" class=\'gras\' title="Mettre en gras">gras</a>
  25.  <a href="javascript:apercu();" title="Aper&ccedil;u avant publication">aper&ccedil;u</a>
  26.  <a href="javascript:aide();"><img src="/pictos/aide.gif" alt="AIDE" title="Comment utiliser ces &eacute;l&eacute;ments ?" border="0" /></a>
  27.  </p>
  28.  <textarea cols="90" rows="30" name="texte">'.$texte.'</textarea>
  29.  <h5><input type="submit" value="Envoyer" class="boutonBleu"/></h5>
  30. </form>
  31. ';
  32. } else {
  33. include '../../../php/dbconnect.inc.php';
  34. $table='assosDepartementales';
  35. $titreNum = "titre".$numPage;
  36. $pageNum = "page".$numPage;
  37. $texte = accoladesVersHtml($texte);
  38. $sql = "UPDATE $table SET $titreNum='$titre', $pageNum='$texte' WHERE departement='$numDep' AND ADouGL='AD'";
  39. mysql_query($sql) or die("<p>Erreur : votre page n'a pas pu être mise à jour. Contactez <a href='webmaster@planning-familial.org'>webmaster@planning-familial.org</a></p>" );
  40. mysql_close();
  41. echo '<p>Votre page a bien été modifi&eacute;e, vous pouvez allez voir le <a href="/AssDep/index.php?departement='.$numDep.'&page='.$numPage.'" target="_blank">résultat</a> ou revenir au <a href="?">menu</a></p>';
  42. }
  43. ?>

mood
Publicité
Posté le 04-07-2006 à 15:49:05  profilanswer
 

n°1400393
Sve@r
Posté le 04-07-2006 à 16:12:48  profilanswer
 

loulipo a écrit :

Or je me suis aperçu tout d'un coup que cela ne fonctionnait plus...


Si t'as rien modifié dans ton script, alors cela vient de ton serveur.
Il est possible qu'ils soient passés en serveur "sécurisé" où les variables extèrieures à un script (comme venant d'un formulaire par exemple) ne sont plus accessible directement par leur nom.
Je m'explique
Avant, tu crééais un formulaire de ce style

Code :
  1. <FORM method="post" action="toto.php">
  2. Entrez votre nom: <INPUT type="text" name="nom"><BR>
  3. <INPUT type="submit" value="Envoyer">
  4. </FORM>


Et dans le script php, tu récupérais directement la variable "$nom" venant du "name=nom" du formulaire.
 
Cette méthode a été considérée dangereuse car imagine que "toto.php" fasse ce genre de test

Code :
  1. if ($nom == "machin" )
  2.     $ok=true;
  3. <...>
  4. if ($ok)
  5. {
  6.         // Accès autorisé
  7.         <...>
  8. }


 
Tu peux aisément te rendre compte que c'est une méthode de contrôle bien foireuse mais tout le monde n'est pas forcément pro. Et rien n'empêche d'appeler maintenant "toto.php?ok=true" !!!
 
Donc il a été recommandé de verrouiller le flag qui autorise un script à recevoir des variables venant directement depuis l'extèrieur. Et il est possible que ton serveur soit passé à "off".
 
Pour les formulaires, les variables sont maintenant stockées dans un tableau associatif portant le nom de la méthode. Donc si tu veux récupérer une variable "nom" passée par un formulaire en méthode "post", tu fais:
$var=$_POST["nom"]
Si ta variable vient d'un formulaire en méthode "get" ou simplement d'un paramètre URL (style "toto.php?nom=machinTruc" ), tu fais:
var=$_GET["nom"]
Si ta variable doit arriver indifféremment via une méthode "post" ou "get", tu fais:
$var=$_REQUEST["nom"]
 
En rajoutant en fin de script un petit "phpinfo()", tu verras mieux s'il s'agit bien de cela. Si c'est le cas, toutes les variables dites "globales" auront disparues et remplacées par des tableaux (ex: $REMOTE_ADDR sera devenu $_SERVER["REMOTE_ADDR"]) etc...


Message édité par Sve@r le 04-07-2006 à 16:21:02

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1400498
loulipo
Posté le 04-07-2006 à 17:04:18  profilanswer
 

Bon à savoir merci ! Je prends note. Je vais me plonger là dedans.  
Le soucis c'est que je suis pas sûre de pas y avoir touché avant de m'en apercevoir ! Et ce qui me chiffonne c'est que j'ai un autre formulaire du même style qui lui fonctionne. Celui-là permet aux personnes de rentrer leurs coordonnées. Les données, comme pour l'autre arrivent sur la BDD puis sur le site...
Ca me dépasse...


Message édité par loulipo le 04-07-2006 à 17:04:48
n°1400521
loulipo
Posté le 04-07-2006 à 17:12:11  profilanswer
 

Oulah en fait je crois que tu as complètement raison ! Les deux formulaires sont bien différents ! Et celui qui fonctionne utilise  la méthode "post"... Je me mets là dedans demain matin ! Merci beaucoup !

n°1400598
Sve@r
Posté le 04-07-2006 à 18:14:04  profilanswer
 

loulipo a écrit :

...et celui qui fonctionne utilise la méthode "post"...


Ce n'est pas la méthode utilisée par le formulaire qui compte, c'est la façon de récupérer les valeurs associées qux champs
Avec un formulaire en méthode "post", tu peux récupérer ta valeur par:
$var=$_POST["nom_du_champ"] ou bien $var=$_REQUEST["nom_du_champ"]
 
Avec un formulaire en méthode "get" (ou bien un script appelé avec des valeurs tapées dans l'URL), tu peux récupérer ta valeur par:
$var=$_GET["nom_du_champ"] ou bien $var=$_REQUEST["nom_du_champ"]


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1400847
loulipo
Posté le 05-07-2006 à 09:19:28  profilanswer
 

Ok. En tout cas je me suis renseignée auprès de notre hébergeur et le serveur est bien "sécurisé". Ils m'ont demandé de leur envoyer le script pour vérifier sa compatibilité avec la config... Merci beaucoup en tout cas ! Tes renseignements me permettent d'avancer !

n°1402249
Sve@r
Posté le 06-07-2006 à 18:52:13  profilanswer
 

loulipo a écrit :

Ok. En tout cas je me suis renseignée auprès de notre hébergeur et le serveur est bien "sécurisé". Ils m'ont demandé de leur envoyer le script pour vérifier sa compatibilité avec la config...


Ce n'était pas la peine. Il te suffisait de faire un petit formulaire tel que je l'ai écrit dans mon premier post associé à un petit script "toto.php()" qui fait juste des echo de "$nom", "$_POST["nom"]", "$_GET["nom"]" et "$_REQUEST["nom"]".
Tu verras bien quels sont les echo que tu récupères...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Envoi données formulaire vers BDD ne fonctionne pas...

 

Sujets relatifs
HTML : faire un lien direct vers une page précise d'un PDF[résolu] Passage de variable javascript vers flash avec iframe
Problème envoi mailImporter etat access vers .net
souci avec mon formulaireonChange fonctionne sous Firefox mais pas IE...
Forcé l'alignement d'une réponse d'un formulaire[HTML / PHP] Problème de formulaire entre 2 pages
[résolu] interdire F5 d'une page pour éviter l'envoi de données 
Plus de sujets relatifs à : Envoi données formulaire vers BDD ne fonctionne pas...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR